CN112765047A - 用于重写数据的方法、设备和计算机程序产品 - Google Patents
用于重写数据的方法、设备和计算机程序产品 Download PDFInfo
- Publication number
- CN112765047A CN112765047A CN201911002580.7A CN201911002580A CN112765047A CN 112765047 A CN112765047 A CN 112765047A CN 201911002580 A CN201911002580 A CN 201911002580A CN 112765047 A CN112765047 A CN 112765047A
- Authority
- CN
- China
- Prior art keywords
- free
- data
- overwrite
- sectors
- storing
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000004590 computer program Methods 0.000 title claims abstract description 16
- 238000007906 compression Methods 0.000 claims abstract description 57
- 230000006835 compression Effects 0.000 claims abstract description 57
- 239000012634 fragment Substances 0.000 claims abstract description 15
- 239000000945 filler Substances 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 208000000044 Amnesia Diseases 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 208000026139 Memory disease Diseases 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006984 memory degeneration Effects 0.000 description 1
- 208000023060 memory loss Diseases 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例涉及用于重写数据的方法、设备和计算机程序产品。该方法包括:基于将目标数据重写到存储区中以覆盖原始数据的请求,比较目标数据的第一压缩比和原始数据的第二压缩比;根据第一压缩比高于第二压缩比的确定,根据第一压缩比将第一数据压缩成多个数据片段;将多个数据片段存储在存储区的多个可重写扇区中,该可重写扇区先前被用来存储原始数据的相应片段;以及将至少一个填充数据片段存储在与多个可重写扇区交错的至少一个扇区中或者多个可重写扇区中的空闲部分。这样,可以使得重写数据以连续的方式被存储在存储区中,同时还满足存储设备的写对齐的要求,从而节省了写请求引入的额外的读开销,并提高了存储设备的写性能。
Description
技术领域
本公开的实施例总体涉及数据存储领域,具体涉及用于重写数据的方法、设备和计算机程序产品。
背景技术
为了节省数据在存储设备中所占用的存储空间,在将数据写入存储区之前,可以以一定的压缩比对其进行压缩。当存储区初次被写入以一定的压缩比压缩的数据(例如,输入/输出(I/O)指令)时,数据在存储区内是连续的。后续数据可以被重写入相同的存储区以覆盖原始数据。
由于物理存储区可以按照分页管理方案被分成页大小的若干区段,其中页大小是4KB或8KB的最小分配单元。如果后续数据具有比原始数据更高的压缩比,则后续数据在相同存储区内通常是非连续的,并且后续数据与原始数据之间存在间隔。
发明内容
本公开的实施例提供了用于重写数据的方法、设备和计算机程序产品。
根据本公开的第一方面,提供了一种用于重写数据的方法。该方法包括:基于将目标数据重写到存储区中以覆盖原始数据的请求,比较目标数据的第一压缩比和原始数据的第二压缩比;根据第一压缩比高于第二压缩比的确定,根据第一压缩比将目标数据压缩成多个数据片段;将多个数据片段存储在存储区的多个重写区段中,重写区段先前被用来存储原始数据的相应片段;以及将至少一个填充数据片段存储在与多个重写区段交错的至少一个空闲区段中和/或多个重写区段中的空闲扇区。
根据本公开的第二方面,提供了一种用于存储数据的设备。该设备包括:至少一个处理单元以及至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令,指令当由所述至少一个处理单元执行时,使得所述设备执行动作,该动作包括:基于将目标数据重写到存储区中以覆盖原始数据的请求,比较目标数据的第一压缩比和原始数据的第二压缩比;根据第一压缩比高于第二压缩比的确定,根据第一压缩比将目标数据压缩成多个数据片段;将多个数据片段存储在存储区的多个重写区段中,重写区段先前被用来存储原始数据的相应片段;以及将至少一个填充数据片段存储在与多个重写区段交错的至少一个空闲区段中和/或多个重写区段中的空闲扇区。
根据本公开的第三方面,提供了一种计算机程序产品。计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令,该机器可执行指令在由设备执行时使得该设备执行动作,包括:基于将目标数据重写到存储区中以覆盖原始数据的请求,比较目标数据的第一压缩比和原始数据的第二压缩比;根据第一压缩比高于第二压缩比的确定,根据第一压缩比将目标数据压缩成多个数据片段;将多个数据片段存储在存储区的多个重写区段中,重写区段先前被用来存储原始数据的相应片段;以及将至少一个填充数据片段存储在与多个重写区段交错的至少一个空闲区段中和/或多个重写区段中的空闲扇区。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或必要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显,其中,在本公开的示例性实施例中,相同的参考标号通常代表相同部件。
图1A至1B示出了传统存储设备中的示例存储区的存储状态的示意图;
图2示出了根据本公开的实施例的设备和/或方法可以在其中被实施的示例存储区的示意图。
图3A至3C示出了根据本公开的实施例的设备和/或方法可以在其中被实施的示例存储区的存储状态的示意图;
图4示出了根据本公开的实施例的用于重写数据的示例方法的流程图;
图5示出了根据本公开的实施例的用于确定填充数据片段的存储位置的方法的流程图;
图6示出了可以用来实施本公开内容的实施例的示例设备的示示意性框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
采用实时数据压缩(ILC)技术的现代存储系统(例如,全闪存阵列(AFA)存储设备)能够显著地节省磁盘空间。如前所述,存储区按照页大小被划分为多个存储区段。当在存储区的先前存储有原始数据的扇区内重新写入数据时,不会引起元数据的改变。如果重写数据具有与原始数据相同的压缩比(即,压缩前的数据量与压缩后的数据量的比值),则存储区的存储空间能够被充分地利用,以连续的方式顺序地向后端驱动设备写入重写数据。
然而,发明人发现如果重写数据具有比原始数据更大的压缩比,将使得原本连续的数据以不连续的方式被存储,并且在存储区段之间留有间隔。以下参考图1A和1B来具体描述传统存储设备中的存储区100的存储状态。
存储区100包括以预定的页大小划分的多个存储区段101、102、103和104,其中每个存储区段具有M个扇区,例如,M=8。存储区100可以位于用于存储数据、I/O指令的任何类型的存储设备,例如硬盘(HD)、固态盘(SSD)中的存储区。还应当理解,为了便于描述,存储区100以8KB的页大小作为最小分配单元并且仅包括4个存储区段,但是存储区100还可以采用不同的页大小来划分,并且包括任何数目的存储区段。
如图1A所示,在状态110中,存储区100最初存储具有压缩比为2:1的原始数据(如用对角线图案表示的数据片段),原始数据的每个数据片段为4KB并且被存储在8个扇区中。
随后,在图1B所示的状态120中,目标数据以8:3的压缩比被压缩成大小为6KB的多个数据片段,然后被重写到存储区100以覆盖原始数据(如用栅格图案表示的数据片段)。由于目标数据的压缩比高于原始数据的压缩比,目标数据的数据片段在存储区段中所占用的存储空间更小,仅占用N个扇区(其中N<M),例如,N=6。
因而,在存储区段101至104中的目标数据的数据片段之间具有2个空闲扇区的间隔。这样的间隔将导致清空写I/O指令的操作变得不连续。此外,为了确保对于后端驱动设备而言内存是对齐的,低层组件还需花费额外的开销来读取写I/O指令之间的间隔部分,从而无法充分发挥独立冗余磁盘阵列(RAID)等存储设备能够有效处理较大的连续I/O指令的优势。
根据本公开的实施例,提供了一种用于重写数据的方案。该方案利用填充数据来填满存储区段中的空闲扇区和/或相邻存储区段之间的空闲区段,使得重写数据以连续的方式被存储在存储区中。从而,产生了较大的连续数据,这样的数据对于RAID等后端驱动设备而言是友好的。
基于这样的方式,根据本公开的实施例的方案可以避免以不连续的方式清空写I/O指令,并且节省了写请求引入的额外的读开销,从而能够提高存储设备的写性能,例如,每秒读写次数(IOPS)。
以下将参照附图来具体描述本公开的实施例。图2示出了根据本公开的实施例的用于重写数据的示例环境200的示意图。如图2所示,示例环境200包括主机210、存储管理器220以及存储设备230。应当理解,仅出于示例性的目的描述示例环境200的结构,而不暗示对于本公开的范围的任何限制。例如,本公开的实施例还可以被应用到与示例环境200不同的环境中。
主机210可以例如是运行用户应用的任何物理计算机、虚拟机、服务器等等。主机210可以向存储管理器220发送I/O请求,例如用于从存储设备230读取数据和/或向存储设备230写入数据等。响应于接收到来自主机210的读请求,存储管理器220可以从存储设备230读取数据,并且将所读取的数据返回给主机210。响应于接收到来自主机210的写请求,存储管理器220可以向存储设备230写入数据。存储设备230可以是任何目前已知的或者将来开发的非易失性存储介质,例如磁盘、固态盘(SSD)或磁盘阵列(RAID)等等。
存储管理器220可以部署有压缩/解压缩引擎(未示出)。例如,当存储管理器220从主机210接收到向存储设备230写入数据的请求时,存储管理器220可以利用压缩/解压缩引擎来压缩待存储的数据,然后将经压缩的数据存储到存储设备230。
图3A至3C示出了根据本公开的实施例的设备和/或方法可以在其中被实施的示例存储区300的存储状态的示意图。例如,存储区300可以是图2所示的存储设备230中的存储区。应当理解,存储区300还可以存在于任何适当的存储设备中,本公开的范围在此方面不受限制。以下结合图2来详细描述图3A至3C。
存储区300基于起始扇区索引和预定的页大小(例如,区段长度)而划分为多个存储区段301至308,其中每个存储区段包括M个扇区。存储区300可以是用于存储任何适当类型的数据(诸如,I/O指令)的任何类型的存储设备中的存储区,例如硬盘(HD)、固态驱动器(SSD)。还应当理解,为了便于描述,存储区300被示为采用8KB的最小分配单元并且仅包括8个存储区段,但是上述数目仅仅是示意性而非限制性的,存储区300可以采用不同的页大小,并且包括任何数目的存储区段,本公开不旨在这方面进行限定。
如图3A所示,在状态310中,存储区300最初存储具有16:13的压缩比的原始数据(如用对角线图案表示的数据片段),并且原始数据的每个数据片段被存储在13个扇区中。在存储区300中,存储区段301和308是没有存储数据的空闲区段,存储区段302、304、305和307中的仅部分扇区存储有数据,而其他扇区为空闲扇区。
在如图3B所示的状态320中,存储管理器220将目标数据以8:1的压缩比被压缩成大小为1KB的多个数据片段(如用栅格图案表示的数据片段),然后重写到存储区300以覆盖原始数据,其中每个数据片段占用2个扇区。由于第二压缩比高于第一压缩比,所以目标数据的数据片段在存储区段中所占用的存储空间更小,从而在存储区段302至306之间存在间隔。
如前所述,在存储管理器220进行读取时,为了满足存储设备的写对齐的要求,除了要读取存储有目标数据的扇区,还需要读取数据片段之间的空闲扇区或空闲区段。因此,如图3C所示的状态330,存储管理器220可以用填充数据片段(如用圆点图案表示的数据片段)存储在存储区300的空闲扇区或空闲区段中。以下将结合图4至5来描述根据本公开的实施例的用于重写数据的详细过程。
图4示出了根据本公开的实施例的用于重写数据的示例方法400的流程图。例如,方法400可以由如图2所示的存储管理器220来执行。应当理解,方法400还可以由其他任何适当的设备来执行,并且可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。为了方便描述,以下将参考图2和图3A-3C来描述过程400。
在410,存储管理器220接收将目标数据重写到存储区300中以覆盖原始数据的请求。例如,存储管理器220可以从主机210接收将目标数据重写到存储区中以覆盖原始数据的请求,也可以从任意适当的元件接收该请求,本公开不旨在此方面受到限制。
在420,存储管理器220比较目标数据的第一压缩比和原始数据的第二压缩比。例如,在图3A至3C的示例中,存储管理器220比较第一压缩比8:1和第二压缩比16:13,并且确定第一压缩比高于第二压缩比。
在一些实施例中,如果存储管理器220确定目标数据的第一压缩比小于或者等于原始数据的第二压缩比,则可以将采用任何适当的常规存储方式来存储目标数据,在此将不进行赘述。
在430,存储管理器220根据第一压缩比高于第二压缩比的确定,根据第一压缩比将目标数据压缩成多个数据片段。例如,目标数据可以被压缩成大小为2KB的数据片段。
在440,存储管理器220将目标数据的多个数据片段存储在存储区300的多个重写区段中。在本公开的上下文中,重写区段是先前被用来存储原始数据的相应片段的存储区段,并且其可以用来重新写入目标数据,如图3A-3C所示的存储区段302、305和306。
在450,存储管理器220将至少一个填充数据片段存储在与多个重写区段302、305和306交错的至少一个空闲区段中和/或所述多个重写区段中的空闲扇区中。
如图3C所示,存储管理器220可以将填充数据片段存储在与重写区段302、305和306交错的空闲区段303和304中。在本公开的上下文中,空闲区段是指其所有扇区均没有存储任何目标数据的存储区段。附加地,存储管理器220还可以将填充数据片段存储在重写区段302、305和306的空闲扇区中。
这样,通过将填充数据片段的填充在存储区300中的空闲区段303和304和/或重写区段302、305和306的空闲扇区中,使得原本不连续的目标数据变成了占用从存储区段302至306的较大的连续数据,同时还满足存储设备的写对齐的要求。
图5示出了根据本公开的实施例的用于确定填充数据片段的存储位置的方法500的流程图。例如,方法500可以由如图2所示的存储管理器220来执行。应当理解,方法500还可以由其他任何适当的设备来执行,并且可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。将会理解,方法500是方法400的步骤450的一种示例实现。为了方便描述,以下将参考图2和图3A-3C来描述过程500此外。
如图5所示,在510,存储管理器220确定存储区300的候选填充区段302至306。在一些实施例中,存储管理器220可以针对存储区300的存储区段301-308生成指示区段可写性的第一位图。第一位图包括与对应存储区段中的各个扇区相对应的多个位,其中位0指示不可写入的扇区,并且位1指示存储重写数据、原始数据的扇区或空闲扇区。在图3A至3C所示的示例中,对于存储区段301至308而言,它们的第一位图包括8个位,并且均为11111111。在本公开的实施例中,如果对应存储区段的第一位图中所包含的位不全为1,则表示该存储区段为不可写区段。因而,存储管理器220可以基于各存储区段的第一位图,将存储区的不可写区段以外的存储区段301至308确定为候选填充区段。
存储区段301、307和308中没有存储目标数据,从内存损耗的角度考虑,可以不对这些存储区段进行填充。在一些实施例中,存储管理器220可以针对存储区300的存储区段301-308生成指示扇区可重写性的第二位图。第二位图包括与对应存储区段中的各个扇区相对应的多个位,其中位0指示存储原始数据的扇区、空闲扇区或者不可写扇区,并且位1指示存储重写数据的扇区。例如,对于存储区段301,其第二位图为00000000,而存储区段302,其第二位图为00000110。在本公开的实施例中,如果对应存储区段的第一位图中所包含的位全为1,而第二位图中所包含的位不全为0,则表示该存储区段为重写区段。如果对应存储区段的第一位图中所包含的位全为1,而第二位图中所包含的位全为0,则表示该存储区段为空闲区段。例如,在图3B所示的状态320中,存储区段302、305和306为重写区段,而存储区段301、303、304和307和308为空闲区段。
在一些实施例中,存储管理器220可以基于第一位图和第二位图,确定位于重写区段302、305和306中的起始重写区段302和末尾重写区段306。例如,存储管理器220可以基于存储区300中的多个存储区段301至308的第一位图和第二位图,将地址索引最靠前的、第一位图包含的位全为1且第二位图包含的位不全为0的存储区段302确定为起始重写区段,并且将地址索引最靠后的、第一位图包含的位全为1且第二位图包含的位不全为0的存储区段306确定为末尾重写区段。然后,存储管理器220可以进一步地将位于起始重写区段302和末尾重写区段306之间的存储区段确定为候选存储区段,例如,存储区段302至306。
在520中,存储管理器220根据重写区段302、305和306中存储目标数据的数据片段的扇区的位置,从所确定的候选填充区段302至306确定空闲区段303和304以及重写区段302、305和306中的空闲扇区。
在一些实施例中,存储管理器220根据各个候选填充区段的第二位图,可以将位值为1的相应扇区确定为数据片段被存储的扇区。然后,将重写区段302、305和306中存储数据片段的扇区以外的扇区确定为空闲部分,并且将候选填充区段中的重写区段以外的存储区段,例如存储区段303和304确定为空闲区段。
在530中,存储管理器220将填充数据片段存储在空闲区段303和304和重写区段302、305和306中的空闲扇区中的至少一项中。例如,在图3C所示的状态330中,存储管理器220将填充数据片段存储在与重写区段302、305和306交错的空闲区段303和304中以及重写区段302、305和306中的空闲扇区中,从而形成了从存储区段302至306的连续的目标数据,同时该目标数据满足存储设备的写对齐的要求。应当理解,填充数据片段可以是与目标数据相同的数据,也可以是不同的数据,本公开在此方面不受限制。
附加地,考虑到填充数据不包括重写的目标数据,从内存损耗水平的角度来看,可能不希望过多的空闲区段被填充数据片段占用。在一些实施例中,存储管理器220可以进一步确定空闲区段的数目与候选填充区段的数目之间的比。例如,在图3B所示的状态320中,空闲区段的数目与候选填充区段的数目之间的比为2/5。然后,存储管理器220将空闲区段的数目与候选填充区段的数目之间的比与预定阈值,例如1/2进行比较。如果比值不超过预定阈值1/2,则表示用填充数据片段填充空闲区段和/或空闲扇区不会对内存损耗水平产生影响,存储管理器220可以生成填充数据片段,并将其存储在空闲区段和空闲扇区中的至少一项中。相反,如果该比值超过预定阈值,则表示用填充数据填充空闲区段和/或空闲扇区可能不利于内存损耗水平,存储管理器220可以不对空闲区段和空闲扇区中的至少一项进行填充。
在一些实施例中,存储管理器220可以进一步确定在相邻的两个重写区段之间是否存在不可写区段。例如,如果在任意相邻的两个重写区段之间存在第一位图包含的位不全为1的存储区段,则可以确定相应两个重写区段之间存在不可写区段。
根据本公开的实施例,提供了一种用于重写数据的方案。通过该方案,可以使得重写数据以连续的方式被存储在存储区中,同时还满足存储设备的写对齐的要求,从而节省了写请求引入的额外的读开销,并显著提高了存储设备的读写性能。
图6示出了可以用来实施本公开的实施例的示例设备600的示意性框图。例如,如图2所示的示例设备200可以由设备600来实施。如图所示,设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的计算机程序指令或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序指令,来执行各种适当的动作和处理。在RAM603中,还可存储设备600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法400、500可由处理单元601执行。例如,在一些实施例中,方法400、500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序被加载到RAM 603并由CPU601执行时,可以执行上文描述的方法600中的一个或多个动作。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实现的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各实现。
Claims (19)
1.一种用于重写数据的方法,包括:
基于将目标数据重写到存储区中以覆盖原始数据的请求,比较所述目标数据的第一压缩比和所述原始数据的第二压缩比;
根据所述第一压缩比高于所述第二压缩比的确定,根据所述第一压缩比将所述目标数据压缩成多个数据片段;
将所述多个数据片段存储在所述存储区的多个重写区段中,所述重写区段先前被用来存储所述原始数据的相应片段;以及
将至少一个填充数据片段存储在与所述多个重写区段交错的至少一个空闲区段中和/或所述多个重写区段中的空闲扇区中。
2.根据权利要求1所述的方法,其中将至少一个填充数据片段存储在与所述多个重写区段交错的至少一个空闲区段中和/或所述多个重写区段中的空闲扇区包括:
确定所述存储区的候选填充区段;
根据所述重写区段中存储所述多个数据片段的扇区的位置,从所确定的所述候选填充区段确定所述空闲区段和所述空闲扇区;以及
将所述填充数据片段存储在所述空闲区段和所述空闲扇区中的至少一项中。
3.根据权利要求2所述的方法,其中确定所述存储区的候选填充区段包括:
生成指示所述存储区的区段可写性的第一位图;
基于所述第一位图,确定所述存储区的不可写区段;以及
将所述存储区的所述不可写区段以外的区段确定为所述候选填充区段。
4.根据权利要求2所述的方法,其中确定所述空闲区段和所述空闲区段包括:
生成指示所述候选填充区段的扇区可重写性的第二位图;
基于所述第二位图,确定所述数据片段被存储的扇区;
将所述重写区段中存储所述数据片段的扇区以外的扇区确定为所述空闲部分;以及
将所述候选填充区段中的所述重写区段以外的区段确定为空闲区段。
5.根据权利要求2所述的方法,其中将所述填充数据片段存储在所述空闲区段和所述空闲扇区中的至少一项中包括:
确定所述空闲区段的数目与所述候选填充区段的数目之间的比;
将所述比与预定阈值进行比较;以及
根据所述比不超过所述预定阈值的确定,将所述填充数据片段存储在所述空闲区段和所述空闲扇区中的至少一项。
6.根据权利要求1所述的方法,其中与所述多个重写区段交错的至少一个空闲区段位于所述多个重写区段中的起始重写区段和末尾重写区段之间。
7.根据权利要求1所述的方法,其中所述存储区基于所述存储区的起始扇区索引和区段长度而被划分成多个区段。
8.根据权利要求1所述的方法,其中所述填充数据片段是与所述数据片段不同的数据片段。
9.根据权利要求1所述的方法,其中将至少一个填充数据片段存储在与所述多个重写区段交错的至少一个空闲区段中或者所述多个重写区段中的空闲扇区包括:将所述至少一个填充数据片段存储在所述多个重写区段中的起始重写区段和末尾重写区段之间的空闲区段中和/或所述多个重写区段中的所述空闲扇区中,使得所述多个数据片段是连续的。
10.一种用于存储数据的设备,包括:
至少一个处理单元;以及
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述设备执行动作,所述动作包括:
基于将目标数据重写到存储区中以覆盖原始数据的请求,比较所述目标数据的第一压缩比和所述原始数据的第二压缩比;
根据所述第一压缩比高于所述第二压缩比的确定,根据所述第一压缩比将所述目标数据压缩成多个数据片段;
将所述多个数据片段存储在所述存储区的多个重写区段中,所述重写区段先前被用来存储所述原始数据的相应片段;以及
将至少一个填充数据片段存储在与所述多个重写区段交错的至少一个空闲区段中和/或所述多个重写区段中的空闲扇区中。
11.根据权利要求10所述的设备,其中将至少一个填充数据片段存储在与所述多个重写区段交错的至少一个空闲区段中和/或所述多个重写区段中的空闲扇区包括:
确定所述存储区的候选填充区段;
根据所述重写区段中存储所述多个数据片段的扇区的位置,从所确定的所述候选填充区段确定所述空闲区段和所述空闲扇区;以及
将所述填充数据片段存储在所述空闲区段和所述空闲扇区中的至少一项中。
12.根据权利要求11所述的设备,其中确定所述存储区的候选填充区段包括:
生成指示所述存储区的区段可写性的第一位图;
基于所述第一位图,确定所述存储区的不可写区段;以及
将所述存储区的所述不可写区段以外的区段确定为所述候选填充区段。
13.根据权利要求11所述的设备,其中确定所述空闲区段和所述空闲区段包括:
生成指示所述候选填充区段的扇区可重写性的第二位图;
基于所述第二位图,确定所述数据片段被存储的扇区;
将所述重写区段中存储所述数据片段的扇区以外的扇区确定为所述空闲部分;以及
将所述候选填充区段中的所述重写区段以外的区段确定为空闲区段。
14.根据权利要求11所述的方法,其中将所述填充数据片段存储在所述空闲区段和所述空闲扇区中的至少一项中包括:
确定所述空闲区段的数目与所述候选填充区段的数目之间的比;
将所述比与预定阈值进行比较;以及
根据所述比不超过所述预定阈值的确定,将所述填充数据片段存储在所述空闲区段和所述空闲扇区中的至少一项。
15.根据权利要求10所述的设备,其中与所述多个重写区段交错的至少一个空闲区段位于所述多个重写区段中的起始重写区段和末尾重写区段之间。
16.根据权利要求10所述的设备,其中所述存储区基于所述存储区的起始扇区索引和区段长度而被划分成多个区段。
17.根据权利要求1所述的方法,其中所述填充数据片段是与所述数据片段不同的数据片段。
18.根据权利要求10所述的设备,其中将至少一个填充数据片段存储在与所述多个重写区段交错的至少一个空闲区段中或者所述多个重写区段中的空闲扇区包括:将所述至少一个填充数据片段存储在所述多个重写区段中的起始重写区段和末尾重写区段之间的空闲区段中和/或所述多个重写区段中的所述空闲扇区中,使得所述多个数据片段是连续的。
19.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据权利要求1-9中的任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911002580.7A CN112765047A (zh) | 2019-10-21 | 2019-10-21 | 用于重写数据的方法、设备和计算机程序产品 |
US16/885,788 US11157187B2 (en) | 2019-10-21 | 2020-05-28 | Method, device, and computer program product for overwriting data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911002580.7A CN112765047A (zh) | 2019-10-21 | 2019-10-21 | 用于重写数据的方法、设备和计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112765047A true CN112765047A (zh) | 2021-05-07 |
Family
ID=75492293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911002580.7A Pending CN112765047A (zh) | 2019-10-21 | 2019-10-21 | 用于重写数据的方法、设备和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11157187B2 (zh) |
CN (1) | CN112765047A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1495774A (zh) * | 1998-03-04 | 2004-05-12 | 索尼公司 | 信息记录方法和装置,信息记录/重放方法和装置 |
US20150052393A1 (en) * | 2013-08-19 | 2015-02-19 | International Business Machines Corporation | Fast data back-up and restore between volatile and flash memory |
CN104881240A (zh) * | 2014-02-27 | 2015-09-02 | 群联电子股份有限公司 | 数据写入方法、存储器存储装置及存储器控制电路单元 |
US20180293028A1 (en) * | 2017-04-05 | 2018-10-11 | International Business Machines Corporation | In-place data compression with small working memory |
US20190205035A1 (en) * | 2016-11-08 | 2019-07-04 | Hitachi, Ltd. | Flash memory module and control method of flash memory module |
US20190212949A1 (en) * | 2018-01-10 | 2019-07-11 | International Business Machines Corporation | Increasing storage efficiency of a data protection technique |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9317218B1 (en) | 2013-02-08 | 2016-04-19 | Emc Corporation | Memory efficient sanitization of a deduplicated storage system using a perfect hash function |
-
2019
- 2019-10-21 CN CN201911002580.7A patent/CN112765047A/zh active Pending
-
2020
- 2020-05-28 US US16/885,788 patent/US11157187B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1495774A (zh) * | 1998-03-04 | 2004-05-12 | 索尼公司 | 信息记录方法和装置,信息记录/重放方法和装置 |
US20150052393A1 (en) * | 2013-08-19 | 2015-02-19 | International Business Machines Corporation | Fast data back-up and restore between volatile and flash memory |
CN104881240A (zh) * | 2014-02-27 | 2015-09-02 | 群联电子股份有限公司 | 数据写入方法、存储器存储装置及存储器控制电路单元 |
US20190205035A1 (en) * | 2016-11-08 | 2019-07-04 | Hitachi, Ltd. | Flash memory module and control method of flash memory module |
US20180293028A1 (en) * | 2017-04-05 | 2018-10-11 | International Business Machines Corporation | In-place data compression with small working memory |
US20190212949A1 (en) * | 2018-01-10 | 2019-07-11 | International Business Machines Corporation | Increasing storage efficiency of a data protection technique |
Non-Patent Citations (1)
Title |
---|
许盛伟等: "基于J2EE的分布式海量影像分发服务研究与实现", 《吉林大学学报(地球科学版)》 * |
Also Published As
Publication number | Publication date |
---|---|
US11157187B2 (en) | 2021-10-26 |
US20210117090A1 (en) | 2021-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9177670B1 (en) | Method and apparatus for flash cache management | |
CN110413199B (zh) | 用于管理存储系统的方法、设备和计算机可读存储介质 | |
CN109213696B (zh) | 用于缓存管理的方法和设备 | |
CN107526743B (zh) | 用于压缩文件系统元数据的方法和设备 | |
CN108228647B (zh) | 用于数据拷贝的方法和设备 | |
RU2479013C2 (ru) | Способ оптимизации твердотельного накопителя и оптимизатор | |
CN112748863B (zh) | 用于处理数据的方法、电子设备和计算机程序产品 | |
US11593272B2 (en) | Method, apparatus and computer program product for managing data access | |
CN108733316B (zh) | 用于管理存储系统的方法和管理器 | |
CN110737399B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN106558332B (zh) | 数据处理器件及其操作方法 | |
US10977129B2 (en) | Method and device for managing a hybrid storage disk array | |
CN111949605A (zh) | 用于实现文件系统的方法、设备和计算机程序产品 | |
US10970254B2 (en) | Utilization of tail portions of a fixed size block in a deduplication environment by deduplication chunk virtualization | |
CN111625181B (zh) | 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统 | |
CN110737402B (zh) | 管理存储系统的方法、设备和计算机存储介质 | |
CN103558998A (zh) | 一种数据操作的方法和设备 | |
US20190065076A1 (en) | Reducing data storage system i/o bandwidth via read-once point in time copy | |
US10901646B2 (en) | Update of RAID array parity | |
WO2017006675A1 (ja) | 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム | |
CN108984566B (zh) | 用于文件系统日志的方法和设备 | |
CN103514140B (zh) | 用于实现可重构系统中配置信息多发射的重构控制器 | |
US11429317B2 (en) | Method, apparatus and computer program product for storing data | |
CN111625180B (zh) | 数据写入方法及装置、存储介质 | |
CN111124253B (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 |