CN114625318A - 应用于固态硬盘的数据写入方法、装置、设备 - Google Patents

应用于固态硬盘的数据写入方法、装置、设备 Download PDF

Info

Publication number
CN114625318A
CN114625318A CN202210186790.1A CN202210186790A CN114625318A CN 114625318 A CN114625318 A CN 114625318A CN 202210186790 A CN202210186790 A CN 202210186790A CN 114625318 A CN114625318 A CN 114625318A
Authority
CN
China
Prior art keywords
written
data
storage space
data blocks
blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210186790.1A
Other languages
English (en)
Inventor
郑宁
王晋强
蔡雪梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ruizhe Hangzhou Technology Co ltd
Original Assignee
Ruizhe Hangzhou Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ruizhe Hangzhou Technology Co ltd filed Critical Ruizhe Hangzhou Technology Co ltd
Priority to CN202210186790.1A priority Critical patent/CN114625318A/zh
Publication of CN114625318A publication Critical patent/CN114625318A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开提供的一种应用于固态硬盘的数据写入方法、装置、设备,涉及计算机存储技术,包括:当固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,为待写入数据块分配物理存储空间;物理存储空间包括至少一个第一存储空间,能够被快速读取的数据块位于同一个第一存储空间中;根据各待写入数据块所占用的存储空间,以及分配的物理存储空间,对各待写入数据块进行重排列;根据重排列后各待写入数据块的顺序,将各待写入数据块写入物理存储空间中。可通过重排列使得满足快速读取的数据量条件的待写入数据块同时满足快速读取的物理存储位置条件,进而可以在数据读取时,提高满足触发快速读取功能的数据的概率,进而提高数据的读取效率。

Description

应用于固态硬盘的数据写入方法、装置、设备
技术领域
本公开涉及计算机存储技术,尤其涉及一种应用于固态硬盘的数据写入方法、装置、设备。
背景技术
固态硬盘(solid state drive,SSD)又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。NAND闪存为当前SSD的主要存储介质。
现有技术中,SSD中的NAND闪存,一般都提供了快速读取(snap read)的功能。快速读取的主要功能是当读请求对应的数据在数据量和物理存储位置上满足一定条件时,可以通过专用的读取通道进行快速读取,从而提供比一般读通道更好的性能。其中,SSD写入的数据有多种来源,例如数据库应用、文件***元数据等等,因而对于SSD的写入操作,往往具有多种不同的特性,如数据块可大可小、逻辑地址可顺序可随机等等。
但是,在现有的SSD写入方法下,读请求对应的数据满足快速读取功能所需条件的概率较低,导致数据的读取效率低。
发明内容
本公开提供了一种应用于固态硬盘的数据写入方法、装置、设备,以解决现有的写入方法下读请求对应的数据满足快速读取功能的概率较低,导致数据的读取效率低的问题。
根据本申请第一方面,提供了一种应用于固态硬盘的数据写入方法,包括:
当所述固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,为所述待写入数据块分配物理存储空间;所述物理存储空间包括至少一个第一存储空间,能够被快速读取的数据块位于同一个第一存储空间中;
根据各所述待写入数据块所占用的存储空间,以及分配的所述物理存储空间,对各所述待写入数据块进行重排列;
根据重排列后各待写入数据块的顺序,将各所述待写入数据块写入所述物理存储空间中。
根据本申请第二方面,提供了一种应用于固态硬盘的数据写入装置,包括:
分配单元,用于当所述固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,为所述待写入数据块分配物理存储空间;所述物理存储空间包括至少一个第一存储空间,能够被快速读取的数据块位于同一个第一存储空间中;
重排列单元,用于根据各所述待写入数据块所占用的存储空间,以及分配的所述物理存储空间,对各所述待写入数据块进行重排列;
写入单元,用于根据重排列后各待写入数据块的顺序,将各所述待写入数据块写入所述物理存储空间中。
根据本申请第三方面,提供了一种电子设备,包括存储器和处理器;其中,
所述存储器,用于存储计算机程序;
所述处理器,用于读取所述存储器存储的计算机程序,并根据所述存储器中的计算机程序执行如第一方面所述的应用于固态硬盘的数据写入方法。
根据本申请第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面所述的应用于固态硬盘的数据写入方法。
根据本申请第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现如第一方面所述的应用于固态硬盘的数据写入方法。
本公开提供的应用于固态硬盘的数据写入方法、装置、设备,包括:当固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,为待写入数据块分配物理存储空间;物理存储空间包括至少一个第一存储空间,能够被快速读取的数据块位于同一个第一存储空间中;根据各待写入数据块所占用的存储空间,以及分配的物理存储空间,对各待写入数据块进行重排列;根据重排列后各待写入数据块的顺序,将各待写入数据块写入物理存储空间中。本方案提供的应用于固态硬盘的数据写入方法、装置、设备中,可以先对各待写入数据块进行重排列,后将重排列后的各待写入数据块写入物理存储空间中。可以通过重排列使得满足快速读取的数据量条件的待写入数据块,同时满足快速读取的物理存储位置条件,进而可以在数据读取时,提高满足触发快速读取功能的数据的概率,进而提高数据的读取效率。
附图说明
图1为本申请一示例性实施例示出的应用于固态硬盘的数据写入方法的流程示意图;
图2为本申请一示例性实施例示出的待写入数据块重排列方法的示意图;
图3为本申请另一示例性实施例示出的应用于固态硬盘的数据写入方法的流程示意图;
图4为本申请一示例性实施例示出的有效数据中多个数据子块的确定方法的示意图;
图5为本申请一示例性实施例示出的填充无效数据的示意图;
图6为本申请一示例性实施例示出的应用于固态硬盘的数据写入装置的结构图;
图7为本申请一示例性实施例示出的电子设备的结构图。
具体实施方式
固态硬盘(solid state drive,SSD)又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。NAND闪存为当前SSD的主要存储介质。具体的,一个NAND闪存有若干个Die(或者LUN)连接通道,每个Die有若干个Plane(常见的1、2、4个),每个Plane有若干个Block,每个Block有若干个Page,每个Page对应一个Wordline,每个Wordline有成千上万个存储单元组成。现有技术中,SSD中的NAND闪存,一般都提供了快速读取(snap read)的功能。其中,SSD写入的数据有多种来源,例如数据库应用、文件***元数据等等,因而对于SSD的写入操作,往往具有多种不同的特性,如数据块可大可小、逻辑地址可顺序可随机等等。
快速读取的主要功能是当读请求对应的数据在数据量和物理存储位置上满足一定条件时,可以通过专用的读取通道进行快速读取,从而提供比一般读通道更好的性能。
但是,现有的写入方法下,读请求对应的数据满足快速读取功能所需条件的概率较低,导致数据的读取效率低。
为了解决上述技术问题,本公开提供的方案,可以先对各待写入数据块进行重排列,后将重排列后的各待写入数据块写入物理存储空间中。可以通过重排列使得满足快速读取的数据量条件的待写入数据块,同时满足快速读取的物理存储位置条件。进而可以在数据读取时,提高满足触发快速读取功能的数据的概率,进而提高数据的读取效率。
图1为本申请一示例性实施例示出的应用于固态硬盘的数据写入方法的流程示意图。
如图1所示,本实施例提供的应用于固态硬盘的数据写入方法包括:
步骤101,当固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,为待写入数据块分配物理存储空间;物理存储空间包括至少一个第一存储空间,能够被快速读取的数据块位于同一个第一存储空间中。
其中,本公开提供的方案可以由固态硬盘来执行。当固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,固态硬盘可以为待写入数据块分配物理存储空间,其中分配的物理存储空间包括至少一个第一存储空间。
其中,固态硬盘(solid state drive,SSD)又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。
向固态硬盘中写入数据时,通常固态硬盘会将待写入数据的数据块进行缓存,并在缓存的待写入数据块达到一定数量后,将其一起写入固态硬盘的物理空间中。
其中,可以在缓存的待写入数据块达到预设的阈值时,将缓存的各待写入数据块写入硬盘的物理空间,该预设的阈值为根据实际情况预先设置的存储空间阈值,比如可以为32KB。
将待写入数据块写入固态硬盘时,可以为这些待写入数据块分配物理存储空间。具体在分配时,可以按照固态硬盘的存储空间管理粒度进行分配,比如,可以分配若干个第一存储空间,该第一存储空间是指固态硬盘的管理粒度,例如可以是一个page。
其中,固态硬盘具有快速读取功能,固态硬盘中的NAND闪存可以提供该功能。
快速读取功能是指当读请求对应的数据在数据量和物理存储位置上满足一定条件时,可以通过专用的读取通道进行快速读取,从而提供比一般读通道更好的性能。其中,满足快速读取功能的数据的数据量可以为4KB、8KB等;且数据块位于同一个第一存储空间时,才能够被快速读取。
例如,存在一个大小为8KB的数据块,位于同一个第一存储空间,则该数据块能够被快速读取;存在另一个大小为8KB的数据块,该数据块跨越了两个第一存储空间,则该数据块不能够被快速读取。
其中,固态硬盘为待写入数据块分配的物理存储空间可以为32KB或者64KB。
步骤102,根据各待写入数据块所占用的存储空间,以及分配的物理存储空间,对各待写入数据块进行重排列。
具体的,将各待写入数据块存储到物理存储空间之前,可以对其进行重排列,从而使得尽可能多的、满足快速读取功能的数据量条件的待写入数据块,在写入固态硬盘时的物理存储位置也满足快速读取功能。这样在读取该数据块的时候,可以利用快速读取功能,进而提高读取效率。
进一步的,可以通过重排列,使得尽可能多的待写入数据块位于一个第一存储空间中,而不是跨越多个第一存储空间,从而使这些待写入数据块能够满足快速读取条件。
各待写入数据块所占用的存储空间比如可以为4KB或者8KB等。
其中,分配的物理存储空间可以为32KB或者64KB。
可以获取各待写入数据块所占用的存储空间,以及分配的物理存储空间,分配的物理存储空间可以包括至少一个第一存储空间,而每个第一存储空间的大小是固定的,因此,可以根据各待写入数据块所占用的存储空间,将若干个占用存储空间总和与第一存储空间大小相同的待写入数据块进行重排列,再将剩余的待写入数据块中,存储空间总和与第一存储空间大小相同的待写入数据块进行重排列,以此类推。使得重排列后的各待写入数据块能够被存储到同一个第一存储空间,后续需要读取这些数据块时,则可以通过快速读取的方式进行读取。
具体的,若能够被快速读取的待写入数据块的大小有一定的要求,为了使更多的满足该大小条件的待写入数据块被存储时不跨越多个第一存储空间,还可以获取各待写入数据块所占用的存储空间,并确定其中存储空间满足快速读取条件中的数据量条件的数据块。
在重排列时,可以优先考虑将这些数据块排列在与一个第一存储空间对应的位置上,而对于存储空间不满足快速读取条件中的数据量条件的数据块,则可以用来填充空余的位置。
比如,一个第一存储空间大小为16KB,共分配了2个第一存储空间,用来存储已缓存的待写入数据块。待写入数据块的大小分别为8KB、5KB、4KB、4KB、3KB、8KB。若满足快速读取功能的数据的数据量为4KB和8KB,则所有待写入数据块都有可能被快速读取。可以先确定这些数据块的位置,使其位于一个独立的第一存储空间中。例如可以将8KB、8KB的数据块排在与第一存储空间对应的位置,将4KB、4KB的数据块排在与另一个第一存储空间对应的位置。由于一个存储空间的尺寸为16KB,那么第一个存储空间对应的位置被排满,而另一个存储空间还有剩余位置,因此,将5KB、3KB的数据块排在另一个存储空间对应的位置中,具体可以排在4KB、4KB的数据块之后。
如图2所示,固态硬盘的缓存单元中缓存的待写入数据块依次为4KB、8KB、8KB、8KB、4KB,共32KB,若固态硬盘为该32KB数据分配的物理空间为两个完整的16KB空间,则重排列之前,该32KB数据在物理地址空间中的分布如图2上部所示,此时中间的8KB数据无法采用快速读取方式;经过重排列后,32KB数据在物理空间中的分布可以如图2下部所示,此时所有待写入数据块的读均可采用快速读取方式。
步骤103,根据重排列后各待写入数据块的顺序,将各待写入数据块写入物理存储空间中。
具体的,固态硬盘可以根据重排列后各待写入数据块的顺序,将各待写入数据块写入固态硬盘中的物理存储空间中。
例如,如图2所示,经过重排列后,各待写入数据块的顺序如图2下部所示,按照此顺序,将各待写入数据块写入固态硬盘中的物理存储空间中。通过这种实现方式,当读取这32KB中的各数据块时,这32KB中的各数据块都满足快速读取的条件,都可以被快速读取。
而如果在数据写入时不对各待写入数据块进行重排列,如图2上部所示的跨两个16KB的8KB数据块,当读取该8KB数据块时,因其不满足快速读取的条件,将不能被快速读取。
因此,通过本方案提供的方法,可以提高满足触发快速读取功能的数据的概率,进而提高数据的读取效率。
本公开提供的应用于固态硬盘的数据写入方法,包括:当固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,为待写入数据块分配物理存储空间;物理存储空间包括至少一个第一存储空间,能够被快速读取的数据块位于同一个第一存储空间中;根据各待写入数据块所占用的存储空间,以及分配的物理存储空间,对各待写入数据块进行重排列;根据重排列后各待写入数据块的顺序,将各待写入数据块写入物理存储空间中。本公开所提供的方案,可以先对各待写入数据块进行重排列,后将重排列后的各待写入数据块写入物理存储空间中。可以通过重排列使得满足快速读取的数据量条件的待写入数据块,同时满足快速读取的物理存储位置条件,进而可以在数据读取时,提高满足触发快速读取功能的数据的概率,进而提高数据的读取效率。
图3为本申请另一示例性实施例示出的应用于固态硬盘的数据写入方法的流程示意图。
如图3所示,本实施例提供的应用于固态硬盘的数据写入方法包括:
步骤301,获取用于对待写入数据块进行写入操作的写入请求。
具体的,固态硬盘可以获取用于对待写入数据块进行写入操作的写入请求。
其中,写入请求可以有两种生成方式,一种可以为主机端生成的;另一种可以为固态硬盘在对数据进行迁移时生成的。
可选的,固态硬盘可以获取主机端发送的用于对待写入数据块进行写入操作的写入请求。比如,用户可以连接主机端与固态硬盘,并操作主机端,向固态硬盘中写入数据。例如可以将主机端中存储的文件导入到固态硬盘中,进而向其发送写入请求。
另一种情况,固态硬盘内部进行数据迁移时,也会生成进行写入操作的写入请求,比如固态硬盘内进行如垃圾回收、磨损均衡等操作时,固态硬盘内设置的***会生成写入请求。
这种实现方式中,固态硬盘还可以获取在对数据进行迁移时生成的用于对待写入数据块进行写入操作的写入请求。
步骤302,根据写入请求缓存待写入数据块。
具体的,固态硬盘可以根据写入请求,对待写入数据块进行缓存。
可选的,若获取的写入请求为主机端发送的,且固态硬盘具备透明压缩功能,则根据写入请求,对待写入数据块进行透明压缩;
其中,透明压缩指压缩对用户透明。
缓存压缩后的待写入数据块。
例如,一个占用8KB存储空间的待写入数据,经过透明压缩后为5KB,则固态硬盘的缓存单元缓存的数据块为5KB的压缩后的待写入数据块。
具体的,若固态硬盘获取的写入请求为主机端发送的,且固态硬盘具备透明压缩功能,则固态硬盘会首先根据写入请求,对待写入数据块进行透明压缩;然后对压缩后的待写入数据块进行缓存。
可选的,若获取的写入请求为固态硬盘在对数据进行迁移时生成的,则根据写入请求,获取数据迁移前的物理存储空间的物理地址;
具体的,固态硬盘会记录固态硬盘中各个物理空间的使用情况,并可以根据各个物理空间的使用情况生成用于对数据进行固态硬盘内的迁移的写入请求。其中,写入请求中可以包括数据迁移前的物理存储空间的物理地址;固态硬盘可以根据写入请求获取该物理地址。
根据数据迁移前的物理存储空间、以及地址映射表,确定需要迁移的有效数据,以及有效数据对应的逻辑地址;地址映射表中记录了有效数据的逻辑地址与物理地址之间的对应关系;
其中,有效数据可以指迁移前的物理存储空间中保存的没有被删除、也没有被更改的数据。
具体的,固态硬盘可以根据获取的迁移前的物理存储空间的物理地址,查询地址映射表,得到与迁移前的物理存储空间的物理地址对应的当前的逻辑地址;其中,当前的逻辑地址与当前迁移前的物理存储空间保存的数据对应。可以根据迁移前的物理存储空间,获取数据上次写入时的逻辑地址。然后比对上次写入时的逻辑地址与当前的逻辑地址是否一致;若比对结果一致,则确定迁移前的物理存储空间中存储的数据为需要迁移的有效数据。并确定当前的逻辑地址为有效数据对应的逻辑地址。
根据有效数据的逻辑地址、比特图,确定有效数据中的多个第一数据子块,并对多个第一数据子块进行缓存;比特图中记录了有效数据的逻辑地址与标签的对应关系;其中,标签包括第一标签和第二标签。
其中,一个数据子块的存储空间可以为4KB。一个第一数据子块可以包括一个或多个数据子块。
其中,第一标签可以表示为1;第二标签可以表示为0。
具体的,比特图可以用于表示待写入数据块在物理地址上的连续性。当固态硬盘在对数据进行内部迁移时(如垃圾回收、磨损均衡等操作),可以结合比特图进行迁移,以最大化数据的快速读取概率。
具体的,每个数据子块的逻辑地址对应一个标签,对于一次新的写入的首个数据子块的逻辑地址,其首个数据子块的逻辑地址对应的标签可以为第一标签,可以表示为1,后续该写入请求中包含的数据子块的逻辑地址对应的标签可以为第二标签,可以表示为0。例如,对于一个16KB的写入请求,写入完成后在比特图中其所对应的标签序列可以为1000;若对某个原始数据块内的数据子块进行了更新,则更新的数据子块部分按照前述准则对比特图进行更改,且在更新的数据子块部分之后若在原始数据块内仍存在有效数据,则更新的数据子块部分之后的首个数据子块的逻辑地址对应的标签也置1。
可选的,根据有效数据的逻辑地址、比特图,确定与逻辑地址对应的各标签;标签中包括第一标签和第二标签;
若第一标签后连续的是至少一个第二标签,则确定第一标签与连续的至少一个第二标签对应的逻辑地址所对应的数据,为一个第一数据子块;
若第一标签后连续的是另一个第一标签,则确定第一标签对应的逻辑地址所对应的数据为一个第一数据子块。
例如,如图4所示,对于一个16KB的数据块(LBA0-LBA3),其原始的标签序列为1000,若对LBA1进行了更新,则更新后的标签序列为1110。则该数据块包括两个第一数据子块,其中,LBA0中的数据为一个第一数据子块;LBA2-LBA3中的数据为一个第一数据子块。
具体的,固态硬盘可以将每个第一数据子块作为一个待写入数据块,并对多个第一数据子块进行缓存。
具体的,这种可以将LBA2-LBA3中的数据作为一个待写入数据块进行缓存的方式,不必将LBA2和LBA3中的数据分成两个待写入数据块进行缓存,这样可以方便之后进行快速读取。
步骤303,当固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,为待写入数据块分配物理存储空间;物理存储空间包括至少一个第一存储空间,能够被快速读取的数据块位于同一个第一存储空间中。
具体的,步骤303的原理、实现方式与步骤101类似,不再赘述。
步骤304,若待写入数据块所占用的存储空间满足快速读取条件;根据各待写入数据块所占用的存储空间,确定多个连续待写入数据块,多个连续待写入数据块的存储空间总和小于或等于一个第一存储空间的空间,且多个连续待写入数据块的存储空间总和与一个第一存储空间的空间之间的差值小于多个连续待写入数据块以外的任一个其他待写入数据块所占用的存储空间。
具体的,将各待写入数据块存储到物理存储空间之前,可以对其进行重排列,从而使得尽可能多的、满足快速读取功能的数据量条件的待写入数据块,在写入固态硬盘时的物理存储位置也满足快速读取功能。这样在读取该数据块的时候,可以利用快速读取功能,进而提高读取效率。
进一步的,可以通过重排列,使得尽可能多的待写入数据块位于一个第一存储空间中,而不是跨越多个第一存储空间,从而使这些待写入数据块能够满足快速读取条件。
步骤305,在剩余的各其他待写入数据块中继续确定多个连续待写入数据块,并将后确定的多个连续待写入数据块排在前一次确定的多个连续待写入数据块之后,直到对各待写入数据块均进行重排列完毕为止。
可选的,固态硬盘具备透明压缩功能;若前一次确定的多个连续待写入数据块所占用的存储空间总和小于一个第一存储空间的空间,且所占用的存储空间总和与一个第一存储空间的空间之间相差的空间大小小于预设阈值,则在多个连续待写入数据块之后填充无效数据,多个连续待写入数据块占用的空间与无效数据所占用的空间总和等于一个第一存储空间的空间;
其中,预设阈值为根据实际情况预先设置的阈值。比如,预设阈值可以为500B。
其中,填充的无效数据,比如可以全部填充0。
具体的,对于带透明压缩功能的固态硬盘,当某个第一存储空间的剩余空间较小且不足以填充一个满足快速读取大小条件的待写入数据块时,可以在相应的剩余空间填充无效数据,而使用新的第一存储空间存储满足快速读取大小条件的数据块。如图5所示,前一个16KB的物理空间已经接近填满(剩余300B空间),此时若预设阈值为500B,则一个压缩后为3KB的数据块将会填入下一个16KB,而前一个16KB的剩余空间填充300B的无效数据(例如全0数据);若某个待写入数据块压缩后为280B,则仍然可以填入300B的剩余空间。
将后确定的多个连续待写入数据块排在前一次确定的多个连续待写入数据块的无效数据之后。
步骤306,根据重排列后各待写入数据块的顺序,将各待写入数据块写入物理存储空间中。
具体的,步骤306执行完之后,执行步骤307和步骤308。
具体的,步骤306与步骤103的原理、实现方式类似,不再赘述。
步骤307,根据各待写入数据块写入的物理存储空间,以及待写入数据块的逻辑地址,更新地址映射表;其中,地址映射表中记录了各待写入数据块的逻辑地址与物理存储空间的物理地址之间的对应关系。
进一步的,若物理存储空间中保存的数据进行了删除或者更新,则地址映射表会相应的进行更新。
步骤308,根据各待写入数据块的逻辑地址,更新比特图;其中,比特图中记录了各待写入数据块的逻辑地址与标签的对应关系;其中,标签包括第一标签和第二标签;待写入数据块中包括多个数据子块,其中,第一个数据子块与第一标签对应,其余数据子块与第二标签对应。
其中,一个数据子块的存储空间可以为4KB。
其中,第一标签可以表示为1;第二标签可以表示为0。
具体的,比特图可以用于表示待写入数据块在物理地址上的连续性。当固态硬盘在对数据进行内部迁移时(如垃圾回收、磨损均衡等操作),可以结合比特图,达到快速迁移的目的。
图6为本申请一示例性实施例示出的应用于固态硬盘的数据写入装置的结构图。
如图6所示,本申请提供的应用于固态硬盘的数据写入装置600,包括:
分配单元610,用于当固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,为待写入数据块分配物理存储空间;物理存储空间包括至少一个第一存储空间,能够被快速读取的数据块位于同一个第一存储空间中;
重排列单元620,用于根据各待写入数据块所占用的存储空间,以及分配的物理存储空间,对各待写入数据块进行重排列;
写入单元630,用于根据重排列后各待写入数据块的顺序,将各待写入数据块写入物理存储空间中。
若待写入数据块所占用的存储空间满足快速读取条件;重排列单元620,具体用于根据各待写入数据块所占用的存储空间,确定多个连续待写入数据块,多个连续待写入数据块的存储空间总和小于或等于一个第一存储空间的空间,且多个连续待写入数据块的存储空间总和与一个第一存储空间的空间之间的差值小于多个连续待写入数据块以外的任一个其他待写入数据块所占用的存储空间;在剩余的各其他待写入数据块中继续确定多个连续待写入数据块,并将后确定的多个连续待写入数据块排在前一次确定的多个连续待写入数据块之后,直到对各待写入数据块均进行重排列完毕为止。
固态硬盘具备透明压缩功能;若前一次确定的多个连续待写入数据块所占用的存储空间总和小于一个第一存储空间的空间,且所占用的存储空间总和与一个第一存储空间的空间之间相差的空间大小小于预设阈值,则重排列单元620,具体用于在多个连续待写入数据块之后填充无效数据,多个连续待写入数据块占用的空间与无效数据所占用的空间总和等于一个第一存储空间的空间;将后确定的多个连续待写入数据块排在前一次确定的多个连续待写入数据块的无效数据之后。
本申请提供的应用于固态硬盘的数据写入装置600,还包括:
地址映射表更新单元640,用于根据各待写入数据块写入的物理存储空间,以及待写入数据块的逻辑地址,更新地址映射表;其中,地址映射表中记录了各待写入数据块的逻辑地址与物理存储空间的物理地址之间的对应关系;
比特图更新单元650,用于根据各待写入数据块的逻辑地址,更新比特图;其中,比特图中记录了各待写入数据块的逻辑地址与标签的对应关系;其中,标签包括第一标签和第二标签;待写入数据块中包括多个数据子块,其中,第一个数据子块与第一标签对应,其余数据子块与第二标签对应;
获取单元660,用于获取用于对待写入数据块进行写入操作的写入请求;
缓存单元670,用于根据写入请求缓存待写入数据块。
获取单元660,具体用于获取主机端发送的用于对待写入数据块进行写入操作的写入请求;
和/或,获取固态硬盘在对数据进行迁移时生成的用于对待写入数据块进行写入操作的写入请求。
若获取的写入请求为主机端发送的,且固态硬盘具备透明压缩功能,则缓存单元670,具体用于根据写入请求,对待写入数据块进行透明压缩;
缓存压缩后的待写入数据块。
若获取的写入请求为固态硬盘在对数据进行迁移时生成的,则缓存单元670,具体用于根据写入请求,获取数据迁移前的物理存储空间的物理地址;
根据数据迁移前的物理存储空间、以及地址映射表,确定需要迁移的有效数据,以及有效数据对应的逻辑地址;地址映射表中记录了有效数据的逻辑地址与物理地址之间的对应关系;
根据有效数据的逻辑地址、比特图,确定有效数据中的多个第一数据子块,并对多个第一数据子块进行缓存;比特图中记录了有效数据的逻辑地址与标签的对应关系;其中,标签包括第一标签和第二标签。
缓存单元670,具体用于根据有效数据的逻辑地址、比特图,确定与逻辑地址对应的各标签;标签中包括第一标签和第二标签;
若第一标签后连续的是至少一个第二标签,则确定第一标签与连续的至少一个第二标签对应的逻辑地址所对应的数据,为一个第一数据子块;
若第一标签后连续的是另一个第一标签,则确定第一标签对应的逻辑地址所对应的数据为一个第一数据子块。
图7为本申请一示例性实施例示出的电子设备的结构图。
如图7所示,本实施例提供的电子设备包括:
存储器701;
处理器702;以及
计算机程序;
其中,计算机程序存储在存储器701中,并配置为由处理器702执行以实现如上的任一种应用于固态硬盘的数据写入方法。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现如上的任一种应用于固态硬盘的数据写入方法。
本实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现上述任一种应用于固态硬盘的数据写入方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (14)

1.一种应用于固态硬盘的数据写入方法,其特征在于,所述方法包括:
当所述固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,为所述待写入数据块分配物理存储空间;所述物理存储空间包括至少一个第一存储空间,能够被快速读取的数据块位于同一个第一存储空间中;
根据各所述待写入数据块所占用的存储空间,以及分配的所述物理存储空间,对各所述待写入数据块进行重排列;
根据重排列后各待写入数据块的顺序,将各所述待写入数据块写入所述物理存储空间中。
2.根据权利要求1所述的方法,其特征在于,若所述待写入数据块所占用的存储空间满足快速读取条件;
所述根据各所述待写入数据块所占用的存储空间,以及分配的所述物理存储空间,对各所述待写入数据块进行重排列,包括:
根据各所述待写入数据块所占用的存储空间,确定多个连续待写入数据块,多个连续待写入数据块的存储空间总和小于或等于一个第一存储空间的空间,且多个连续待写入数据块的存储空间总和与一个第一存储空间的空间之间的差值小于多个连续待写入数据块以外的任一个其他待写入数据块所占用的存储空间;
在剩余的各其他待写入数据块中继续确定多个连续待写入数据块,并将后确定的多个连续待写入数据块排在前一次确定的多个连续待写入数据块之后,直到对各待写入数据块均进行重排列完毕为止。
3.根据权利要求2所述的方法,其特征在于,所述固态硬盘具备透明压缩功能;若前一次确定的多个连续待写入数据块所占用的存储空间总和小于一个第一存储空间的空间,且所占用的存储空间总和与一个第一存储空间的空间之间相差的空间大小小于预设阈值,则所述将后确定的多个连续待写入数据块排在前一次确定的多个连续待写入数据块之后,包括:
在多个连续待写入数据块之后填充无效数据,多个连续待写入数据块占用的空间与无效数据所占用的空间总和等于一个第一存储空间的空间;
将后确定的多个连续待写入数据块排在前一次确定的多个连续待写入数据块的无效数据之后。
4.根据权利要求1所述的方法,其特征在于,所述将各所述待写入数据块写入所述物理存储空间中之后,还包括:
根据各所述待写入数据块写入的物理存储空间,以及所述待写入数据块的逻辑地址,更新地址映射表;其中,所述地址映射表中记录了各所述待写入数据块的逻辑地址与物理存储空间的物理地址之间的对应关系。
5.根据权利要求1所述的方法,其特征在于,所述将各所述待写入数据块写入所述物理存储空间中之后,还包括:
根据各所述待写入数据块的逻辑地址,更新比特图;其中,所述比特图中记录了各所述待写入数据块的逻辑地址与标签的对应关系;其中,所述标签包括第一标签和第二标签;所述待写入数据块中包括多个数据子块,其中,第一个数据子块与所述第一标签对应,其余数据子块与所述第二标签对应。
6.根据权利要求1所述的方法,其特征在于,还包括:
获取用于对所述待写入数据块进行写入操作的写入请求;
根据所述写入请求缓存所述待写入数据块。
7.根据权利要求6所述的方法,其特征在于,所述获取用于对所述待写入数据块进行写入操作的写入请求,包括:
获取主机端发送的用于对所述待写入数据块进行写入操作的写入请求;
和/或,获取所述固态硬盘在对数据进行迁移时生成的用于对所述待写入数据块进行写入操作的写入请求。
8.根据权利要求6或7任一项所述的方法,其特征在于,若获取的写入请求为主机端发送的,且所述固态硬盘具备透明压缩功能,则所述根据所述写入请求缓存所述待写入数据块,包括:
根据所述写入请求,对所述待写入数据块进行透明压缩;
缓存压缩后的待写入数据块。
9.根据权利要求6或7任一项所述的方法,其特征在于,若获取的写入请求为所述固态硬盘在对数据进行迁移时生成的,则所述根据所述写入请求缓存所述待写入数据块,包括:
根据所述写入请求,获取数据迁移前的物理存储空间的物理地址;
根据所述数据迁移前的物理存储空间、以及地址映射表,确定需要迁移的有效数据,以及所述有效数据对应的逻辑地址;所述地址映射表中记录了所述有效数据的逻辑地址与物理地址之间的对应关系;
根据所述有效数据的逻辑地址、比特图,确定所述有效数据中的多个第一数据子块,并对多个所述第一数据子块进行缓存;所述比特图中记录了所述有效数据的逻辑地址与标签的对应关系;其中,所述标签包括第一标签和第二标签。
10.根据权利要求9所述的方法,其特征在于,所述根据所述有效数据的逻辑地址、比特图,确定所述有效数据中的多个第一数据子块,包括:
根据所述有效数据的逻辑地址、比特图,确定与所述逻辑地址对应的各标签;所述标签中包括第一标签和第二标签;
若第一标签后连续的是至少一个第二标签,则确定所述第一标签与连续的至少一个第二标签对应的逻辑地址所对应的数据,为一个第一数据子块;
若第一标签后连续的是另一个第一标签,则确定所述第一标签对应的逻辑地址所对应的数据为一个第一数据子块。
11.一种应用于固态硬盘的数据写入装置,其特征在于,所述装置包括:
分配单元,用于当所述固态硬盘中缓存的待写入数据块所占用的存储空间达到预设的阈值时,为所述待写入数据块分配物理存储空间;所述物理存储空间包括至少一个第一存储空间,能够被快速读取的数据块位于同一个第一存储空间中;
重排列单元,用于根据各所述待写入数据块所占用的存储空间,以及分配的所述物理存储空间,对各所述待写入数据块进行重排列;
写入单元,用于根据重排列后各待写入数据块的顺序,将各所述待写入数据块写入所述物理存储空间中。
12.一种电子设备,其特征在于,包括存储器和处理器;其中,
所述存储器,用于存储计算机程序;
所述处理器,用于读取所述存储器存储的计算机程序,并根据所述存储器中的计算机程序执行上述权利要求1-10任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述权利要求1-10任一项所述的方法。
14.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时,实现上述权利要求1-10任一项所述的方法。
CN202210186790.1A 2022-02-28 2022-02-28 应用于固态硬盘的数据写入方法、装置、设备 Pending CN114625318A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210186790.1A CN114625318A (zh) 2022-02-28 2022-02-28 应用于固态硬盘的数据写入方法、装置、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210186790.1A CN114625318A (zh) 2022-02-28 2022-02-28 应用于固态硬盘的数据写入方法、装置、设备

Publications (1)

Publication Number Publication Date
CN114625318A true CN114625318A (zh) 2022-06-14

Family

ID=81900478

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210186790.1A Pending CN114625318A (zh) 2022-02-28 2022-02-28 应用于固态硬盘的数据写入方法、装置、设备

Country Status (1)

Country Link
CN (1) CN114625318A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737064A (zh) * 2023-03-29 2023-09-12 深圳市领德创科技有限公司 一种固态硬盘的数据管理方法和***

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737064A (zh) * 2023-03-29 2023-09-12 深圳市领德创科技有限公司 一种固态硬盘的数据管理方法和***
CN116737064B (zh) * 2023-03-29 2024-04-05 深圳市领德创科技有限公司 一种固态硬盘的数据管理方法和***

Similar Documents

Publication Publication Date Title
US9229876B2 (en) Method and system for dynamic compression of address tables in a memory
KR102042643B1 (ko) 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리
JP6553566B2 (ja) メモリシステムおよび制御方法
CN109690681B (zh) 处理数据的方法、存储装置、固态硬盘和存储***
US11928053B2 (en) System garbage collection method and method for garbage collection in solid state disk
KR102603070B1 (ko) 메모리 시스템, 메모리 시스템에 데이터를 기록하는 방법 및 메모리 시스템으로부터 데이터를 판독하는 방법
JP2019020788A (ja) メモリシステムおよび制御方法
US10866743B2 (en) Storage control device using index indicating order of additional writing of data, storage control method using index indicating order of additional writing of data, and recording medium recording program using index indicating order of additional writing of data
US11321229B2 (en) System controller and system garbage collection method
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
KR20100139149A (ko) 다중 뱅크 메모리 장치에 대한 저장 주소 재매핑을 위한 방법과 시스템
CN106970765B (zh) 数据存储方法及装置
US11397669B2 (en) Data storage device and non-volatile memory control method
JP6139711B2 (ja) 情報処理装置
EP3346387B1 (en) Storage system and system garbage collection method
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
KR102347841B1 (ko) 메모리제어장치 및 메모리제어장치의 동작 방법
US20190243758A1 (en) Storage control device and storage control method
US20210165735A1 (en) Data storage device and non-volatile memory control method
EP3798852B1 (en) System controller and system garbage recovery method
CN114625318A (zh) 应用于固态硬盘的数据写入方法、装置、设备
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
US11934264B2 (en) ECC parity biasing for Key-Value data storage devices
US11748023B2 (en) Data storage device and non-volatile memory control method
CN112162703B (zh) 缓存实现方法及缓存管理模块

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination