CN114930725A - 存储系统中的容量缩减 - Google Patents
存储系统中的容量缩减 Download PDFInfo
- Publication number
- CN114930725A CN114930725A CN202080074823.2A CN202080074823A CN114930725A CN 114930725 A CN114930725 A CN 114930725A CN 202080074823 A CN202080074823 A CN 202080074823A CN 114930725 A CN114930725 A CN 114930725A
- Authority
- CN
- China
- Prior art keywords
- page
- sectors
- xor
- sector
- data
- 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
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
-
- 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/0661—Format or protocol conversion arrangements
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
- H03K19/21—EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一方面包括实现存储系统中的容量缩减,包括:对于所述存储系统中的候选页面和目标页面中的每一者,标识具有相同数据或最少量的不同数据的扇区子集;对所述候选页面和所述目标页面的扇区执行逐位异或(XOR)运算;根据所述XOR运算的结果来确定熵。当确定所述熵小于或等于阈值时,一方面包括根据包含所述逐位XOR运算的结果的XOR扇区构建参考页面,以及对所述参考页面执行压缩操作。
Description
背景技术
数据优化技术降低了系统管理和存储开销成本。一种优化技术是压缩,其中系统以比原始数据使用更少位的形式对数据进行重新编码,这可以提高存储效率、传输速度和处理效率。另一种优化技术是去重,其中系统消除文件系统中的重复数据以提高存储效率、传输速度和处理效率。被发送到存储系统的数据可以被分段为固定片段或可变大小片段,其中每个片段可以由标识符(诸如哈希签名或数据哈希)标识。一旦生成了标识符,它就用于确定数据片段是否已经存在于系统中。如果是,则不需要再次存储。虽然数据压缩技术节省了存储空间,但是它可能涉及开销成本,诸如输入/输出(IO)访问开销的增加。
发明内容
本发明内容的提供是为了以简化形式引入下文在具体实施方式中进一步描述的概念的选择。本发明内容不旨在表示所要求保护的主题的关键特征或本质特征,也不旨在用于限制所要求保护的主题的范围。
根据本公开的各方面,提供了一种用于存储系统中的容量缩减的方法。所述方法包括:对于所述存储系统中的候选页面和目标页面中的每一者,标识具有相同数据或最小阈值量的不同数据的扇区子集;对所述候选页面和所述目标页面的扇区执行逐位异或(XOR)运算;将逐位XOR运算的结果存储在XOR扇区中;以及根据所述XOR运算的结果来确定熵。所述熵指示所述候选页面与所述目标页面之间的对应数据不同。当确定所述熵小于或等于阈值时,所述方法包括根据所述XOR扇区构建参考页面,以及对所述参考页面执行所述压缩操作。
根据本公开的各方面,提供了一种用于存储系统中的容量缩减的系统。所述系统包括:存储器,所述存储器包括计算机可执行指令;以及处理器,所述处理器执行所述计算机可执行指令,所述计算机可执行指令在由所述处理器执行时使所述处理器执行操作。所述操作包括:对于所述存储系统中的候选页面和目标页面中的每一者,标识具有相同数据或最小阈值量的不同数据的扇区子集;对所述候选页面和所述目标页面的扇区执行逐位异或(XOR)运算;将所述压缩的逐位XOR运算的结果存储在XOR页面中;根据所述XOR运算的结果来确定熵。所述熵指示所述候选页面与所述目标页面之间的对应数据不同。当确定所述熵小于或等于阈值时,所述操作还包括根据所述XOR扇区构建参考页面,以及对所述参考页面执行所述压缩操作。
根据本公开的各方面,提供了一种用于存储系统中的容量缩减的计算机程序产品。所述计算机程序产品体现在非暂时性计算机可读介质上,所述计算机程序产品包括指令,所述指令在由计算机执行时使所述计算机执行操作。所述操作包括:对于所述存储系统中的候选页面和目标页面中的每一者,标识具有相同数据或最小阈值量的不同数据的扇区子集;对所述候选页面和所述目标页面的扇区执行逐位异或(XOR)运算;将压缩的逐位XOR运算的结果存储在XOR页面中;以及根据所述XOR运算的结果来确定熵。所述熵指示所述候选页面与所述目标页面之间的对应数据不同。当确定所述熵小于或等于阈值时,所述方法包括根据所述XOR扇区构建参考页面,以及对所述参考页面执行所述压缩操作。
附图说明
所要求保护的发明的其他方面、特征和优点将从以下具体实施方式、所附权利要求和附图中变得更加清楚,在附图中,相同的附图标记标识类似或相同的元件。在说明书中结合附图引入的附图标记可以在一个或多个后续附图中重复,而无需在说明书中进行另外的描述来提供其他特征的上下文。
图1是根据实施方案的存储系统的示例的图式;
图2是描绘示例性元数据数据结构的图式;
图3是根据实施方案的过程的流程图;
图4A至图4B是描述存储系统中的页面的图式,并且图4C是根据实施方案的示例性XOR结果扇区;
图5是根据进一步实施方案的过程的流程图;以及
图6是根据实施方案的计算装置的示例的图式。
具体实施方式
在描述在本文寻求保护的概念、结构和技术的实施方案之前,解释一些术语。以下描述包括许多术语,其定义在本领域中通常是已知的。然而,提供以下术语表定义以阐明后续描述,并且可以有助于理解说明书和权利要求。
如本文中所使用,术语“存储系统”旨在广义地解释为涵盖例如用于存储数据的私有或公共云计算系统以及用于存储包括虚拟基础设施的数据和不包括虚拟基础设施的数据的系统。如本文中所使用,术语“客户端”、“主机”和“用户”可互换地指代使用存储系统读取/写入数据以及发出配置存储系统中的存储单元的请求的任何人、系统或其他实体。在一些实施方案中,术语“存储装置”也可以指代包括多个存储装置的存储阵列。在某些实施方案中,存储介质可以指代一种或多种存储介质,诸如硬盘驱动器、硬盘驱动器的组合、闪存存储装置、闪存存储装置的组合、硬盘驱动器、闪存和其他存储装置的组合以及其他类型和组合的计算机可读存储介质,包括那些尚待构思出的存储介质。存储介质还可以指代物理存储介质和逻辑存储介质两者,并且可以包括多级虚拟到物理映射,并且可以是或者包括映像或磁盘映像。存储介质可以是计算机可读的,并且在本文中也可以被称为计算机可读程序介质。而且,存储单元可以指代任何存储单元,其包括上文关于存储装置描述的那些存储单元,并且包括存储卷、逻辑驱动器、容器或暴露给客户端或应用程序的任何存储单元。存储卷可以是存储系统可独立标识和寻址的逻辑存储单元。
在某些实施方案中,术语“IO请求”或简称“IO”可以用于指代输入或输出请求,诸如数据读取或数据写入请求或配置和/或更新存储单元特征的请求。特征可以指代可为存储系统配置的任何服务。
在某些实施方案中,存储装置可以指代任何非易失性存储器(NVM)装置,包括硬盘驱动器(HDD)、固态驱动器(SSD)、闪存装置(例如,NAND闪存装置)以及可以本地和/或远程访问(例如,经由存储连接网络(SAN)(在本文中也被称为存储阵列网络(SAN))的类似装置。
在某些实施方案中,存储阵列(有时被称为磁盘阵列)可以指代用于基于块、基于文件或对象存储的数据存储系统,其中存储阵列可以包括例如专用存储硬件,其包含旋转硬盘驱动器(HDD)、固态磁盘驱动器和/或全闪存驱动器。应理解,闪存是一种固态(SS)随机存取介质类型,与具有物理移动部件的硬盘驱动器(HDD)相比,它可以读取任何地址范围而没有延时损失,所述物理移动部件在从不同的地址范围读取时需要重新定位,因此显著增加随机IO数据的延时。
在某些实施方案中,数据存储实体和/或存储单元可以是文件系统、对象存储、虚拟化装置、逻辑单元、逻辑单元号、逻辑卷、逻辑装置、物理装置和/或存储介质中的任何一者或多者。
在某些实施方案中,逻辑单元(LU)可以是由存储系统提供的用于访问来自存储系统的数据的逻辑实体,并且如本文中所使用的,逻辑单元可与逻辑卷互换使用。在本文的许多实施方案中,LU或LUN(逻辑单元号)可以彼此互换使用。在某些实施方案中,LUN可以是用于标识逻辑单元的逻辑单元号;还可以指代可以与一个或多个虚拟机相对应的一个或多个虚拟磁盘或虚拟LUN。在某些实施方案中,卷是指磁盘上的存储单元。
在某些实施方案中,存储集群可以指代一种实现延伸集群(例如,分布在不同地理位置的集群)的配置类型。存储集群配置使得实体能够提供数据中心之间的负载平衡和迁移。
在某些实施方案中,日志结构化存储(LSS)是指其中数据和元数据被顺序写入称为日志的循环缓冲区的文件系统。日志结构化文件系统从日志尾部回收空闲空间,以防止在日志头部回滚到与尾部汇合时填满文件系统。尾部可以通过跳过在更远的未来在日志中存在更新版本的数据来释放空间并向前移动。如果没有较新版本,则将数据移动并附加到头部。
在某些实施方案中,块是指具有最大长度(块大小)的字节或位序列。块大小可以是固定的或可变的。块装置或块存储装置可以指代负责存储和检索指定数据块的硬件的抽象层。在某些实施方案中,文件系统可以基于块装置,所述块装置可以是负责存储和检索指定数据块的硬件的抽象层。块存储装置可以由文件系统或数据库管理系统(DBMS)抽象化,以供应用程序和最终用户使用。经由块IO访问的物理或逻辑卷可以是服务器内部的装置,经由SCSI或光纤信道直接附接,或者是使用诸如iSCSI的协议经由存储区域网络(SAN)访问的远程装置。
虽然本文可以使用供应商特定的术语以促进理解,但是应理解,在本文寻求保护的概念、技术和结构不限于与任何特定的商业产品一起使用。另外,为了确保本公开的清晰性,本文未详细描述广为理解的方法、程序、电路、部件和产品。
短语“诸如”、“例如”、“示例性”及其变体在本文中用于描述非限制性实施方案并且在本文中用于表示“用作示例、实例或说明”。本文经由这些短语和/或变体描述的任何实施方案不一定被解释为优选于或优于其他实施方案和/或排除纳入其他实施方案的特征。另外,在本文使用词语“任选地”来表示在一些实施方案中提供特征或过程等,而在其他实施方案中不提供。本发明的任何特定实施方案可以包括多个“任选”特征,除非此类特征冲突。
现代日志结构存储系统(LSS)通常支持去重方法,以缩减物理存储容量以为相同的给定物理空间实现更多逻辑容量。可以对整个页面(例如,4K)去重执行去重。然而,在许多情况下,由于若干原因,没有执行子扇区去重。例如,子扇区(小于512MB)是非常小的数据片,这意味着寻求此类匹配片段在元数据表示和CPU周期方面可能需要比此类缩减的任何(如果有的话)益处更多的资源。而且,在存储系统中极为常见的压缩进一步降低了对子扇区去重的需要,因为压缩扇区与压缩部分扇区之间的差异可能更小。因而,仅需要一种能够实现子扇区缩减的技术,所述技术将消耗很少的表示元数据和CPU周期。
通常使用哈希函数发现去重。构建了哈希表,其表示所存储的大多数页面。对于每个新页面,经由哈希表执行匹配查找。哈希可能是确定性的(例如,20字节的SHA1被广泛认为是整个页面匹配)或者不是确定性的,这意味着哈希是不够的,并且需要整个页面比较。这同样适用于扇区。
当两个页面之间存在若干相同的扇区但有一个或多个扇区不同时,发生部分页面匹配。存储与标记相同扇区并且在一些情况下标记那些唯一的扇区(即,不同的扇区)的元数据表示的部分匹配结果。
可以使用页面比较函数来实现部分页面匹配(例如,两个页面之间的若干匹配扇区),其中逐扇区地检查两个页面以确定哪些扇区包含相同的数据。在实施方案中,对被比较的两个页面之间的多个不同的扇区对中的每一对执行异或(XOR)运算。可以存储XOR运算的结果(只有一位),而不是原始数据,由此节省容量。
不同的扇区可能源于许多因素,包括时间戳、序列号和表示扇区的极小部分的其他字段等。
如上文所指出的,本文描述的实施方案存储不同扇区的XOR结果而不是唯一数据。通过这种方式,考虑到大部分扇区是相同的(即,由许多零组成),XOR将产生非常有效地压缩的扇区。
现在转到图1,现在将根据实施方案描述用于实现存储系统环境中的基于扇区的容量缩减的系统100。图1的存储系统100包括处理电路102、存储器104和持久存储装置106。在实施方案中,持久存储装置106可以本地安装在存储系统100内,如图1所示,或者可以是经由连接(未示出)通信地耦合到存储系统100的外部或远程装置。
如果永久存储装置106是远程的,则它可以经由已知的连接、接口和网络电路(例如,以太网电缆、无线保真(Wi-Fi)无线连接、IP网络、SCSI电缆、SATA电缆、光纤信道(FC)电缆等)耦合到存储系统。如果连接是网络连接,则接口和网络电路可以包括例如一个或多个以太网卡、蜂窝调制解调器、FC适配器、Wi-Fi无线网络适配器和/或用于连接到网络的其他装置。如果到持久存储装置的连接是本地存储连接,则接口和/或网络接口电路可以包括例如SCSI、SAS、ATA、SATA、FC和/或其他类似的控制器和端口。
永久存储装置106可以包括任何种类的永久存储装置,例如诸如硬盘驱动器、固态存储装置、闪存驱动器等。永久存储装置106将用户数据存储为卷122A至122n,其表示用户可访问的一个或更多逻辑磁盘。卷122A至122n参考存储在各种数据结构(诸如存储器104中的元数据结构108)内的元数据来组织和管理。如图1所示,作为非限制性示例,持久存储装置经由存储阵列120实现。虽然数据存储单元在本文中被描述为存储阵列中的卷,但是应理解,可以采用其他数据存储单元或对象存储单元来实现实施方案的优点。
存储器104可以是任何种类的数字系统存储器,例如诸如随机存取存储器(RAM)。存储器104存储操作中的操作系统(OS,未描绘)(例如,Linux、UNIX、Windows、MacOS或类似操作系统)。存储器104还可以存储操作中的输入/输出(I/O)栈(未示出)。I/O栈允许针对由存储系统100管理的卷数据122A至122n处理来自外部主机(以及本地应用程序)的I/O请求(未描绘)。
存储器104还存储索引110,以用于跟踪与进行压缩的块相对应的元数据。在存储器104中提供哈希表111。哈希表111包含存储在系统中的页面的哈希值。对于每个新页面,经由哈希表执行匹配查找。哈希可能是确定性的(例如,20字节的SHA1被广泛认为是整个页面匹配)或者不是确定性的,这意味着哈希是不够的,并且需要整个页面比较。这同样适用于扇区。
当两个页面之间存在若干相同的扇区但有一个或多个扇区不同时,发生部分页面匹配。与标记相同扇区的元数据表示的部分匹配结果,并且仅存储那些唯一的扇区(即,不同的扇区)。
存储系统包括处理电路102,其可以是被配置为执行操作的任何类型的处理器或处理器组,例如诸如微处理器、多核微处理器、数字信号处理器、片上系统、电子电路的集合、类似类型的控制器或上述的任意组合。应理解,存储系统100还可以包括本领域公知的其他部件,包括互连电路。在操作中,处理电路102可以执行一个或多个应用,所述应用可以在可由处理电路执行的逻辑中实现。
处理电路102被配置为从通信地耦合到存储系统100的一个或多个外部或远程系统(未示出)接收和服务于输入/输出(IO)请求。耦合可以经由任何类型的通信网络(诸如互联网、局域网、广域网)实现,并且可以包括有线和/或无线技术。
卷122A至122n可以经由逻辑地址来寻址,所述逻辑地址通过三层间接方案映射到阵列的物理地址,所述三层间接方案用于在针对阵列的读取和写入操作期间执行地址转换。
在去重过程中,关于存储寻址的间接层可以用于在存储空间层之间转换或映射。(i)包含指向数据的指针的低层映射(叶),(ii)包含指向低层映射的指针的中层映射,以及(iii)顶层映射包含指向中层映射的指针。低层可以是逻辑块地址空间(LBA),中层可以是虚拟块地址空间(VLB),并且顶层可以是物理地址空间(PLB)。这些地址空间中的每一者都反映一系列地址。映射可以使用采用逻辑地址并使用指针指向VLB地址的数据结构来实现,所述VLB地址进而指向某个数据(例如,诸如页面)所驻留的物理地址(PLB)。
如图2所示,元数据数据结构(其对应于图1中的元数据结构108,可以在日志结构化存储(LSS)系统中实现)包括用于访问用户数据的三层间接方案。三层方案包括逻辑块地址(LBA)层(即,叶层)、虚拟块(VLB)层和物理块(PLB)层。叶是逻辑块地址(LBA)表示层,其通常被组织为树,其中每个叶对应于特定的LBA范围。在日志结构化存储系统中,数据存储在连续的数据块(称为PLB(例如,2MB块))中。实际用户数据页面驻留在PLB内并由VLB引用。
可以使用表示页面的唯一哈希来实现去重。所述系统可以包括去重索引,其表示大多数哈希(进而表示卷集群的最独特容量)。当子页面(例如,页面的几个扇区)在两个页面之间匹配(例如,部分页面是唯一的并且部分页面是公共的)时,发生部分页面匹配。
图2示出了集群中的两个部分匹配页面(分别为P1和P2、210和220)的数据结构200中的元数据的逻辑表示,对所述集群执行整个页面去重。如图2所示,两个页面P1和P2彼此分开维护(即,页面没有公共部分由系统维护)。页面的公共部分(即,表示重复数据)被示为212和222。页面P1还包含与P2不共有的数据214。同样,页面P2包含与页面P1不共有的数据224。因此,存储在页面P1(214)的部分中的数据不是存储在P2(224)中的数据的部分的副本。在图2的元数据结构200中,对于页面P1(210),页面的逻辑地址#1指向VLB条目#1,其进而指向页面P1。虚拟逻辑块(VLB)条目#1和#2对应于图1中的VLB 114。同样,在图2的元数据结构200中,对于页面P2(220),页面的逻辑地址#2指向VLB条目#2,其进而指向页面P2。逻辑地址#1和#2对应于图1中的逻辑块地址(LBA)112。页面P1和P2对应于图1中的物理块地址PLB 116。
在本文描述的一个非限制性实施方案中,一种用于标识两个页面之间的不同扇区并且通过对不同扇区执行的异或(XOR)运算每个扇区每个字节存储由XOR运算产生的一个信息位的技术。信息位指示第一页面中的字节是否与第二页面中的对应字节相同。如果在XOR运算中返回True或‘1’(或不同于‘0’)的输出的数量超过预定义阈值数量(例如,扇区中的字节总数的90%),则对XOR页面而不是原始页面执行压缩。否则,不满足阈值,则对原始页面执行压缩。本领域技术人员将理解,可以使用上述实施方案的替代方案。例如,即使所有位都是‘1’,但是仍然可能有良好的可压缩性(例如,页面及其逐位取非)。
不同的扇区可能源于许多因素,包括时间戳、序列号和表示扇区的极小部分的其他字段等。这可以包括在其中发现相同数据但数据由于例如时间戳或校验和字段而不同的区域,所述字段改变几个字节,由此导致扇区几乎相同或基本相同但不完全相同。
如上文所指出的,本文描述的实施方案存储不同扇区的压缩XOR结果而不是唯一数据。通过这种方式,考虑到大部分扇区是相同的(即,XOR结果页面由许多零组成),XOR将产生非常有效地压缩的扇区。
现在转到图3和图4A至图4C,现在将在实施方案中描述用于实现基于子扇区的容量缩减的过程300和示例性页面400A、400B和XOR扇区400C。图3的过程300假设请求或触发事件已经导致系统开始比较存储系统中的两个页面(在本文被称为第一(或候选)页面和第二(或目标)页面)。图3中描述的过程还假设两个页面的比较导致页面之间有相当数量的字节匹配。页面400A和400B各自例如为4K大小并且包含8个扇区,每个扇区(例如,代表性扇区404A和404B)包含512个字节。
在框302中,过程300针对候选页面和目标页面标识相同和/或几乎相同的扇区。图4A和图4B示出了两个页面400A和400B,其中一组扇区402A和402B分别相同或基本类似。作为非限制性示例,这可以通过访问(图1的)哈希表111并执行查找与页面相对应的扇区的哈希值或使用与相似(不仅是完全相同)扇区或页面关联的相似性哈希来完成。对扇区的查找产生扇区的哈希值,可以对所述哈希值进行比较以确定是否存在匹配或相似性。如果存在一个或多个扇区并将实际页面进行比较,则这些页面可以被认为是给定扇区的部分页面匹配。应理解,所述过程可以被扩展以不仅标识相同的扇区,而且还标识几乎相同的扇区,例如,仅相差少许数量或百分比的字节的那些扇区。
在框304中,过程300对页面的不同(或就相似性而言全部)扇区执行逐位异或(XOR)操作,并且在框306中将XOR运算的结果存储在XOR结构中。图4C示出了具有字节(B1至Bn)的字段的示例性XOR扇区400C。XOR扇区400C是指在确定使用哪个扇区(即,原始页面扇区或XOR扇区)来构建新参考页面并用于执行压缩的过程期间使用的中间结构。
框310至316中描述的过程提供了用于选择XOR扇区或原始扇区的启发式方法的非限制性示例。所述过程根据XOR运算的结果来确定熵,所述熵可以用于确定哪个扇区用于参考页面。熵可以指代数据的可预测性,诸如数据中的可检测模式或其缺乏。例如,如果某个数据出现在页面中,则下一条数据出现的可能性有多大。如果几乎没有可预测性,则这意味着数据中几乎没有可检测模式,这意味着它本身不适合压缩(例如,当页面中存在许多零字节时,确定该页面的熵低)。由于所述过程应对无损压缩(压缩算法的性能受页面的熵的限制),然而,由于我们可以找到相似的页面来对页面进行XOR,因此我们能够在不丢失数据的情况下减小页面的熵,由此允许无损压缩更有效(因为新页面的熵较低)。将理解,可以采用选择扇区的其他方式以便实现本文描述的实施方案的优点。例如,所述过程可以使用关于非零字节数的阈值来确定每个扇区的非零字节数,以确定是使用来自候选页面的原始扇区还是使用XOR扇区来构建参考页面。非零字节反映了这两个页面之间不同的字节。因此,在框308中,过程300确定将哪个扇区用于参考页面,如框310至316中所述。
在框310中,过程300根据XOR运算的结果来确定熵。所确定的熵可以是反映数据中的可检测模式的可量化值。
在框312中,过程300确定熵是小于还是等于预定义阈值。阈值可以是字节数或总字节数的百分比。如果熵等于或小于阈值,则这意味着页面之间的少量字节不同。在这种情况下,过程300使用XOR扇区来构建参考页面(并且稍后在框314中进行压缩)。否则,如果熵超过阈值,则过程300使用原始扇区(来自候选页面比较的扇区)来构建参考页面并且稍后在框316中进行压缩。在框318中,对参考页面(组合页面)执行压缩操作。
基于子扇区的容量缩减提供许多益处。例如,单个位足以指示唯一(候选)或经XOR的数据;因此,只需要很少的元数据。另外,所述过程涉及很少的计算工作,因为XOR运算很容易实现。此外,相邻扇区通常具有相同的高相似性概率,从而使得逐字节比较是有益的。
现在转到图5,现在将根据实施方案描述用于对页面(例如,来自图4的压缩页面)进行解压缩的过程500。
在框502中,过程500尝试读取用户页面。在框504,过程500确定用户页面是否是XOR扇区。如果是,则过程500在框506中读取用户页面和对应的参考页面。在框508中,过程500对XOR扇区和参考页面进行解压缩,并且在框510中,过程500将解压缩的结果返回给用户页面的请求者。
在框512中,当确定用户页面不是XOR扇区时(来自框504)时,过程500在框514中读取用户页面,在框516中对用户页面进行解压缩,并在框518中将解压缩结果返回给请求者。
图6示出了可以执行本文描述的处理的至少部分的示例性计算机600(例如,物理的或虚拟的)。计算机600包括处理器602、易失性存储器604、非易失性存储器606(例如,硬盘或闪存)、输出装置607以及图形用户界面(GUI)608(例如,鼠标、键盘、显示器)。非易失性存储器606存储计算机指令612、操作系统616和数据618。在一个示例中,计算机指令612由处理器602在易失性存储器604之外执行。在一个实施方案中,制品620包括非暂时性计算机可读指令。
处理可以在硬件、软件或两者的组合中实现。处理可以在可编程计算机/机器上执行的计算机程序中实现,每个可编程计算机/机器包括处理器、存储介质或处理器可读的其他制品(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和一个或多个输出装置。程序代码可以应用于使用输入装置输入的数据以执行处理并生成输出信息。
所述系统可以至少部分地经由计算机程序产品(例如,在机器可读存储装置中)执行处理,以由数据处理设备(例如,可编程处理器、计算机或多个计算机)执行或控制其操作。每个此类程序都可以用高级程序化或面向对象的编程语言来实现以与计算机系统通信。然而,程序可以用汇编语言或机器语言来实现。语言可以是编译语言或解译语言,并且其可以以任何形式部署,包括作为独立程序或作为模块、部件、子程序或适合在计算环境中使用的其他单元。计算机程序可以被部署为在一个计算机或多个计算机上执行,所述多个计算机位于一个站点处或跨多个站点分布并由通信网络互连。计算机程序可以存储在可由通用或专用可编程计算机读取的存储介质或装置(例如,CD-ROM、硬盘或磁盘)上,以用于在存储介质或装置被计算机读取时配置和操作计算机。处理也可以被实现为配置有计算机程序的机器可读存储介质,其中在执行时,计算机程序中的指令使计算机运行。
处理可以由执行一个或多个计算机程序以执行系统功能的一个或多个可编程处理器来执行。系统的全部或部分可以被实现为专用逻辑电路(例如,FPGA(现场可编程门阵列)和/或ASIC(专用集成电路))。
在已经描述了本发明的示例性实施方案后,现在对于本领域普通技术人员将变得显而易见的是,也可以使用结合了它们的概念的其他实施方案。本文所包含的实施方案不应限于所公开的实施方案,而应仅受所附权利要求的精神和范围的限制。本文中引用的所有公布和参考文献都全文以引用方式明确并入本文中。
本文中描述的不同实施方案的元件可经组合以形成未在上面具体阐述的其它实施方案。在单个实施方案的上下文中描述的各种元件也可以单独提供或以任何合适的子组合提供。本文未具体描述的其他实施方案也在所附权利要求的范围内。
Claims (20)
1.一种用于实现存储系统中的容量缩减的方法,所述方法包括:
对于所述存储系统中的候选页面和目标页面中的每一者,标识具有相同数据或最少指定量的不同数据的扇区子集;
对所述候选页面和所述目标页面的扇区执行逐位异或(XOR)运算;
根据所述XOR运算的结果来确定熵;以及
当确定所述熵小于或等于阈值时,根据包含所述逐位XOR运算的结果的XOR扇区构建参考页面,其中对所述参考页面执行压缩。
2.根据权利要求1所述的方法,其还包括:
当确定所述熵大于阈值时:
根据所述候选页面的对应扇区构建所述参考页面;以及
对所述参考页面执行所述压缩;
其中所述熵指示所述候选页面与所述目标页面之间的对应数据不同。
3.根据权利要求2所述的方法,其中根据所述XOR运算的结果来确定所述熵包括根据所述XOR运算的所述结果来确定每个扇区的非零字节的数量;
其中当确定所述非零字节的数量小于或等于所述阈值时,根据包含所述逐位XOR运算的结果的所述XOR扇区构建所述参考页面;并且
其中当确定所述非零字节的数量大于所述阈值时,根据所述候选页面的所述对应扇区构建所述参考页面。
4.根据权利要求1所述的方法,其中所述候选页面和所述目标页面被确定为关于所述相同数据或最少量的不同数据是部分匹配的。
5.根据权利要求1所述的方法,其中标识具有相同数据或所述最少指定量的不同数据的所述扇区子集包括从哈希表中检索所述扇区的标识符并将所述扇区的哈希值进行比较,其中当所述哈希值相同时,所述扇区中的所述数据被认为是匹配的。
6.根据权利要求1所述的方法,其中对所述扇区执行所述逐位XOR运算包括对所述不同数据执行所述逐位XOR运算。
7.根据权利要求1所述的方法,其中对所述扇区执行所述逐位XOR运算包括对具有所述最少指定量的不同数据的所有扇区执行所述逐位XOR运算。
8.根据权利要求1所述的方法,其还包括:
试图读取用户页面;以及
当确定所述用户页面是所述XOR扇区时:
读取所述用户页面和对应的参考页面;
对所述XOR扇区和所述参考页面进行解压缩;以及
将所述解压缩的结果返回给请求者。
9.根据权利要求8所述的方法,其还包括:
当确定所述用户页面不是所述XOR扇区时:
读取所述用户页面;
对所述用户页面进行解压缩;以及
将对所述用户页面进行解压缩的结果返回给所述请求者。
10.一种用于实现存储系统环境中的容量缩减的系统,所述系统包括:
存储器,所述存储器包括计算机可执行指令;以及
处理器,所述处理器执行所述计算机可执行指令,所述计算机可执行指令在由所述处理器执行时使所述处理器执行包括以下各项的操作:
对于所述存储系统中的候选页面和目标页面中的每一者,标识具有相同数据或最少指定量的不同数据的扇区子集;
对所述候选页面和所述目标页面的不在所述子集中的扇区执行逐位异或(XOR)运算;
根据所述XOR运算的结果来确定熵;并且
当确定所述熵小于或等于阈值时,根据包含所述逐位XOR运算的结果的XOR扇区构建参考页面,其中对所述参考页面执行压缩。
11.根据权利要求10所述的系统,其中所述操作还包括:
当确定所述熵大于阈值时:
根据所述候选页面的对应扇区构建所述参考页面;并且
对所述参考页面执行压缩操作;
其中所述熵指示所述候选页面与所述目标页面之间的对应数据不同。
12.根据权利要求11所述的系统,其中根据所述XOR运算的结果来确定所述熵包括根据所述XOR运算的所述结果来确定每个扇区的非零字节的数量;
其中当确定所述非零字节的数量小于或等于所述阈值时,根据包含所述逐位XOR运算的结果的所述XOR扇区构建所述参考页面;并且
其中当确定所述非零字节的数量大于所述阈值时,根据所述候选页面的所述对应扇区构建所述参考页面。
13.根据权利要求10所述的系统,其中所述候选页面和所述目标页面被确定为关于所述相同数据或最少量的不同数据是部分匹配的。
14.根据权利要求10所述的系统,其中标识具有相同数据或所述最少指定量的不同数据的所述扇区子集包括从哈希表中检索所述扇区的标识符并将所述扇区的哈希值进行比较,其中当所述哈希值相同时,所述扇区中的所述数据被认为是匹配的。
15.根据权利要求10所述的系统,其中对所述扇区执行所述逐位XOR运算包括对所述不同数据执行所述逐位XOR运算。
16.根据权利要求10所述的系统,其中对所述扇区执行所述逐位XOR运算包括对具有所述最少指定量的不同数据的所有扇区执行所述逐位XOR运算。
17.一种用于实现存储系统环境中的容量缩减的计算机程序产品,所述计算机程序产品体现在非暂时性计算机可读介质上,并且所述计算机程序产品包括指令,所述指令在由计算机执行时使所述计算机执行操作,所述操作包括:
对于所述存储系统中的候选页面和目标页面中的每一者,标识具有相同数据或最少指定量的不同数据的扇区子集;
对所述候选页面和所述目标页面的不在所述子集中的扇区执行逐位异或(XOR)运算;
根据所述XOR运算的结果来确定熵;
当确定所述熵小于或等于阈值时,根据包含所述逐位XOR运算的结果的XOR扇区构建参考页面,其中对所述参考页面执行压缩。
18.根据权利要求17所述的计算机程序产品,其中所述操作还包括:
当确定所述熵大于阈值时:
根据所述候选页面的对应扇区构建所述参考页面;并且
对所述参考页面执行所述压缩;
其中所述熵指示所述候选页面与所述目标页面之间的对应数据不同。
19.根据权利要求18所述的计算机程序产品,其中根据所述XOR运算的结果来确定所述熵包括根据所述XOR运算的所述结果来确定每个扇区的非零字节的数量;
其中当确定所述非零字节的数量小于或等于所述阈值时,根据包含所述逐位XOR运算的结果的所述XOR扇区构建所述参考页面;并且
其中当确定所述非零字节的数量大于所述阈值时,根据所述候选页面的所述对应扇区构建所述参考页面。
20.根据权利要求17所述的计算机程序产品,其中所述候选页面和所述目标页面被确定为关于所述相同数据或最少量的不同数据是部分匹配的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/666,729 | 2019-10-29 | ||
US16/666,729 US11068208B2 (en) | 2019-10-29 | 2019-10-29 | Capacity reduction in a storage system |
PCT/US2020/056781 WO2021086710A1 (en) | 2019-10-29 | 2020-10-22 | Capacity reduction in a storage system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114930725A true CN114930725A (zh) | 2022-08-19 |
Family
ID=73139479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080074823.2A Pending CN114930725A (zh) | 2019-10-29 | 2020-10-22 | 存储系统中的容量缩减 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11068208B2 (zh) |
EP (1) | EP4052374A1 (zh) |
CN (1) | CN114930725A (zh) |
WO (1) | WO2021086710A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230083104A1 (en) * | 2021-09-10 | 2023-03-16 | Vmware, Inc. | Efficiently Deleting Snapshots in a Log-Structured File System (LFS)-Based Storage System |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8311513B1 (en) * | 2007-06-27 | 2012-11-13 | ENORCOM Corporation | Automated mobile system |
US8447741B2 (en) | 2010-01-25 | 2013-05-21 | Sepaton, Inc. | System and method for providing data driven de-duplication services |
US20140244604A1 (en) | 2013-02-28 | 2014-08-28 | Microsoft Corporation | Predicting data compressibility using data entropy estimation |
WO2015128955A1 (ja) * | 2014-02-26 | 2015-09-03 | 株式会社日立製作所 | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 |
US10783145B2 (en) * | 2015-09-23 | 2020-09-22 | EMC IP Holding Company LLC | Block level deduplication with block similarity |
CN109948125B (zh) | 2019-03-25 | 2020-12-08 | 成都信息工程大学 | 改进的Simhash算法在文本去重中的方法及系统 |
-
2019
- 2019-10-29 US US16/666,729 patent/US11068208B2/en active Active
-
2020
- 2020-10-22 CN CN202080074823.2A patent/CN114930725A/zh active Pending
- 2020-10-22 WO PCT/US2020/056781 patent/WO2021086710A1/en unknown
- 2020-10-22 EP EP20803412.4A patent/EP4052374A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210124532A1 (en) | 2021-04-29 |
EP4052374A1 (en) | 2022-09-07 |
WO2021086710A1 (en) | 2021-05-06 |
US11068208B2 (en) | 2021-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719253B2 (en) | Efficient compression of data in storage systems through offloading computation to storage devices | |
US10664165B1 (en) | Managing inline data compression and deduplication in storage systems | |
US8954710B2 (en) | Variable length encoding in a storage system | |
US10956370B2 (en) | Techniques for improving storage space efficiency with variable compression size unit | |
US9454477B2 (en) | Logical sector mapping in a flash storage array | |
US9569357B1 (en) | Managing compressed data in a storage system | |
US11061827B2 (en) | Metadata representation for enabling partial page duplication | |
US10990310B2 (en) | Sub-block data deduplication | |
US10614038B1 (en) | Inline deduplication of compressed data | |
US9846718B1 (en) | Deduplicating sets of data blocks | |
US9935652B1 (en) | Data compression by hamming distance categorization | |
US9973210B1 (en) | Reduction of execution stalls of LZ4 decompression via parallelization | |
US11157188B2 (en) | Detecting data deduplication opportunities using entropy-based distance | |
US20210034578A1 (en) | Inline deduplication using neighboring segment loading | |
US11106374B2 (en) | Managing inline data de-duplication in storage systems | |
JPWO2017141315A1 (ja) | ストレージ装置 | |
US11379524B2 (en) | Multiple overlapping hashes at variable offset in a hardware offload | |
US11048432B2 (en) | Deduplication of data on distributed storage system involving receiving and modifying metadata from local object store | |
US11068208B2 (en) | Capacity reduction in a storage system | |
US11099756B2 (en) | Managing data block compression in a storage system | |
US11144533B1 (en) | Inline deduplication using log based storage | |
US11403233B2 (en) | Determining capacity in a global deduplication system | |
US11074232B1 (en) | Managing deduplication of data in storage systems | |
US11138129B2 (en) | Globally optimized partial page deduplication of storage objects | |
US11954079B2 (en) | Inline deduplication for CKD using hash table for CKD track meta data |
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 |