在存储服务器中进行数据压缩管理的方法及设备与流程

文档序号:21970124发布日期:2020-08-25 18:59阅读:193来源:国知局
本发明是关于数据存储,尤指一种在一存储服务器中进行数据压缩管理的方法及设备(apparatus)。
背景技术
::数据压缩对于节省一数据服务器的存储空间可带来帮助,然而在通过数据压缩节省存储空间时可能会发生某些问题。由于用户可能会改变,某些类型的数据可被接收以存储在所述数据服务器中,而对这些类型的数据进行数据压缩可能相当耗时,造成所述数据服务器的整体效能降低。因此,需要一种新颖的方法及相关架构,以在没有副作用或较不会带来副作用的情况下解决现有技术的问题。技术实现要素:因此,本发明的一目的在于提供一种在一存储服务器中进行数据压缩管理的方法及设备,以解决上述问题。本发明的另一目的在于提供一种在一存储服务器中进行数据压缩管理的方法及设备,以在没有副作用或较不会带来副作用的状况下达到最佳效能。本发明至少一实施例提供一种在一存储服务器中进行数据压缩管理的方法,其中所述方法被施加于(appliedto)所述存储服务器。所述方法可包括:自一主装置(hostdevice)接收数据,其中所述数据包括多组局部数据(partialdata);分别对所述多组局部数据进行熵(entropy)侦测以产生所述多组局部数据的多个熵侦测值,其中所述多组局部数据中的任一组局部数据的一熵侦测值是关于用来表示所述任一组局部数据中的多个数据单元中的一数据单元所需的一平均比特数(averagenumberofbits);分别依据所述多组局部数据的所述多个熵侦测值对所述多组局部数据进行分类,以通过多个数据压缩模块分别对所述多组局部数据的至少一部分进行数据压缩,其中所述多个数据压缩模块分别对应不同的压缩能力;以及将所述多组局部数据存储至所述存储服务器的至少一存储装置,并且分别记录所述多组局部数据的地址映射信息(addressmappinginformation),其中所述多组局部数据的所述至少一部分被存储为其压缩后数据以节省所述存储服务器的存储空间。本发明至少一实施例提供一种在一存储服务器中进行数据压缩管理的设备,其中所述设备可包括位于所述存储服务器内且用来控制所述存储服务器的运作的一控制电路,且所述控制电路可包括一基于熵的(entropy-based)分类电路。尤其,所述控制电路控制所述存储服务器自一主装置接收数据,其中所述数据包括多组局部数据。另外,所述基于熵的分类电路可用来进行基于熵的分类。例如,所述基于熵的分类电路分别对所述多组局部数据进行熵侦测以产生所述多组局部数据的多个熵侦测值,其中所述多组局部数据中的任一组局部数据的一熵侦测值是关于用来表示所述任一组局部数据中的多个数据单元中的一数据单元所需的一平均比特数。所述基于熵的分类电路分别依据所述多组局部数据的所述多个熵侦测值对所述多组局部数据进行分类,以通过多个数据压缩模块分别对所述多组局部数据的至少一部分进行数据压缩,其中所述多个数据压缩模块分别对应不同的压缩能力。此外,所述控制电路可用来将所述多组局部数据存储至所述存储服务器的至少一存储装置,并且分别记录所述多组局部数据的地址映射信息,其中所述多组局部数据的所述至少一部分被存储为其压缩后数据以节省所述存储服务器的存储空间。本发明的方法以及相关设备能确保所述存储服务器在各种状况下均能妥善地运作。例如,所述方法为存储控制提供多个控制方案以提升所述存储服务器的效能,其中整体的压缩速率能被大幅地增加且对于进行去重复(de-duplicate)处理的准备(例如散列(hash)比较)能进行得非常快速。相较于现有技术,依据本发明实施的存储服务器能具有较佳的效能。附图说明图1为依据本发明一实施例的一存储服务器的示意图。图2为依据本发明一实施例的在一存储服务器中进行数据压缩管理的方法的工作流程。图3依据本发明一实施例绘示所述方法的一控制方案。图4依据本发明一实施例绘示图3所示的控制方案的某些实施细节。图5依据本发明一实施例绘示所述方法的熵等级与熵侦测值之间的映射关系。图6依据本发明另一实施例绘示所述方法的熵等级与熵侦测值之间的映射关系。图7绘示一数据分布曲线在图6所示的实施例中的例子。图8依据本发明另一实施例绘示所述方法的一控制方案。图9为依据本发明另一实施例的一存储服务器的示意图。其中,附图标记说明如下:100存储服务器110处理电路110p程序模块112数据压缩管理模块120存储接口电路130、131、132…存储装置140网络接口电路200工作流程s10、s21、s22、s23步骤300、800设备310上层320主接口电路330、430基于熵的分类电路340、441、442、443、dcm(1)、dcm(2)、…、dcm(x-1)数据压缩电路350缓冲器360下层el、el(1)、el(2)、…、el(x)、el(3)、el(4)、el(5)、el(6)、el(7)、el(8)熵等级a(1)、a(2)、…、a(x-1)、n(1)、n(2)、…、n(x-1)数据压缩控制参数cd(1)、cd(2)、…、cd(x-1)压缩后数据430基于熵的分类电路e熵侦测值cnt数据量820散列产生器830多路分用器840、ht(1)、ht(2)、…、ht(x)散列记录表850多路选择器860比较器hv、hv(1)、hv(2)散列值g(1)、g(2)、…、g(x)散列值群111驱动器模块122数据压缩管理模块具体实施方式本发明的实施例提供一种在一存储服务器中进行数据压缩管理的方法及设备,且所述设备可包括所述存储服务器的至少一部分(例如一部分或全部)。例如,所述设备可包括所述存储服务器的一部分,诸如位于所述存储服务器内的一控制电路(例如运行对应于所述方法的一或多个程序模块的一处理电路、以及包括有对应于所述方法的一或多个子电路的一存储接口电路)。又例如,所述设备可包括所述存储服务器的整体。图1为依据本发明一实施例的一存储服务器100的示意图。存储服务器100可包括用来控制存储服务器100的运作的一处理电路110(例如至少一处理器以及相关电路诸如随机存取存储器(randomaccessmemory,ram)、总线等)、用来将存储或记忆装置(例如一或多个硬式磁盘驱动器(harddiskdrive,hdd)及/或一或多个固态硬盘(solidstatedrive,ssd))耦接于存储服务器100的一存储接口电路120、以及用来将存储服务器100耦接于至少一网络的一网络接口电路140。上述存储或记忆装置可包括至少一存储装置诸如一或多个存储装置,其可被统称为存储装置130。例如,存储装置130可包括一组存储装置{131,132,…},其中它们的其中一者可被利用来作为存储服务器100的一系统碟,而其它的可用来为存储服务器100存储用户数据,但本发明不限于此。依据本实施例,运行着程序模块110p(尤指对应于所述方法的一数据压缩管理模块112)的处理电路110可用来依据所述方法控制存储服务器100的运作,以及存储接口电路120可符合一或多个标准(例如串行高级技术附件(serialadvancedtechnologyattachment,可简称“串行ata”或“sata”)标准、外设组件互联(peripheralcomponentinterconnect,pci)标准、快捷外设互联(peripheralcomponentinterconnectexpress,pcie)标准、非挥发性存储器快捷(non-volatilememoryexpress,nvme)标准、结构上非挥发性存储器快捷(nvme-over-fabrics,nvmeof)标准、小型计算机系统接口(smallcomputersysteminterface,scsi)标准等中的一或多者),且可依据所述一或多个标准来进行通信以容许运行着程序模块110p的处理电路110通过存储接口电路120存取存储装置130。另外,网络接口电路140可用来提供有线或无线网络连接,且对应于一或多个用户的一或多个主装置可通过上述有线或无线网络连接在存储服务器100中存取(读或写)用户数据。为便于理解,存储服务器100以及在图1所示的架构中的相关电路/模块/装置(例如运行着程序模块110p的处理电路110、及存储接口电路120)可分别作为上述存储服务器及其相关电路/模块/装置(例如,运行对应于所述方法的所述一或多个程序模块、以及包括有对应于所述方法的所述一或多个子电路的所述存储接口电路)的例子。依据某些实施例,运行着程序模块110p的处理电路110或存储接口电路120可配置所述组存储装置{131,132,…}的至少一部分(一部分或全部)形成存储服务器100的一容错式磁盘阵列(redundantarrayofindependentdisks,raid)。例如,所述组存储装置{131,132,…}的上述至少一部分可被安装在存储服务器100中来形成所述容错式磁盘阵列诸如一全闪存阵列(allflasharray,afa)。图2为依据本发明一实施例的在所述存储服务器中进行数据压缩管理的方法的工作流程200。所述方法能被施加于包括有运行着程序模块110p(例如对应于所述方法的数据压缩管理模块112)的处理电路110的存储服务器100,其中所述控制电路诸如运行着数据压缩管理模块112的处理电路110可控制存储服务器100依据所述发明来运作。在步骤s10中,存储服务器100可自一主装置接收局部数据。例如,所述主装置可通过上述有线或无线网络连接来被链接到存储服务器100。依据本实施例,所述控制电路(例如运行着数据压缩管理模块112的处理电路110)可控制存储服务器100自所述主装置接收数据,其中所述数据可包括多组局部数据。在步骤s10中所述的局部数据可代表所述多组局部数据中的任一组局部数据。在步骤s21中,存储服务器100可对所述局部数据进行熵(entropy)侦测以产生一熵侦测值,诸如所述多组局部数据中的上述任一组局部数据的熵侦测值。依据本实施例,所述控制电路(例如运行着数据压缩管理模块112的处理电路110)可分别对所述多组局部数据进行熵侦测以产生所述多组局部数据的多个熵侦测值,其中所述熵侦测值是所述多个熵侦测值的其中一者。所述熵侦测值可以是关于用来表示上述任一组局部数据中的多个数据单元中的一数据单元所需的一平均比特数(averagenumberofbits),例如与所述平均比特数具有正相关,尤指与所述平均比特数成比例。例如,所述熵侦测值可为指出用来存储这组局部数据的压缩版本的每数据单元比特数(numberofbitsperdataunit)的一估计值。为便于理解,假设用来表示所述数据单元所需的所述平均比特数等于一估计数诸如e。另外,所述多个数据单元的每一者的一预定比特数(predeterminednumberofbits)可为每一字节(byte)的比特数(即8),表示所述多个数据单元可为多个字节,但本发明不限于此。用来表示所述数据单元所需的所述平均比特数(例如e)可小于或等于所述多个数据单元的每一者的所述预定比特数(例如8)。依据本实施例,上述任一组局部数据的所述熵侦测值可包括一整数部分以及一小数部分,而形成所述小数部分的位数(numberofdigits)是在一预定位数(predetermineddigitcount)诸如某一位数n以内。依据某些实施例,所述熵侦测值可等于用来表示所述数据单元所需的所述平均比特数(例如e),因此可被称为熵侦测值e。例如,在n=5的情况下,熵侦测值e(例如e=4.48976)在其小数部分(例如4.48976的“48976”)具有5位数。在步骤s22中,存储服务器100可依据所述熵侦测值对所述局部数据进行分类,以通过多个数据压缩模块的其中一者选择性地对所述局部数据进行数据压缩。依据本实施例,所述控制电路(例如运行着数据压缩管理模块112的处理电路110)可分别依据所述多组局部数据的所述多个熵侦测值对所述多组局部数据进行分类,以通过所述多个数据压缩模块分别对所述多组局部数据的至少一部分(例如一部分或全部)进行数据压缩,其中所述多个数据压缩模块分别对应不同的压缩能力。例如,在所述多组局部数据的上述至少一部分中,分别对应于两个不同的分类结果的两组局部数据可分别以所述多个数据压缩模块的其中两者来压缩。在步骤s23中,存储服务器100可将所述局部数据存储至存储装置130并且记录所述局部数据的地址映射信息。依据本实施例,所述控制电路(例如运行着数据压缩管理模块112的处理电路110)可将所述多组局部数据存储至存储服务器100的至少一存储装置诸如存储装置130,并且分别记录所述多组局部数据的地址映射信息,其中所述多组局部数据的上述至少一部分可被存储为其压缩后数据以节省存储服务器100的存储空间。例如,所述多组局部数据的所述地址映射信息可分别指出所述多组局部数据被存储的位置(例如,存储装置130中的所述多组局部数据的重映射(re-mapped)逻辑地址)。为便于理解,所述方法可通过工作流程200来说明,但本发明不限于此。依据某些实施例,一或多个步骤可于工作流程200中被新增、删除、或修改。图3依据本发明一实施例绘示所述方法的一控制方案。设备300可包括一上层310,并且包括所述控制电路的多个子电路诸如一主接口电路(hostinterfacecircuit)320、一基于熵的(entropy-based)分类电路330以及多个数据压缩电路340,并且可还包括一缓冲器350以及一下层360,其中所述多个数据压缩电路340可包括分别依据相关数据压缩控制参数{(a(1),n(1)),(a(2),n(2)),…,(a(x-1),n(x-1))}运作的一组数据压缩电路{dcm(1),dcm(2),…,dcm(x-1)}。设备300可作为上述设备的一个例子,而所述组数据压缩电路{dcm(1),dcm(2),…,dcm(x-1)}可作为所述多个数据压缩模块的例子。依据本实施例,基于熵的分类电路330可用来进行基于熵的分类。尤其,基于熵的分类电路330可分别对所述多组局部数据进行熵侦测以产生所述多组局部数据的多个熵侦测值(例如步骤s21的运作),并且可分别依据所述多组局部数据的所述多个熵侦测值分别对所述多组局部数据进行分类,以通过所述多个压缩模块分别对所述多组局部数据的上述至少一部分进行数据压缩(例如步骤s22的运作)。如图3所示,所述多组局部数据可分为不同熵等级的局部数据,诸如一第一熵等级el(1)的一或多组局部数据、一第二熵等级el(2)的一或多组局部数据、…、一第(x-1)熵等级el(x-1)的一或多组局部数据以及一第x熵等级el(x)的一或多组局部数据。另外,上述任一组局部数据的一分类结果可指出上述任一组局部数据的熵侦测值是否落在一预定范围(例如用来判断是否需要数据压缩的某一范围)内。因应所述分类结果,基于熵的分类电路330可判断是否通过所述多个数据压缩模块的其中一者对这组局部数据进行数据压缩,其中是否对这组局部数据进行数据压缩对应于所述熵侦测值是否落在所述预定范围内。假设符号“t”代表一预定阈值。以表示所述数据单元所需的所述平均比特数(例如e)为所述熵侦测值的一个例子,若(e/8)<t(即e<(8*t)),基于熵的分类电路330判断需要进行数据压缩;否则,表示(e/8)≥t(即e≥(8*t)),基于熵的分类电路330判断不需要进行数据压缩。例如,所述分类结果可指出这组局部数据属于第x熵等级el(x)(例如在(e/8)≥t的情况下),而基于熵的分类电路330可发送这组局部数据至缓冲器350以将其存储至下层360。又例如,所述分类结果可指出这组局部数据属于其它熵等级{el(1),el(2),…,el(x-1)}中的被侦测到的熵等级el(x0)(例如在(e/8)<t的情况下),而基于熵的分类电路330可发送这组局部数据至对应于侦测到的熵等级el(x0)的数据压缩电路dcm(x0)(例如数据压缩电路{dcm(1),dcm(2),…,dcm(x-1)}的其中一者),其中符号x0可代表落在区间[1,x-1]内的一正整数。因此,数据压缩电路dcm(x0)可对这组局部数据进行数据压缩以产生其压缩后数据cd(x0)(例如压缩后数据{cd(1),cd(2),…,cd(x-1)}的其中一者),并且发送压缩后数据cd(x0)至缓冲器350以将其存储至下层360。基于图1所示的架构,图3所示的设备300中的所述控制电路可由运行着数据压缩管理模块112的处理电路110来实施。在此状况下,上层310以及下层360可分别代表一用户请求层(例如存储服务器100的一操作系统(operatingsystem,os)的一文件系统)以及存储装置130,缓冲器350可代表存储服务器100中的一存储器(例如一静态随机存取存储器(staticram,sram)或一动态随机存取存储器(dynamicram,dram),其可位于处理电路110或存储接口电路120中),以及主接口电路320、基于熵的分类电路330以及多个数据压缩电路340可分别代表运行着数据压缩管理模块112的多个相关子模块(其可分别关联于设备300的这些组件)的处理电路110。图4依据本发明一实施例绘示图3所示的控制方案的某些实施细节。基于熵的分类电路430可作为基于熵的分类电路330的一个例子,以及数据压缩电路441、442以及443可分别为数据压缩电路{dcm(1),dcm(2),…,dcm(x-1)}的例子,其中在本实施例中x=4。依据本实施例,所述多组局部数据的上述至少一部分可包括一第一组局部数据(例如一较高熵等级的局部数据)以及一第二组局部数据(例如一较低熵等级的局部数据)。为便于理解,所述第一组局部数据可具有比特0及1的复杂混合(complicatedmixture)(例如在所述第一组局部数据的全部比特中分别为70%及30%,或者在所述第一组局部数据的全部比特中分别为30%及70%),以及所述第二组局部数据可具有比特0及1的非复杂混合(non-complicatedmixture)(例如在所述第二组局部数据的全部比特中分别为99.99%及0.01%,或者在所述第二组局部数据的全部比特中分别为0.01%及99.99%),但本发明不限于此。例如,所述第一组局部数据的一第一分类结果指出所述第一组局部数据的一第一熵侦测值落在所述预定范围的一第一子范围内,以及所述第二组局部数据的一第二分类结果指出所述第二组局部数据的一第二熵侦测值落在所述预定范围的一第二子范围内。另外,因应所述第一分类结果,基于熵的分类电路430可通过所述多个数据压缩模块中的一第一数据压缩模块(诸如数据压缩电路441、442及443的其中一者)对所述第一组局部数据进行数据压缩,其中所述预定范围的所述第一子范围关联于所述第一数据压缩模块。因应所述第二分类结果,基于熵的分类电路430可通过所述多个数据压缩模块中的一第二数据压缩模块(诸如数据压缩电路441、442及443的其中另一者)对所述第二组局部数据进行数据压缩,其中所述预定范围的所述第二子范围关联于所述第二数据压缩模块。例如,在所述多个数据压缩模块(诸如数据压缩电路441、442及443)中,对应于一第一等级的压缩能力的一第一数据压缩模块可被利用来作为所述第一数据压缩模块,以及对应于一第二等级的压缩能力的一第二数据压缩模块可被利用来作为所述第二数据压缩模块。假设所述第一组局部数据的所述第一熵侦测值大于所述第二组局部数据的所述第二熵侦测值,基于熵的分类电路430可分别利用对应于所述第一等级的压缩能力的所述第一数据压缩模块以及对应于所述第二等级的压缩能力的所述第二数据压缩模块来对所述第一组局部数据以及所述第二组局部数据进行数据压缩,其中所述第一等级的压缩能力低于所述第二等级的压缩能力。如图4所示,基于熵的分类电路430可以依照16千字节(kilobytes,kb)为单位来接收所述数据,且所述多组局部数据的每一组可具有4kb的共同大小,其中所述多组局部数据可载有(carry)各自的信息(information,可简称为“inf”)。例如,基于熵的分类电路430可朝向缓冲器350发送第x熵等级el(x)(例如在本实施例中x=4)的所述一或多组局部数据作为非压缩数据,诸如基于熵的分类电路430的右手边所示。基于熵的分类电路430可朝向数据压缩电路dcm(x-1)诸如数据压缩电路443发送第(x-1)熵等级el(x-1)(例如在本实施例中(x-1)=3)的所述一或多组局部数据,以产生压缩后数据cd(x-1)诸如数据压缩电路443的右手边所绘示。基于熵的分类电路430可朝向数据压缩电路dcm(2)诸如数据压缩电路442发送第二熵等级el(2)的所述一或多组局部数据,以产生压缩后数据cd(2)诸如数据压缩电路442的右手边所绘示。基于熵的分类电路430可朝向数据压缩电路dcm(1)诸如数据压缩电路441发送第一熵等级el(1)的所述一或多组局部数据,以产生压缩后数据cd(1)诸如数据压缩电路441的右手边所绘示。另外,数据压缩电路dcm(x0)(例如在本实施例中x0=1、2或3)诸如数据压缩电路441、442及443的其中一者可产生一系列的压缩后数据,诸如侦测到的熵等级el(x0)的n_x0(例如n1、n2或n3)组局部数据的压缩后版本,并且可新增对应所述系列的压缩后数据的一标头(header,可简称为“hdr”),其中所述标头可指出所述系列的压缩后数据的各自的位置。例如,在x0=1且n_x0=n1的情况下,数据压缩电路441可产生带有对应的标头的n1组压缩后数据(例如熵等级el(1)的n1组局部数据的压缩后版本),诸如数据压缩电路441的右手边所绘示。在x0=2且n_x0=n2的情况下,数据压缩电路442可产生带有对应的标头的n2组压缩后数据(例如熵等级el(2)的n2组局部数据的压缩后版本),诸如数据压缩电路442的右手边所绘示。在x0=3且n_x0=n3的情况下,数据压缩电路443可产生带有对应的标头的n3组压缩后数据(例如熵等级el(3)的n3组局部数据的压缩后版本),诸如数据压缩电路443的右手边所绘示。依据某些实施例,熵等级el(1)的所述n1组局部数据中的一组局部数据可具有比特0及1的非复杂混合。例如,所述组局部数据的全部比特的95%或以上可为比特0,或者所述组局部数据的全部比特的95%或以上可为比特1。另外,熵等级el(2)的所述n2组局部数据中的一组局部数据可具有比特0及1的略微复杂混合。例如,所述组局部数据的全部比特的90%~95%可为比特0,或者所述组局部数据的全部比特的90%~95%可为比特1。此外,熵等级el(3)的所述n3组局部数据中的一组局部数据可具有比特0及1的复杂混合。例如,所述组局部数据的全部比特的60%~90%可为比特0,或者所述组局部数据的全部比特的60%~90%可为比特1。再者,熵等级el(4)的一组局部数据可具有比特0及1的极度复杂混合。例如,所述组局部数据的全部比特的50%~60%可为比特0,或者所述组局部数据的全部比特的50%~60%可为比特1。图5依据本发明一实施例绘示所述方法的熵等级el与熵侦测值e之间的映射关系,其中熵侦测值e在本实施例中可落在区间[0,8]内,但本发明不限于此。例如,若熵侦测值e小于3,熵等级el可等于熵等级el(1);若熵侦测值e达到(例如大于或等于)3且小于5,熵等级el可等于熵等级el(2);若熵侦测值e达到(例如大于或等于)5且小于7,熵等级el可等于熵等级el(3);否则(例如熵侦测值e大于或等于7),熵等级el可等于熵等级el(4)。图6依据本发明另一实施例绘示所述方法的熵等级el与熵侦测值e之间的映射关系,其中熵侦测值e在本实施例中可落在区间[0,8]内,但本发明不限于此。例如,若熵侦测值e小于1.5,熵等级el可等于熵等级el(1);若熵侦测值e达到(例如大于或等于)1.5且小于2.5,熵等级el可等于熵等级el(2);若熵侦测值e达到(例如大于或等于)2.5且小于3.25,熵等级el可等于熵等级el(3);若熵侦测值e达到(例如大于或等于)3.25且小于4,熵等级el可等于熵等级el(4);若熵侦测值e达到(例如大于或等于)4且小于4.75,熵等级el可等于熵等级el(5);若熵侦测值e达到(例如大于或等于)4.75且小于5.5,熵等级el可等于熵等级el(6);若熵侦测值e达到(例如大于或等于)5.5且小于6.5,熵等级el可等于熵等级el(7);否则(例如熵侦测值e大于或等于6.5),熵等级el可等于熵等级el(8)。依据本实施例,所述多组局部数据中的大多数的组的局部数据被侦测到其熵侦测值e落在区间[2.5,5.5]内,因此,区间[2.5,5.5]相较于其它区间[0,2.5]及[5.5,8]具有较多的等级转变(诸如熵等级el的转变)。图7绘示一数据分布曲线在图6所示的实施例中的例子。图7所示的横轴可代表熵侦测值e并且可具有与图6相同的尺度(scale),而图7所示的纵轴可代表对应于“熵侦测值e的某一数值”的数据量cnt,诸如对应于“熵侦测值e的上述某一数值”的“局部数据的组数”。参考图7所示的曲线,相较于熵侦测值e落在区间[0,2.5]及[5.5,8]中的任一者的情况,在熵侦测值落在区间[2.5,5,5]的情况下数据量cnt较大,指出所述多组局部数据中的大多数的组的局部数据被侦测到其熵侦测值e落在区间[2.5,5.5]内。于是,在图6中,区间[2.5,5.5]相较于其它区间[0,2.5]及[5.5,8]具有较多的等级转变。图8依据本发明另一实施例绘示所述方法的一控制方案,且图8所示的设备800可作为图3所示的设备300的一个例子。除了图3所示的架构中的那些组件以外,设备800可还包括一散列(hash)产生器820、一多路分用器(de-multiplexer)830(为简明起见,于图8中标示为“demux”)、多个散列记录表840、一多路选择器(multiplexer)850(为简明起见,于图8中标示为“mux”)以及一比较器860(为简明起见,于图8标示为“cmp”),其中多个散列记录表840可包括分别对应于熵等级{el(1),el(2),…,el(x)}的一组散列记录表{ht(1),ht(2),…,ht(x)}。依据本实施例,散列产生器820可分别产生所述多组局部数据的多个散列值,诸如自散列产生器820输出的一系列散列值{hv}。例如,多路分用器830可接收到某一组局部数据的一散列值(例如所述系列散列值{hv}的一散列值)作为散列值hv(0),并且可依据这组局部数据的一分类结果对散列值hv(0)进行多路分用(de-multiplexing),其中此时图8所示的熵等级el(熵等级{el(1),el(2),…,el(x)}的其中一者)可代表这组局部数据的所述分类结果。为便于理解,假设此时图8所示的熵等级el等于熵等级el(x)(例如,符号x可代表落在区间[1,x]内的一正整数)。这组局部数据的所述分类结果诸如熵等级el(x)可指出这组局部数据的所述散列值应被存储至所述组散列记录表{ht(1),ht(2),…,ht(x)}中的对应的散列记录表ht(x)。类似的运作可对所述系列的散列值{hv}中的某些其它散列值来进行。因此,依据所述多组局部数据的分类,设备800可将所述多个散列值中的多群(group)散列值{g(1),g(2),…,g(x)}分别存储至所述多个散列记录表840诸如所述组散列记录表{ht(1),ht(2),…,ht(x)}。例如,所述多群散列值{g(1),g(2),…,g(x)}可分别对应于所述多个熵侦测值的不同的可能范围,诸如熵侦测值e的x个可能范围(例如,图5所示的由垂直虚线所分隔出的熵侦测值e的四个范围,或者图6所示的由垂直虚线所分隔出的熵侦测值e的八个范围)。另外,因应针对所述数据中的一目前组局部数据的一散列值hv(2)与所述多群散列值{g(1),g(2),…,g(x)}的其中一者中的一散列值hv(1)之间的比较的一比较结果,设备800可对所述目前组局部数据进行去重复(de-duplicate)处理。例如,多路选择器850可依据所述目前组局部数据的一分类结果自所述多个散列记录表840选择一散列记录表,其中此时图8所示的熵等级el(例如熵等级{el(1),el(2),…,el(x)}的其中一者)可代表所述目前组局部数据的所述分类结果。为便于理解,假设此时图8所示的熵等级el等于熵等级el(x2)(例如符号x2可代表落在区间[1,x]内的一正整数)。所述目前组局部数据的所述分类结果诸如熵等级el(x2)可指出散列记录表ht(x2)应自所述组散列记录表{ht(1),ht(2),…,ht(x)}被选择出来。于是,多路选择器850可依据这个分类结果诸如熵等级el(x2)自所述组散列记录表{ht(1),ht(2),…,ht(x)}选择散列记录表ht(x2),其中散列记录表ht(x2)存储有所述多群散列值{g(1),g(2),…,g(x)}的上述其中一者,诸如对应的这群散列值g(x2)。请注意,散列值hv(1)可代表一先前组局部数据的一散列值,其中所述多组局部数据可包括所述先前组局部数据,以及所述多个散列值可包括所述先前组局部数据的所述散列值。所述先前组局部数据的所述散列值诸如散列值hv(1)已预先被存储至散列记录表ht(x2),以作为所述群散列值g(x2)的一散列值。上述某一组局部数据的上述散列值可作为所述先前组局部数据的所述散列值的一个例子,而对所述先前组局部数据的所述散列值进行的运作可与对上述某一组局部数据的上述散列值进行的运作类似。例如,关于预先存储所述先前组局部数据的所述散列值,设备800已依据所述先前组局部数据的所述分类结果自所述多个散列记录表840选择散列记录表ht(x2),并且已将所述先前组局部数据的所述散列值存储至散列记录表ht(x2),其中所述多群散列值的上述其中一者中的所述散列值可代表所述先前组局部数据的所述散列值。因此,设备800可利用多路选择器850自散列纪录表ht(x2)取得所述先前组局部数据的所述散列值以作为散列值hv(1)。另外,设备800可利用比较器860将所述目前组局部数据的所述散列值(例如散列值hv(2))与所述先前组局部数据的所述散列值(例如散列值hv(1))进行比较以产生所述比较结果,其中所述比较结果可指出所述目前组局部数据的所述散列值匹配(尤其,等于)所述先前组局部数据的所述散列值。于是,设备800可相对于所述先前组局部数据而对所述目前组局部数据进行去重复处理以节省存储服务器100的存储空间。例如,设备800可存储所述目前组局部数据的链接信息(例如一硬链接(hard-link)等)以供参考所述先前组局部数据,并且可在需要时读取所述先前组局部数据的数据内容作为所述目前组局部数据的数据内容,但本发明不限于此。基于图8所示的控制方案,设备800能轻易且有效率地进行散列比较,且不需要将所述目前组局部数据的所述散列值(例如散列值hv(2))与已被存储的每个存在的散列值(例如已被存储于多个散列记录表840中的散列值的每一者)进行比较。在所述多组局部数据中,载有不同内容的信息的各个组应分别具有不同的散列值。由于对应于不同分类结果的任两组局部数据(例如不同熵侦测等级的局部数据)应分别载有不同内容的信息,且由于对应于不同分类结果的上述任两组局部数据的各自的散列值应分别被存储至所述多群散列值{g(1),g(2),…,g(x)}中的不同群,因此不必将对应于不同分类结果的上述任两组局部数据的各自的散列值进行比较。设备800能将所述目前组局部数据的所述散列值(例如散列值hv(2))与所选择的群的散列值(诸如所述先前组局部数据的所述散列值(例如散列值hv(1)))进行比较,以避免不必要的比较(例如将对应于不同分类结果的上述任两组局部数据的各自的散列值进行比较),且因此在判断是否能对所述目前组局部数据进行去重复处理之前提升整体散列比较速度。于是,整体压缩速率能被大幅增加,且为进行去重复处理的准备(例如散列比较)能进行得非常快速。相较于现有技术,依据本发明实施的存储服务器100能具有较佳的效能。关于图8所示的控制方案的某些细节可描述如下。依据某些实施例,所述比较结果可指出所述目前组局部数据的所述散列值应属于如所述多群散列值的上述其中一者的相同的群。例如,所述比较结果可指出所述目前组局部数据的所述散列值等于所述先前组局部数据的所述散列值。在此状况下,所述目前组局部数据与所述先前组局部数据应具有相同内容的信息。为简明起见,于这些实施例中类似的内容在此不重复赘述。依据某些实施例,设备800能依据上述任一组局部数据的所述分类结果自所述多个散列记录表840选择一散列记录表,以供存储这组局部数据的一散列值。例如,当上述任一组局部数据代表上述某一组局部数据,所述分类结果以及所述散列记录表可分别代表熵等级el(x)以及对应的散列记录表ht(x)。为简明起见,于这些实施例中类似的内容在此不重复赘述。基于图1所示的架构,于图8所示的设备800中的所述控制电路可由运行着数据压缩管理模块112的处理电路110来实施。在此状况下,设备800的上层310以及下层360(诸如图3所示的设备300的上层310以及下层360)可分别代表上述用户请求层(例如存储服务器100的所述操作系统的所述文件系统)以及存储装置130,设备800的缓冲器350(诸如图3所示的设备300的缓冲器350)可代表存储服务器100中的上述存储器(例如所述静态随机存取存储器或所述动态随机存取存储器,其可位于处理电路110或存储接口电路120中),以及设备800的主接口电路320(诸如图3所示的设备300的主接口电路320)及基于熵的分类电路330、所述多个数据压缩电路340、散列产生器820、多路分用器830、所述多个散列记录表840、多路选择器850以及比较器860可分别代表运行着数据压缩管理模块112中的多个相关子模块(其可分别关联于设备800的这些组件)的处理电路110。如以上某些实施例所述,所述控制电路可实施为存储服务器100的处理电路110,诸如运行着数据压缩管理模块112的处理电路110。这只是为了说明的目的,并非对本发明的限制。依据某些实施例,所述控制电路可实施为耦接于上述至少一存储装置与处理电路110之间的一存储接口电路,诸如图9所示的实施例的存储接口电路120。图9为依据本发明另一实施例的一存储服务器的示意图。相较于图1所示的架构,本实施例的存储接口电路120可包括一数据压缩管理模块122以用来控制存储服务器100依据所述方法来运作,而运行于处理电路110的一驱动器模块111可用来与数据压缩管理模块122进行通信,以在需要时进行一或多个相关设定,其中数据压缩管理模块122可被实施为存储接口电路120的一子电路,诸如一特殊应用集成电路(application-specificintegratedcircuit,asic),但本发明不限于此。为便于理解,图9所示的存储服务器100以及相关电路/模块/装置(例如运行着程序模块110p的处理电路110、以及包括有数据压缩管理模块122的存储接口电路120)可分别作为上述存储服务器及其相关电路/模块/装置(例如运行对应于所述方法的一或多个程序模块的所述处理电路、以及包括有对应于所述方法的所述一或多个子电路的所述存储接口电路)的例子。为简明起见,于本实施例中类似的内容在此不重复赘述。依据某些实施例,驱动器模块111可被省略。例如,程序模块110p可包括所述操作系统的一较新版本,而驱动器模块111并非必须安装至存储服务器100中。为简明起见,于这些实施例中类似的内容在此不重复赘述。基于图9所示的架构,图3所示的设备300中的所述控制电路可由包括有数据压缩管理模块122的存储接口电路120来实施。在此状况下,上层310以及下层360可分别代表上述用户请求层(例如存储服务器100的所述操作系统的所述文件系统)以及存储装置130,缓冲器350可代表存储服务器100中的上述存储器(例如由静态随机存取存储器或动态随机存取存储器来实施并且位于存储接口电路120或数据压缩管理模块122中的一专用存储器),以及主接口电路320、基于熵的分类电路330以及所述多个数据压缩电路340可位于数据压缩管理模块122中,尤其,可分别为所述特殊应用集成电路的多个相关子电路。另外,基于图9所示的架构,图8所示的设备800中的所述控制电路可由包括有数据压缩管理模块122的存储接口电路120来实施。在此状况下,设备800的上层310以及下层360(诸如图3所示的设备300的上层310以及下层360)可分别代表上述用户请求层(例如存储服务器100的所述操作系统的所述文件系统)以及存储装置130,设备800的缓冲器350(诸如图3所示的设备300中的缓冲器350)可代表存储服务器100中的上述存储器(例如由静态随机存取存储器或动态随机存取存储器来实施并且位于存储接口电路120或数据压缩管理模块122中的所述专用存储器),以及设备800的主接口电路320(诸如图3所示的设备300的主接口电路320)及基于熵的分类电路330、所述多个数据压缩电路340、散列产生器820、多路分用器830、所述多个散列记录表840、多路选择器850以及比较器860可位于数据压缩管理模块122中,尤其,可分别为所述特殊应用集成电路的多个相关子电路。依据某些实施例,所述控制电路(例如图9所示的包括有数据压缩管理模块122的存储接口电路120)可被实施为一存储接口卡(例如一硬件加速卡)以用来安装在存储服务器100中。为简明起见,于这些实施例中类似的内容在此不重复赘述。依据某些实施例,在上述不同熵等级的局部数据中,第一熵等级el(1)的所述一或多组局部数据(例如熵等级el(1)的所述n1组局部数据)可被视为一型样(pattern)类型的局部数据、第二熵等级el(2)的所述一或多组局部数据(例如熵等级el(2)的所述n2组局部数据)可被视为一中间(intermediate)类型的局部数据、…、以及第(x-1)熵等级el(x-1)的所述一或多组局部数据(例如熵等级el(3)的所述n3组局部数据)可被视为一正常类型的局部数据,但本发明不限于此。依据某些实施例,步骤s23的运作能以写入重定向(redirect-on-write,row)方式来进行,但本发明不限于此。依据某些实施例,于步骤s23中所述地址映射信息可包括上层310的一上层地址(例如所述操作系统的所述文件系统的一逻辑地址)与下层360的一下层地址(例如用来存取下层360的一逻辑地址)之间的一映射关系的映射信息以用于所述局部数据(例如上述任一组局部数据)。由于下层360可代表存储装置130,且由于所述下层地址较所述上层地址更多相关于存储装置130的一实体存储媒介,所述上层地址以及所述下层地址亦可被称为用于所述局部数据的逻辑地址(logicaladdress,la)以及虚拟实体地址(pseudo-physicaladdress,ppa)。例如,存储服务器100(例如所述控制电路)可将所述地址映射信息存储至一地址映射表(例如一逻辑地址转虚拟实体地址(la-to-ppa,l2p)表(简称为“l2p表”)),并且可在需要时管理或更新所述地址映射表(例如所述l2p表)。另外,存储服务器100(例如所述控制电路)可存储将所述地址映射信息的反向映射信息存储至一或多个其它地址映射表(例如一或多个虚拟实体地址转逻辑地址(ppa-to-la,p2l)表(简称为“p2l表”)),并且在需要时可管理或更新所述一或多个其它地址映射表(例如所述p2l表)。例如,所述一或多个其它地址映射表可包括分别对应于熵等级{el(1),el(2),…,el(x)}的x个地址映射表,但本发明不限于此。依据某些实施例,存储服务器100(例如所述控制电路)可控制存储装置130将所述地址映射信息存储至所述地址映射表(例如所述l2p表)并且在需要时管理或更新所述地址映射表(例如所述l2p表)。另外,所述存储服务器100(例如所述控制电路)可控制存储装置130将所述地址映射信息的所述反向映射信息存储至所述一或多个其它地址映射表(例如所述一或多个p2l表)并且在需要时管理或更新所述一或多个其它地址映射表(例如所述一或多个p2l表)。依据某些实施例,存储服务器100(例如所述控制电路)可侦测具有相同比特(例如:比特0,或比特1)的一数据组块(chunk),诸如具有相同的比特0的全零(all-zero)组块或是具有相同的比特1的全一(all-one)组块,并且可将所述数据组块的地址信息记录至一相同比特组块表(same-bitchunktable)中。例如,所述多组局部数据可原本包括具有相同比特的所述数据组块,且存储服务器100(例如所述控制电路)可依据在所述相同比特组块表中的一极度压缩后格式将具有相同比特的所述数据组块分开存储,而不需存储这个数据组块的整体。例如,所述极度压缩后格式可包括所述数据组块的所述地址信息以及用来指出所述数据组块的每一比特为比特1或比特0的一或多个额外比特。依据某些实施例,存储服务器100(例如所述控制电路)可预先进行将具有相同比特的所述数据组块分开存储于所述相同比特组块表中的运作,以减小工作流程200的复杂度,其中具有相同比特的所述数据组块在此运作后可自所述多个局部数据中被移除,但本发明不限于此。本发明的方法及设备能藉助于局部数据分类诸如基于熵的分类来有效率地进行数据压缩,且对应于其各个分类结果的数据压缩能大幅减少进行数据压缩时不必要的时间。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1