CN117827079A - 压缩数据读取方法、写入方法及装置 - Google Patents
压缩数据读取方法、写入方法及装置 Download PDFInfo
- Publication number
- CN117827079A CN117827079A CN202211185059.3A CN202211185059A CN117827079A CN 117827079 A CN117827079 A CN 117827079A CN 202211185059 A CN202211185059 A CN 202211185059A CN 117827079 A CN117827079 A CN 117827079A
- Authority
- CN
- China
- Prior art keywords
- compressed data
- data
- address space
- compressed
- storage device
- 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 87
- 238000013507 mapping Methods 0.000 claims abstract description 49
- 238000007906 compression Methods 0.000 claims description 72
- 230000006835 compression Effects 0.000 claims description 72
- 230000015654 memory Effects 0.000 claims description 56
- 238000004422 calculation algorithm Methods 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 14
- 238000013500 data storage Methods 0.000 abstract description 11
- 230000006870 function Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 7
- 239000007787 solid Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100247669 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PB1 gene Proteins 0.000 description 1
- 101100242901 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PB2 gene Proteins 0.000 description 1
- 101150025928 Segment-1 gene Proteins 0.000 description 1
- 101150082826 Segment-2 gene Proteins 0.000 description 1
- 101100242902 Thogoto virus (isolate SiAr 126) Segment 1 gene Proteins 0.000 description 1
- 101100194052 Thogoto virus (isolate SiAr 126) Segment 2 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Abstract
公开了一种压缩数据读取方法、写入方法及装置,涉及数据存储领域。该压缩数据读取方法包括:存储设备获取读请求,并根据该读请求指示的第一压缩数据的第一地址空间和预先存储的地址映射表,确定第二地址空间;以及,存储设备从该第二地址空间中读取将第一压缩数据压缩后的第二压缩数据;进而,存储设备根据读请求指示的压缩信息解压第二压缩数据进行,得到第一压缩数据。对于相同的原始数据,第二压缩数据占用的第二地址空间小于第一压缩数据占用的第二地址空间,存储设备中存储资源的占用降低,存储资源利用率提高。且存储设备输出的数据为第一压缩数据,避免了主机无法解压第二压缩数据导致数据不可用的问题,提高了存储设备的数据访问性能。
Description
技术领域
本申请涉及数据存储领域,尤其涉及压缩数据读取方法、写入方法及装置。
背景技术
数据压缩技术已成为当今存储等领域的关键技术,为提高存储系统的空间利用率,存储设备可利用高压缩率的压缩算法,对写入存储设备的文件进行压缩得到压缩数据,实现在有限的空间中存储更多的数据。由于该高压缩率的压缩算法为非通用算法,导致主机读取并利用该压缩数据时变得不可用。因此,如何提供一种更有效的压缩数据读取方法成为目前亟需解决的问题。
发明内容
本申请提供了压缩数据读取方法、写入方法及装置,解决了主机无法使用存储设备输出的压缩数据的问题。
本申请采用如下技术方案。
第一方面,提供了一种压缩数据读取方法,该压缩数据读取方法可应用于数据存储系统,或者应用于支持数据存储系统实现该压缩数据读取方法的存储设备,例如该存储设备包括芯片。这里以存储设备执行本实施例提供的压缩数据读取方法为例进行说明,该存储设备包括至少一个硬盘。该压缩数据读取方法包括:首先,存储设备获取用于请求第一压缩数据的读请求。其次,存储设备根据读请求指示的第一压缩数据的第一地址空间和地址映射表,确定第二压缩数据的存储位置,即第二地址空间,存储设备从第二地址空间中读取第二压缩数据。最后,存储设备利用读请求指示的压缩信息对第二压缩数据进行解压,得到第一压缩数据。
其中,第二地址空间小于第一地址空间,第二压缩数据为压缩第一压缩数据确定的数据。
对于相同的原始数据,第二压缩数据所占用的第二地址空间小于第一压缩数据所占用的第二地址空间,存储设备中存储资源的占用降低,存储资源利用率提高。而且,存储设备读取第一压缩数据所对应的第二压缩数据后,还对第二压缩数据进行解压,使得存储设备输出的数据为第一压缩数据,避免了主机无法解压第二压缩数据导致数据不可用的问题,提高了存储设备的数据访问性能。
在一种可选的实现方式中,上述地址映射表用于指示第一地址空间与第二地址空间的映射关系,该映射关系为第一压缩数据被压缩前的存储位置和第二压缩数据的存储位置之间的对应关系。存储设备根据该对应关系和第一地址空间,确定第二压缩数据的第二地址空间。存储设备读取该第二地址空间中的第二压缩数据,并对第二压缩数据进行解压得到第一压缩数据,实现返回可用的第一压缩数据至主机,提高了存储设备的数据访问性能。
在一种可选的实现方式中,存储设备对第二压缩数据进行解压后,得到第一压缩数据对应的原始数据。存储设备根据压缩信息中的压缩算法和压缩参数对原始数据进行解压,得到第一压缩数据。存储设备将该第一压缩数据返回主机。
相较于通常技术中返回再压缩后的第二压缩数据,主机不能解压该第二压缩数据导致数据不可用的问题,存储设备将根据第二压缩数据获取到的第一压缩数据返回主机,本申请不影响数据的读取使用,提高了存储设备的数据访问性能。
在一种可选的实现方式中,存储设备基于读请求指示的第一地址空间,按设定的数据粒度读取第一地址空间中的数据。若第一地址空间中存在设定的数据粒度的数据,存储设备根据设定的数据粒度将读取前述的数据,并写入缓冲区。当缓冲区中的数据量满足第一地址空间指示的数据量时,存储设备将缓冲区中的数据作为第一压缩数据。存储设备将该第一压缩数据返回至前端。其中,上述缓冲区为一块预设的内存区域,用于暂时存放数据。
存储设备在接收到读请求后,将优先读取读请求指示的第一地址空间,以确保读取最新的第一压缩数据,并避免遗漏存储设备新写入第一地址空间的数据。存储设备以设定的数据粒度依次读取第一地址空间中的数据,并写入缓冲区。相较于通常技术中每次将设定的数据粒度直接返回主机,本申请存储设备利用缓冲区进行中转,能减少读取次数,节省读取时间,提高了存储设备的数据访问性能。
第二方面,提供了一种压缩数据写入方法,该压缩数据写入方法可应用于数据存储系统,或者应用于支持数据存储系统实现该压缩数据写入方法的存储设备,例如该存储设备包括芯片。这里以存储设备执行本实施例提供的压缩数据写入方法为例进行说明,该存储设备包括至少一个硬盘。该压缩数据写入方法包括:存储设备根据获取到的写请求,将写请求指示的第一压缩数据写入存储设备提供的第一地址空间;以及,存储设备压缩第一压缩数据得到第二压缩数据,并将第二压缩数据写入存储设备提供的第二地址空间。其中,该第二地址空间小于前述第一地址空间。
在本实施例中,存储设备对第一压缩数据进行了再压缩,得到第二压缩数据,该第二压缩数据的压缩率相较于第一压缩数据的压缩率进一步提高。并且,由于第二地址空间小于前述第一地址空间,因此存储设备再压缩得到的第二压缩数据所占用的存储空间降低,提高了存储设备中存储资源的利用率。
在一种可选的实现方式中,存储设备将第二压缩数据写入第二地址空间后,存储设备根据第一地址空间和第二地址空间,建立地址映射表。该地址映射表用于指示:第一压缩数据被压缩前的存储位置和第二压缩数据的存储位置之间的对应关系。
避免了通常技术中读取第一压缩数据时,读取到的是第二压缩数据,该第二压缩数据在主机中无法解压导致不可用的问题。在存储设备读取第一压缩数据时,基于地址映射表,确定第一压缩数据对应的第二压缩数据,并对第二压缩数据进行解压得到第一压缩数据,返回可用的第一压缩数据至主机,提高了存储设备的数据访问性能。
在一种可选的实现方式中,存储设备对第一压缩数据进行解压,得到该第一压缩数据对应的原始数据;并且,存储设备根据预设的压缩算法对原始数据进行压缩,得到第二压缩数据。该第二压缩数据占用的存储空间小于第一压缩数据的存储空间,减少了存储空间的占用,提高了存储空间的利用率。
第三方面,提供一种压缩数据读取装置,该压缩数据读取装置应用于存储设备,该压缩数据读取装置包括用于执行第一方面或第一方面任一种可选设计中的压缩数据读取方法的各个模块。示例的,该压缩数据读取装置包括:获取模块、处理模块和读取模块;获取模块,用于获取用于请求第一压缩数据的读请求。处理模块,用于根据读请求指示的第一压缩数据的第一地址空间和地址映射表,确定第二压缩数据的存储位置,即第二地址空间,存储设备从第二地址空间中读取第二压缩数据。读取模块,用于存储设备利用读请求指示的压缩信息对第二压缩数据进行解压,得到第一压缩数据。
其中,第二地址空间小于第一地址空间,第二压缩数据为压缩第一压缩数据确定的数据。
有益效果可以参见第一方面中任一种可选实现方式中的描述,此处不再赘述。所述压缩数据读取装置具有实现上述第一方面中任一种可选实现方式中的方法实例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第四方面,提供一种压缩数据写入装置,该压缩数据写入装置应用于存储设备,该压缩数据写入装置包括用于执行第二方面或第二方面任一种可选设计中的压缩数据写入方法的各个模块。示例的,该压缩数据写入装置包括:第一写入模块和第二写入模块;第一写入模块用于根据获取到的写请求,将写请求指示的第一压缩数据写入存储设备提供的第一地址空间。第二写入模块,用于压缩第一压缩数据得到第二压缩数据,并将第二压缩数据写入存储设备提供的第二地址空间。其中,该第二地址空间小于第一地址空间。
有益效果可以参见第二方面中任一种可选实现方式中的描述,此处不再赘述。所述压缩数据写入装置具有实现上述第二方面中任一种可选实现方式中的方法实例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第五方面,提供一种计算设备,包括处理器和存储器;存储器用于存储计算机指令,处理器执行该计算机指令实现上述第一方面及其第一方面任意可选的实现方式中的方法;或者,处理器执行该计算机指令实现上述第二方面及其第二方面任意可选的实现方式中的方法。
第六方面,提供一种计算机可读存储介质,该存储介质中存储有计算机程序或指令,当计算机程序或指令被处理设备执行时,实现上述第一方面和第一方面中任一种可选实现方式中的方法;或者,当计算机程序或指令被处理设备执行时,实现上述第二方面和第二方面中任一种可选实现方式中的方法。
第七方面,提供一种计算机程序产品,该计算程序产品包括计算机程序或指令,当该计算机程序或指令被处理设备执行时,实现上述第一方面和第一方面中任一种可选实现方式中的方法;或者,当该计算机程序或指令被处理设备执行时,实现上述第二方面和第二方面中任一种可选实现方式中的方法。
第八方面,提高一种存储设备,该存储设备包括:处理器、第一地址空间和第二地址空间;
该第一地址空间,用于存储第一压缩数据;
该第二地址空间,用于存储第二压缩数据;该第二压缩数据为压缩上述第一压缩数据确定的数据,第二地址空间小于第一地址空间;
该处理器,用于在获取到用于请求第一压缩数据的读请求时,执行上述第一方面和第一方面中任一种可选实现方式中的方法;或者,在获取到用于指示将所述第一压缩数据写入所述存储设备的写请求时,执行上述第二方面和第二方面中任一种可选实现方式中的方法。
以上第三方面至第八方面的有益效果可参照第一方面或第一方面中任一种实现方式,或者,第二方面或第二方面中任一种实现方式的描述,在此不予赘述。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1为本申请提供的一种存储系统的应用场景图;
图2为本申请提供的一种压缩数据写入方法的流程示意图一;
图3为本申请提供的一种压缩数据写入方法的流程示意图二;
图4为本申请提供的一种压缩数据写入方法的流程示意图三;
图5为本申请提供的一种压缩数据读取方法的示意图一;
图6为本申请提供的一种压缩数据读取方法的示意图二;
图7为本申请提供的一种压缩数据读取方法的示意图三;
图8为本申请提供的一种压缩数据写入装置的结构示意图;
图9为本申请提供的一种压缩数据读取装置的结构示意图。
具体实施方式
本申请提供压缩数据的访问方法,该访问方法包括:首先,存储设备获取用于请求压缩数据的数据访问请求,该数据访问请求携带有指示压缩数据的第一地址;其次,存储设备根据该第一地址查询存储设备中预先存储的地址映射表,确定存储设备中该压缩数据的第二地址;最后,存储设备根据该第二地址对该压缩数据进行访问。
例如,该数据访问请求是写请求,该写请求携带有第一压缩数据和该第一压缩数据的压缩信息,如该压缩信息指示了:对原始数据压缩得到该第一压缩数据所采用的压缩算法和压缩参数等信息。则存储设备根据该写请求将第一压缩数据写入存储设备提供的第一地址空间;以及,存储设备压缩第一压缩数据得到第二压缩数据,并将第二压缩数据写入存储设备提供的第二地址空间。其中,该第二压缩数据的数据量小于前述第一压缩数据的数据量,且该第二地址空间小于第一地址空间。本示例中,存储设备对第一压缩数据进行再压缩后获取第二压缩数据,第二压缩数据的压缩率相较于第一压缩数据的压缩率提高,且第二压缩数据所占用的存储空间降低,提高了存储设备中存储资源的利用率。
又如,该数据访问请求是读请求,该写请求指示了第一压缩数据和该第一压缩数据的压缩信息。则前述的数据访问方法是指压缩数据读取方法,该方法包括:首先,存储设备获取用于请求第一压缩数据的读请求。其次,存储设备根据读请求指示的第一压缩数据的第一地址空间和地址映射表,确定第二压缩数据的存储位置,即第二地址空间,存储设备从第二地址空间中读取第二压缩数据。最后,存储设备利用读请求指示的压缩信息对第二压缩数据进行解压,得到第一压缩数据。
其中,第二地址空间小于第一地址空间,第二压缩数据为压缩第一压缩数据确定的数据。
对于相同的原始数据,第二压缩数据所占用的第二地址空间小于第一压缩数据所占用的第二地址空间,存储设备中存储资源的占用降低,存储资源利用率提高。而且,存储设备读取第一压缩数据所对应的第二压缩数据后,还对第二压缩数据进行解压,使得存储设备输出的数据为第一压缩数据,避免了主机无法解压第二压缩数据导致数据不可用的问题,提高了存储设备的数据访问性能。
下面结合附图,对本申请的存储设备的实现方式进行说明,如图1所示,图1为本申请提供的一种数据存储系统的结构示意图。该数据存储系统包括主机110和存储设备120。在图1所示的应用场景中,用户通过应用程序来存取数据。运行这些应用程序的计算机可以被称为“主机”。主机110可以是物理机,也可以是虚拟机。物理机包括但不限于桌面电脑、服务器、笔记本电脑以及移动设备。
在一种可能的示例中,主机110通过网络访问存储设备120以存取数据,例如,该网络可以包括交换机130。
在另一种可能的示例中,主机110也可以通过有线连接与存储设备120通信,例如,通用串行总线(universal serial bus,USB)或快捷外围部件互连标准(PeripheralComponent Interconnect Express,PCIe)总线等。
图1所示的存储设备120可以是一个集中式存储系统。集中式存储系统的特点是有一个统一的入口,所有从外部设备来的数据都要经过这个入口,这个入口就是集中式存储系统的引擎121。引擎121是集中式存储系统中最为核心的部件,许多存储系统的高级功能都在其中实现。
如图1所示,引擎121中可以有一个或多个控制器,图1以引擎121包含一个控制器为例予以说明。在一种可能的示例中,若引擎121具有多个控制器,任意两个控制器之间可以具有镜像通道,实现任意两个控制器互为备份的功能,从而避免硬件故障导致整个存储设备120的不可用。应理解,若引擎121包括多个控制器,则引擎121也可以称为存储设备120的阵列控制器。
引擎121还包含前端接口1211和后端接口1214,其中前端接口1211用于与主机110通信,从而为主机110提供数据访问服务。而后端接口1214用于与硬盘通信,以扩充存储设备120的容量。通过后端接口1214,引擎121可以连接更多的硬盘,从而形成一个非常大的存储资源池。
在硬件上,如图1所示,控制器至少包括处理器1212、内存1213。处理器1212是一个中央处理单元(central processing unit,CPU),用于处理来自存储设备120外部(服务器或者其他存储系统)的数据访问请求,也用于处理存储设备120内部生成的请求。示例性的,处理器1212通过前端接口1211接收主机110发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存1213中。当内存1213中的数据总量达到一定阈值时,处理器1212通过后端端口将内存1213中存储的数据发送给机械硬盘1221、机械硬盘1222、固态硬盘(solid state drive,SSD)1223或其他硬盘1224中至少一个硬盘进行持久化存储。
内存1213是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(read only memory,ROM)。举例来说,随机存取存储器是DRAM,或者SCM。DRAM是一种半导体存储器,与大部分随机存取存储器(random access memory,RAM)一样,属于一种易失性存储器(volatilememory)设备。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read only memory,PROM)、可抹除可编程只读存储器(erasable programmable read only memory,EPROM)等。
另外,内存1213还可以是双列直插式存储器模块或双线存储器模块(dual in-line memory module,DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是SSD。实际应用中,控制器中可配置多个内存1213,以及不同类型的内存1213。本实施例不对内存1213的数量和类型进行限定。此外,可对内存1213进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存1213中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
内存1213中存储有软件程序,处理器1212运行内存1213中的软件程序可实现对压缩数据的写入和读取。例如根据读取请求指示的第一地址空间和预设的地址映射表,从第二地址空间中读取第二压缩数据,并根据读请求指示的压缩信息对第二压缩数据进行解压,获取第一压缩数据。
如图1所示,在该系统中,引擎121可以不具有硬盘槽位,硬盘需要放置在硬盘框122中,后端接口1214与硬盘框122通信。后端接口1214以适配卡的形态存在于引擎121中,一个引擎121上可以同时使用两个或两个以上后端接口1214来连接多个硬盘框。或者,适配卡也可以集成在主板上,此时适配卡可通过PCIe总线与处理器1212通信。
需要说明的是,图1中只示出了一个引擎121,然而在实际应用中,存储系统中可包含两个或两个以上引擎121,多个引擎121之间做冗余或者负载均衡。
硬盘框122包括控制单元1225和若干个硬盘。控制单元1225可具有多种形态。一种情况下,硬盘框122属于智能盘框,如图1所示,控制单元1225包括CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘的数据,或者从硬盘读取出来将要发送给控制器的数据。另一种情况下,控制单元1225是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processingunits,NPU)等处理芯片。通常情况下,控制单元1225的数量可以是一个,也可以是两个或两个以上。控制单元1225的功能可以卸载到网卡1226上。换言之,在该种实施方式中,硬盘框122内部不具有控制单元1225,而是由网卡1226来完成数据读写、地址转换以及其他计算功能。此时,网卡1226是一个智能网卡。它可以包含CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘的数据,或者从硬盘读取出来将要发送给控制器的数据。也可以是一个可编程的电子部件,例如DPU。硬盘框122中的网卡1226和硬盘之间没有归属关系,网卡1226可访问该硬盘框122中任意一个硬盘(如图1所示出的机械硬盘1221、机械硬盘1222、固态硬盘1223和其他硬盘1224),因此在存储空间不足时扩展硬盘会较为便捷。
按照引擎121与硬盘框122之间通信协议的类型,硬盘框122可能是串行连接的小型计算机系统接口(serial attached small computer system interface,SAS)的硬盘框,也可能是NVMe(Non-Volatile Memory express)硬盘框以及其他类型的硬盘框。SAS硬盘框,采用SAS3.0协议,每个框支持25块SAS硬盘。引擎121通过板载SAS接口或者SAS接口模块与硬盘框122连接。NVMe硬盘框,更像一个完整的计算机系统,NVMe硬盘插在NVMe硬盘框内。NVMe硬盘框再通过RDMA端口与引擎121连接。
在一种可选的实现方式中,存储设备120为盘控一体的集中式存储系统,存储设备120中不具有上述的硬盘框122,引擎121用于管理通过硬盘槽连接的多个硬盘。硬盘槽的功能可以由后端接口1214实现。
在另一种可选的实现方式中,图1所示的存储设备120是分布式存储系统,该分布式存储系统包括计算设备集群和存储设备集群,计算设备集群包括一个或多个计算设备,各个计算设备之间可以相互通信。该计算设备可以是一种物理计算设备,如服务器、台式计算机或者存储阵列的控制器等。在硬件上,计算设备可以包括处理器、内存和网卡等。其中,处理器是一个CPU,用于处理来自计算设备外部的数据访问请求,或者计算设备内部生成的请求。示例性的,处理器接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存中。当内存中的数据总量达到一定阈值时,处理器将内存中存储的数据发送给存储设备进行持久化存储。除此之外,处理器还用于数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、虚拟化存储空间以及地址转换等。在一种示例中,任意一个计算设备可通过网络访问存储设备集群中的任意一个存储设备。存储设备集群包括多个存储设备。一个存储设备包括一个或多个控制器、网卡与多个硬盘,该网卡用于与计算设备通信。
示例性的,在如图1的数据存储系统中,用户在主机110创建了一个业界标准格式的压缩文件(可称为第一压缩数据),如JPEG(Joint Photographic Experts Group)文件。存储设备120利用预设的压缩算法将该JPEG文件进行压缩,得到私有格式的文件(可称为第二压缩数据),存储设备120将该第二压缩数据存储到存储设备中。其中,该私有格式的文件是指,存储设备120根据预设的压缩算法对JPEG文件进行压缩后得到的文件的格式。当用户在主机110发起读请求时,存储设备120根据该读请求和地址映射表,获取到相应的第二压缩数据,并对该第二压缩数据解压后得到上述的第一压缩数据,最后存储设备120将该第一压缩数据返回给主机110。
在本申请中存储设备120对数据进行压缩和解压,可利用存储设备中的压缩引擎处理,该压缩引擎可为支持高压缩率的压缩引擎。压缩引擎的功能可由存储设备120中的处理器1212实现。
下面分别对存储设备写入压缩数据和读取压缩数据进行说明。
第一种可能的场景:在图1所示出的数据存储系统的基础上,提供一种存储设备写入第一压缩数据的一种可能实现方式,如图2所示,图2为本申请提供的一种压缩数据写入方法的流程示意图一。
请参照图2,本实施例提供的压缩数据写入方法包括步骤S210至S230。
S210、存储设备120获取写请求。
该写请求携带有第一压缩数据和该第一压缩数据的压缩信息。
其中,第一压缩数据是指存储设备120利用压缩信息对原始数据进行压缩得到的数据。
压缩信息包括压缩算法和压缩参数,例如,压缩算法可以是指以下任意一种或几种的组合:如行程长度编码(Run-Length Encoding,RLE)、哈夫曼编码。以压缩算法是哈夫曼编码为例,该压缩参数是指文件长度等,该文件长度用于存储设备120控制解压第一压缩数据生成的字符个数,用于判断解压结束。
一种可能的情形中,该写请求是主机110发送给存储设备120的写请求,如主机110的下载等操作触发的写请求。
另一种可能的情形中,该写请求是存储设备120根据存储设备120所执行的业务生成的压缩数据写请求。
S220、存储设备120将第一压缩数据写入第一地址空间。
存储设备120将第一压缩数据写入存储设备120提供的地址空间。其中,该地址空间是指存储设备120包括的一段存储空间,该地址空间的参数包括:元数据(如文件路径、被哪个主机或APP专用)、起始地址、偏移(offset)、数据长度(length)、压缩信息等。
示例的,第一压缩数据所要写入的第一地址空间为C:\Apps\YR2T2,offset=0M,length=5M,其中offset表示第一压缩数据在C:\Apps\YR2T2位置所示文件中的偏移,length表示第一压缩数据的数据长度。
在一种可能的示例中,存储设备120将第一压缩数据以设定的数据粒度写入第一地址空间。
上述数据粒度可为存储设备120根据主机110的需求调整的;或者,上述数据粒度是存储设备设置的默认值,如4KB,8KB或者其他等。
以数据粒度为8KB为例,存储设备120依次将第一压缩数据中的8KB数据写入上述的C:\Apps\YR2T2位置,直至第一压缩数据全部写入C:\Apps\YR2T2。
S230、存储设备120压缩第一压缩数据获取第二压缩数据,并将第二压缩数据写入第二地址空间。
该第二地址空间小于第一地址空间。示例性的,第二地址空间的length为2M,第一地址空间的length为1M,第二地址空间的length小于第一地址空间的length。存储设备120对第一压缩数据进行压缩,可为分段压缩,第二压缩数据中各段的压缩率根据第一压缩数据各段的类型确定。
存储设备120对第一压缩数据进行再压缩后获取第二压缩数据,该第二压缩数据的数据量小于第一压缩数据的数据量,该第一压缩数据对应的原始数据的压缩率提高,且第二压缩数据所占用的存储空间降低,提高了存储设备中存储资源的利用率。
可选的,为了实现透明写,提高存储设备120的存储性能,在第二压缩数据写入第二地址空间后,存储设备120将第一压缩数据与第二压缩数据建立关联,并删除第一地址空间中的第一压缩数据。
示例性的,存储设备120对第一压缩数据进行解压和再压缩后,得到第二压缩数据,该第二压缩数据的占用3MB空间。存储设备120将第二压缩数据写入C:\Apps\7VDFT,offset=0M,length=3M。存储设备120可通过修改第一压缩数据的元数据,使第一压缩数据与第二压缩数据建立关联,将第一压缩数据的数据地址指向第二压缩数据的数据地址,如C:\Apps\YR2T2→C:\Apps\7VDFT。
上述地址空间仅为示例,不应理解为对本申请的限定,上述地址空间还可在存储设备中同一存储器的同一文件夹中,如图1中机械硬盘1221的同一文件夹中。
或者,第一地址空间和第二地址空间在存储设备的不同存储器中,如第一地址空间在如图1中的机械硬盘1221中,第二地址空间在如图1中的机械硬盘1222中。
存储设备120将第一压缩数据进行再压缩后存储,再压缩后的第二压缩数据占用的存储空间小于第一压缩数据占用的存储空间,减少了存储空间的占用,提高了存储空间的利用率。
在一种可选的实现方式中,存储设备120压缩第一压缩数据获取第二压缩数据包括:存储设备120将第一压缩数据从第一地址空间中读取出来,对第一压缩数据进行解压,得到第一压缩数据的原始数据。存储设备120利用预设的压缩算法对原始数据进行压缩,得到第二压缩数据。其中,该预设的压缩算法为以下任意一种或几种压缩算法的组合:如马尔可夫链式算法(Lempel-Ziv Markov chain Algorithm,LZMA)、基于生成式对抗网络(Generative Adversarial Networks,GAN)的压缩算法等。
示例的,在第一压缩数据为第一文档(office open Xml DOCument,docx)格式的数据时,存储设备120异步将该docx格式的数据读取处理,并对该docx格式的数据进行解压,得到第二文档(DOCument,doc)格式的数据。存储设备120利用预设的压缩算法对该doc格式的数据进行压缩,得到私有格式的第二压缩数据。异步是指存储设备120接收到读请求后,立即执行读取docx格式的数据,不用等待排在读请求前的命令执行完毕后再执行读请求对应的读任务。
存储设备120对第一压缩数据进行解压,得到原始数据,并利用预设的压缩算法对原始数据进行压缩,实现对第一压缩数据的再压缩,得到的第二压缩数据占用的存储空间小于第一压缩数据的存储空间,减少了存储空间的占用,提高了存储空间的利用率。
在一种可选的实现方式中,存储设备120在将第二压缩数据写入第二地址空间后,根据第一地址空间和第二地址空间,建立地址映射表;该地址映射表用于指示第一压缩数据被压缩前的存储位置和第二压缩数据的存储位置间的对应关系。
其中,因为存储设备120对第一压缩数据进行分块压缩,所以第二压缩数据中各块的压缩率不同,因此将分段建立映射关系,如第一存储段(segment1)和第二存储段(segment2)。该地址映射表可存储在第二压缩数据的元数据中,或者存储空间中的预设位置。如下表1所示的地址映射表。
表1
地址 | segment1 | segment2 | |
第一压缩数据 | C:\Apps\YR2T2 | 【0-4M】 | 【4-5M】 |
第二压缩数据 | C:\Apps\7VDFT | 【0-2】 | 【2-3M】 |
值得注意的是,表1所示出的地址映射表包括的内容仅为本申请提供的示例,不应理解为对本申请的限定,地址映射表还可包括更多或更少的内容。
避免了通常技术中读取第一压缩数据时,读取到的是第二压缩数据,该第二压缩数据在主机110中无法解压导致不可用的问题。本申请存储设备120基于地址映射表,确定第一压缩数据对应的第二压缩数据后,对第二压缩数据进行解压得到第一压缩数据,实现返回可用的第一压缩数据至主机110,提高了存储设备的数据访问性能。
上述实施例示出了存储设备120第一次将第一压缩数据写入存储设备。在另一种情形中,用户在主机110上对第一压缩数据进行了修改,得到修改数据,存储设备120需对修改数据进行写入。修改数据的格式与第一压缩数据的格式一致。
下面示出了存储设备120将修改数据写入存储设备的两种可能的示例。
在第一种可能的示例中,当修改数据的大小为设定的数据粒度的倍数时,存储设备120按设定的数据粒度将修改数据写入第一地址空间中。示例性的,如图3所示,图3为本申请提供的一种压缩数据写入方法的流程示意图二,本实施例包括步骤S310至S330。
S310、存储设备120获取修改请求。
该修改请求指示了修改数据以及存储区1的地址空间等,例如该修改数据为用户对第一地址空间中的存储区1“offset=2M,length=1M”对应的数据进行修改得到的。
S320、存储设备120将修改数据写入第一地址空间中存储区1的地址空间。
其中,该存储区1的地址空间如上述的offset=2M,length=1M。存储设备120按设定的数据粒度依次将修改数据写入C:\Apps\YR2T2,offset=2M,length=1M。
S330、存储设备120压缩存储区1中保存的修改数据,获取待存数据。
存储设备120根据预设的压缩算法,压缩修改数据。存储设备120根据地址映射表和offset=2M,length=1M,获取待存数据在第二地址空间中的地址,如offset=1M,length=0.5M。
存储设备120将第二地址空间中“offset=1M,length=0.5M”中修改数据对应的旧数据进行删除,并将修改数据进行压缩后得到的数据写入地址为offset=1M,length=0.5M中。在存储设备120将待存数据写入“offset=1M,length=0.5M”后,存储设备120删除第一地址空间中的修改数据。
在第二种可能的示例中,当修改数据的大小不为设定的数据粒度的倍数时,存储设备120对修改数据分两部分数据进行写入,其中,该两部分数据包括:第一写入数据和第二写入数据。其中,第一写入数据的数据量为设定的数据粒度的倍数;第二写入数据的数据量小于设定的数据粒度。
示例的,如图4所示,图4为本申请提供的一种压缩数据写入方法的流程示意图三。本实施例包括步骤S410至S440。在本实施例中设定的数据粒度为8KB,获取到的修改数据为55KB,第一压缩数据的第一地址空间为offset=0,length=56KB,第二压缩数据的第二地址空间为offset=0,length=28KB。存储设备120获取修改数据的步骤,可参考上述第一种可能的示例中存储设备获取读请求指示的修改数据的内容,在此不予赘述。
S410、存储设备120按设定的数据粒度将第一写入数据依次写入第一地址空间中。
其中,第一写入数据的写入次数根据第一写入数据的数据量与该设定的数据粒度之间的比值确定,该比值为正整数。在本示例中,由于第一写入数据的数据量为48KB,为设定的数据粒度的6倍,所以存储设备120将分6次将第一写入数据写入第一地址空间,得到第二地址空间中的数据1至6。
S420、存储设备120根据第二写入数据将要写入的地址空间,如offset=48,length=8KB和预设的地址映射表,从第二地址空间中的,如offset=24,length=4KB读取数据A。存储设备120对数据A进行解压,得到数据B。
该数据B的数据量为设定的数据粒度。如图4所示,该数据B包括数据7和数据8。该数据7的数据量与第二写入数据的数据量一致。
S430、存储设备120将数据8与第二写入数据进行组合,得到满足设定的数据粒度的数据9。例如,存储设备120将数据8组合到第二写入数据之后。
S440、存储设备120将数据9写入到第一地址空间中的对应位置,如offset=48,length=8KB。
最后,存储设备120将第二地址空间中旧的第二压缩数据删除,存储设备120将第一地址空间中的数据进行压缩得到第二压缩数据,并将第二压缩数据写入第二地址空间。前述的步骤,可参考上述存储设备120压缩第一压缩数据获取第二压缩数据,并将第二压缩数据写入第二地址空间的内容,在此不予赘述。
第二种可能的场景:在存储设备120将第一压缩数据进行写入存储设备120提供的地址空间后,接收到主机110的读请求,读取第一压缩数据。如图5所示,图5为本申请提供的一种压缩数据读取方法的示意图一。
请参照图5,本实施例提供的压缩数据读取方法包括步骤S510至S540。
S510、存储设备120获取用于请求第一压缩数据的读请求。
存储设备120获取主机110发送的用于请求第一压缩数据的读请求,该读请求指示了第一压缩数据的压缩信息和第一地址空间。
示例的,存储设备120根据读请求指示的第一地址空间中的数据地址,如C:\Apps\YR2T2,并基于第一压缩数据的数据地址与第二压缩数据的数据地址的对应关系,如上述的C:\Apps\YR2T2→C:\Apps\7VDFT,获取第二地址空间中第二压缩数据的元数据。存储设备120获取前述元数据中的压缩信息和地址映射表。该压缩信息包括第一压缩数据的压缩格式、压缩算法及参数等。地址映射表的内容可参考上述表1对应的内容,在此不予赘述。
S520、存储设备120根据第一地址空间和地址映射表,查询第二压缩数据对应的第二地址空间。
可选的,为了获取地址映射表,得到第二压缩数据的第二地址空间,存储设备120可通过步骤S510中的示例得到地址映射表;或者,存储设备120从存储设备的预设位置获取地址映射表,该预设位置可为第一压缩数据的存储位置。对于地址映射表的表述,可参考上述表1的内容,在此不予赘述。
示例的,存储设备120根据第一地址空间C:\Apps\YR2T2,offset=0,length=5M和如表1的地址映射表,获取第二地址空间C:\Apps\7VDFT,offset=0,length=3M。
S530、存储设备120读取第二地址空间中的第二压缩数据。
第二地址空间小于第一地址空间,第二压缩数据为存储设备对第一压缩数据解压后再压缩确定的数据。如S520中的示例,存储设备120从第二地址空间C:\Apps\7VDFT,offset=0,length=3M读取第二压缩数据。
值得注意的是,上述示例为读取全部的第一压缩数据,在其他情形中可仅读取部分第一压缩数据,读取步骤如上述示例,在此不予赘述。
S540、存储设备120根据读请求指示的压缩信息对第二压缩数据进行解压,获取第一压缩数据。
存储设备120根据压缩信息中的压缩算法和压缩参数对第二压缩数据进行解压,得到第一压缩数据。存储设备120将该第一压缩数据返回至前端。
可选的,为了实现透明读,提高存储设备120的数据访问性能,存储设备120对第二压缩数据进行解压后,得到第一压缩数据对应的原始数据。存储设备120再根据压缩算法和压缩参数对原始数据进行压缩,得到第一压缩数据。
示例的,存储设备120对私有格式的第二压缩数据进行解压,得到doc格式的原始数据。存储设备120利用压缩算法和压缩参数对doc格式的原始数据进行压缩,得到docx格式的第一压缩数据。
相较于通常技术中返回私有格式的第二压缩数据,主机不能解压该第二压缩数据导致数据不可用的问题,存储设备最后将根据第二压缩数据获取到的第一压缩数据返回主机,本申请不影响数据的读取使用,提高了存储设备的数据访问性能。
对于相同的原始数据,在第二地址空间中存储的第二压缩数据相较于第一压缩数据占用的存储空间减小,减少了存储空间的占用,提高了存储空间的利用率。而且,存储设备读取第一压缩数据所对应的第二压缩数据后,还对第二压缩数据进行解压,使得存储设备输出的数据为第一压缩数据,避免了主机无法解压第二压缩数据导致数据不可用的问题,提高了存储设备的数据访问性能。
可选的,针对于上述存储设备120获取第一压缩数据的过程,下面提供了两种可选的实现方式。
在第一种可选的实现方式中,第一压缩数据全部被压缩成第二压缩数据,该第二压缩数据存储在第二地址空间。存储设备120以第一粒度读取第二地址空间中的数据。存储设备120对该数据进行解压,得到设定的数据粒度的数据。存储设备120将该设定的数据粒度的数据,拷贝至缓冲区。待缓冲区中的数据满足第一地址空间指示的数据量,存储设备将缓冲区中的数据作为第一压缩数据返回主机110。例如,存储设备120可基于地址映射表,确定该第一粒度和设定的数据粒度的比值。
示例的,当第一地址空间为offset=0,length=1M,且设定的数据粒度为8KB时,存储设备120根据如表1的地址映射表,可确定第二地址空间为offset=0,length=0.5M,并且基于第一压缩数据的【0-4M】与第二压缩数据的【0-2M】的对应关系,可确定前述部分的压缩率为50%。存储设备120根据压缩率和设定的数据粒度,确定第一粒度为4KB。
存储设备120以4KB依次读取第二地址空间中的第二压缩数据,并对4KB数据进行解压,得到4KB数据的原始数据。存储设备120利用压缩算法和压缩参数对该4KB数据的原始数据进行压缩,得到8KB的第一压缩数据。存储设备120将该8KB数据写入缓冲区。重复上述步骤,至缓冲区中的数据达到1M。最后存储设备120将该1M数据返回主机110。
在第二种可选的实现方式中,由于主机110对第一地址空间中的第一压缩数据进行了修改,得到修改数据。因此存储设备120将修改数据写入第一地址空间中存储区1的地址空间,该修改写数据还未进行压缩处理,仍存储在第一地址空间的存储区1的地址空间中。
当读请求指示的第一地址空间在存储区1的地址空间内时。第一地址空间中存在设定的数据粒度的数据,存储设备120根据设定的数据粒度依次将修改数据写入缓冲区。若缓冲区中的数据量满足第一地址空间指示的数据量,将缓冲区中的数据作为第一压缩数据。
示例的,如图6所示,图6为本申请提供的一种压缩数据读取方法的示意图二。主机110对第一地址空间中位于存储区1“offset=2,length=1M”的数据进行修改,存储设备120需根据主机的修改数据对存储区1“offset=2,length=1M”的数据进行修改写。当读请求指示的第一地址空间为offset=2,length=1M时,第一地址空间中存在设定的数据粒度的数据,存储设备120按8KB依次读取offset=2,length=1M中的内容至缓冲区,直至缓冲区中的数据量达到1M,将该1M数据作为第一压缩数据。
存储设备120在接收到读请求后,将先读取读请求指示的第一地址空间,以确保读取最新的第一压缩数据,并避免遗漏存储设备120写入第一地址空间的修改数据。存储设备120以设定的数据粒度依次读取第一地址空间中的数据,并写入缓冲区。相较于通常技术中每次将设定的数据粒度直接返回主机110,本申请存储设备利用缓冲区进行中转,能减少读取次数,节省读取时间,提高了存储设备的数据访问性能。
当读请求指示的第一地址空间在存储区1的地址空间外时,存储设备120的读取步骤,可参考上述第一种可选的实现方式中的内容,在此不予赘述。
当读请求指示的第一地址空间部分在存储区1的地址空间时,如图7所示,图7为本申请提供的一种压缩数据读取方法的示意图三。本实施例提供的压缩数据读取方法包括步骤S710至S730。
S710、读取第一地址空间中的部分第一压缩数据,该部分第一压缩数据包括修改数据,存储设备120读取该修改数据的内容,可参考上述读取修改数据的步骤,在此不予赘述。
S720、存储设备120根据读取的修改数据、第一地址空间和地址映射表,读取第二地址空间中的第二压缩数据。
S730、存储设备120对所述第二压缩数据进行解压,存储设备120读取并解压第二压缩数据,以及存储设备解压第二压缩数据得到部分第一压缩数据的内容,可参考上述第一种可选的实现方式中的内容,在此不予赘述。当缓冲区中的数据量满足第一地址空间的数据量时,存储设备120将缓冲区中的数据作为第一压缩数据。
示例的,如图7所示,存储设备120对offset=2,length=1M的数据进行修改写,读请求指示的第一地址空间为offset=2,length=2M。存储设备120首先读取第一地址空间内的修改写的内容,在读取之后,还需读取offset=3,length=1M位置的数据,该部分数据已进行压缩。存储设备根据offset=3,length=1M和如表1的地址映射表,确定第二地址空间为offset=1.5,length=0.5M。存储设备120读取offset=1.5,length=0.5M位置的第二压缩数据,并对该第二压缩数据进行解压,得到第二压缩数据的原始数据。存储设备120利用压缩算法和压缩参数对第二压缩数据的原始数据进行压缩,得到offset=3,length=1M位置的数据。根据offset=2,length=1M位置的数据和offset=3,length=1M位置的数据,得到第一地址空间的第一压缩数据。
可以理解的是,为了实现上述实施例中的功能,存储设备包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的单元及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
上文中结合图2至图4,详细描述了根据本实施例所提供的压缩数据写入方法,下面将结合图8,描述根据本实施例所提供的模型中压缩数据写入装置。
图8为本申请提供的一种压缩数据写入装置的结构示意图。该压缩数据写入装置可以用于实现上述方法实施例中处理器的功能,因此也能实现上述方法实施例所具备的有益效果。在本实施例中,该压缩数据写入装置可以是存储设备120的模块(如芯片)。
如图8所示,压缩数据写入装置800包括获取模块810、第一写入模块820和第二写入模块830。压缩数据写入装置800用于实现上述图2至图4中所示的方法实施例中的功能。
获取模块810,用于获取写请求。
该写请求携带有第一压缩数据和该第一压缩数据的压缩信息。
其中,第一压缩数据是指对原始数据进行压缩得到的数据。
压缩信息包括压缩算法和压缩参数,该压缩算法和压缩参数为将原始数据压缩为第一压缩数据所利用的算法和参数。
第一写入模块820,用于将第一压缩数据写入第一地址空间。
第一写入模块820将第一压缩数据写入存储设备120提高的地址空间,其中,该地址空间是指存储设备120包括的一段存储空间。
第二写入模块830,用于压缩第一压缩数据获取第二压缩数据,将第二压缩数据写入第二地址空间。
该第二地址空间小于第一地址空间。示例性的,第二地址空间的length为2M,第一地址空间的length为1M,第二地址空间的length小于第一地址空间的length。
为进一步实现上述图2至图4中所示的方法实施例中的功能。压缩数据写入装置800还包括处理模块840。
其中,处理模块840用于根据第一地址空间和第二地址空间,获取地址映射表。
应理解,根据本申请实施例的存储设备120可对应于申请实施例中的压缩数据写入装置800,并可以对应于执行根据本申请实施例的方法图2至图4对应的相应主体,并且压缩数据写入装置800中的各个模块的操作和/或功能分别为了实现图2至图4中对应实施例的各个方法的相应流程,为了简洁,在此不再赘述。
上文中结合图5至图7,详细描述了根据本实施例所提供的压缩数据读取方法,下面将结合图9,描述根据本实施例所提供的压缩数据读取装置。
图9为本申请提供的一种压缩数据读取装置的结构示意图。该压缩数据读取装置可以用于实现上述方法实施例中处理器的功能,因此也能实现上述方法实施例所具备的有益效果。在本实施例中,该压缩数据读取装置可以是存储设备120的模块(如芯片)。
如图9所示,压缩数据读取装置900包括获取模块910、处理模块920和读取模块930。压缩数据读取装置900用于实现上述图5至图7中所示的方法实施例中的功能。
获取模块910,用于获取用于请求第一压缩数据的读请求。
获取模块910获取主机110发送的用于请求第一压缩数据的读请求,该读请求指示了第一压缩数据的压缩信息和第一地址空间。
处理模块920,用于根据所述第一地址空间和预先存储的地址映射表,从第二地址空间中读取第二压缩数据。
第二地址空间小于第一地址空间,第二压缩数据为存储设备对第一压缩数据解压后再压缩确定的数据。对于地址映射表的表述,可参考上述表1的内容,在此不予赘述。
读取模块930,用于根据所述读请求指示的压缩信息对所述第二压缩数据进行解压,获取所述第一压缩数据。
读取模块930根据压缩信息中的压缩算法和压缩参数对第二压缩数据进行解压,得到第一压缩数据。存储设备120将该第一压缩数据返回至前端。
应理解,根据本申请实施例的存储设备120可对应于申请实施例中的压缩数据读取装置900,并可以对应于执行根据本申请实施例的方法图5至图7对应的相应主体,并且压缩数据读取装置900中的各个模块的操作和/或功能分别为了实现图3至图5中对应实施例的各个方法的相应流程,为了简洁,在此不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,DVD);还可以是半导体介质,例如,固态硬盘(solid state drive,SSD)。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。
Claims (18)
1.一种压缩数据读取方法,其特征在于,所述方法包括:
获取用于请求第一压缩数据的读请求;所述读请求用于指示所述第一压缩数据的压缩信息和第一地址空间;
根据所述第一地址空间和预先存储的地址映射表,从第二地址空间中读取第二压缩数据;所述第二地址空间小于所述第一地址空间,所述第二压缩数据为压缩所述第一压缩数据确定的数据;
根据所述读请求指示的压缩信息对所述第二压缩数据进行解压,获取所述第一压缩数据。
2.根据权利要求1所述的方法,其特征在于,所述地址映射表用于指示所述第一地址空间与第二地址空间的映射关系,所述映射关系为所述第一压缩数据被压缩前的存储位置和所述第二压缩数据的存储位置之间的对应关系。
3.根据权利要求1所述的方法,其特征在于,根据所述读请求指示的压缩信息对所述第二压缩数据进行解压,获取所述第一压缩数据,包括:
对所述第二压缩数据进行解压,得到所述第一压缩数据的原始数据;
根据所述压缩信息对所述原始数据进行压缩,得到所述第一压缩数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一地址空间中存在设定的数据粒度的数据,根据所述设定的数据粒度将所述数据写入缓冲区;
若所述缓冲区中的数据量满足所述第一地址空间指示的数据量,将所述缓冲区中的数据作为所述第一压缩数据。
5.一种压缩数据写入方法,其特征在于,所述方法包括:
将第一压缩数据写入第一地址空间;
压缩所述第一压缩数据获取第二压缩数据,将所述第二压缩数据写入第二地址空间;所述第二地址空间小于所述第一地址空间。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据所述第一地址空间和所述第二地址空间,获取地址映射表;所述地址映射表用于指示:所述第一压缩数据被压缩前的存储位置和所述第二压缩数据的存储位置之间的对应关系。
7.根据权利要求5所述的方法,其特征在于,所述压缩所述第一压缩数据获取第二压缩数据包括:
对所述第一压缩数据进行解压,得到所述第一压缩数据的原始数据;
根据预设的压缩算法对所述原始数据进行压缩,得到所述第二压缩数据。
8.一种压缩数据读取装置,其特征在于,所述装置包括:
获取模块,用于获取用于请求第一压缩数据的读请求;所述读请求用于指示所述第一压缩数据的压缩信息和第一地址空间;
处理模块,用于根据所述第一地址空间和预先存储的地址映射表,从第二地址空间中读取第二压缩数据;所述第二地址空间小于所述第一地址空间,所述第二压缩数据为压缩所述第一压缩数据确定的数据;
读取模块,用于根据所述读请求指示的压缩信息对所述第二压缩数据进行解压,获取所述第一压缩数据。
9.根据权利要求8所述的装置,其特征在于,所述地址映射表用于指示所述第一地址空间与第二地址空间的映射关系,所述映射关系为所述第一压缩数据被压缩前的存储位置和所述第二压缩数据的存储位置之间的对应关系。
10.根据权利要求8所述的装置,其特征在于,所述处理模块还用于对所述第二压缩数据进行解压,得到所述第一压缩数据的原始数据;根据所述压缩信息对所述原始数据进行压缩,得到所述第一压缩数据。
11.根据权利要求8所述的装置,其特征在于,所述读取模块,还用于若所述第一地址空间中存在设定的数据粒度的数据,根据所述设定的数据粒度将所述数据写入缓冲区;
所述读取模块,还用于若所述缓冲区中的数据量满足所述第一地址空间指示的数据量,将所述缓冲区中的数据作为所述第一压缩数据。
12.一种压缩数据写入装置,其特征在于,所述装置包括:
第一写入模块,用于将第一压缩数据写入第一地址空间;
第二写入模块,用于压缩所述第一压缩数据获取第二压缩数据,将所述第二压缩数据写入第二地址空间;所述第二地址空间小于所述第一地址空间。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
处理模块,用于根据所述第一地址空间和所述第二地址空间,获取地址映射表;所述地址映射表用于指示:所述第一压缩数据被压缩前的存储位置和所述第二压缩数据的存储位置之间的对应关系。
14.根据权利要求12所述的装置,其特征在于,所述第二写入模块还用于对所述第一压缩数据进行解压,得到所述第一压缩数据的原始数据;根据预设的压缩算法对所述原始数据进行压缩,得到所述第二压缩数据。
15.一种存储设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机指令;所述处理器执行所述计算机指令时,实现权利要求1至4中任一项所述的方法;和/或,所述处理器执行所述计算机指令时,实现权利要求5至7中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序或指令,当所述计算机程序或指令被处理设备执行时,实现权利要求1至4中任一项所述的方法;和/或,当所述计算机程序或指令被处理设备执行时,实现权利要求5至7中任一项所述的方法。
17.一种计算机程序产品,包括计算机程序或指令,其特征在于,当所述计算机程序或指令在被处理设备执行时,实现权利要求1至4中任一项所述的方法;和/或,当所述计算机程序或指令在被处理设备执行时,实现权利要求5至7中任一项所述的方法。
18.一种存储设备,其特征在于,包括:处理器、第一地址空间和第二地址空间;
所述第一地址空间,用于存储第一压缩数据;
所述第二地址空间,用于存储第二压缩数据;所述第二压缩数据为压缩所述第一压缩数据确定的数据,所述第二地址空间小于所述第一地址空间;
所述处理器,用于在获取到用于请求第一压缩数据的读请求时,执行权利要求1至4中任一项所述的方法;和/或,在获取到用于指示将所述第一压缩数据写入所述存储设备的写请求时,执行权利要求5至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211185059.3A CN117827079A (zh) | 2022-09-27 | 2022-09-27 | 压缩数据读取方法、写入方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211185059.3A CN117827079A (zh) | 2022-09-27 | 2022-09-27 | 压缩数据读取方法、写入方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117827079A true CN117827079A (zh) | 2024-04-05 |
Family
ID=90506418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211185059.3A Pending CN117827079A (zh) | 2022-09-27 | 2022-09-27 | 压缩数据读取方法、写入方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117827079A (zh) |
-
2022
- 2022-09-27 CN CN202211185059.3A patent/CN117827079A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11119668B1 (en) | Managing incompressible data in a compression-enabled log-structured array storage system | |
US11112971B2 (en) | Storage device, data management method, and data management program | |
US20170177497A1 (en) | Compressed caching of a logical-to-physical address table for nand-type flash memory | |
WO2014188528A1 (ja) | メモリ装置、計算機システム及びメモリ装置の制御方法 | |
US9684665B2 (en) | Storage apparatus and data compression method | |
US11042328B2 (en) | Storage apparatus and method for autonomous space compaction | |
TW201702860A (zh) | 自主空間壓縮之儲存裝置以及方法 | |
WO2017042978A1 (ja) | 計算機システム、ストレージ装置、及びデータの管理方法 | |
CN105094709A (zh) | 一种固态盘存储系统的动态数据压缩方法 | |
WO2021258749A1 (zh) | 一种写请求数据压缩方法、系统、终端及存储介质 | |
WO2017132797A1 (zh) | 数据整理方法、存储设备、存储控制器以及存储阵列 | |
US11487460B2 (en) | Deferred reclamation of invalidated entries associated with replication in a log-structured array | |
US10963377B2 (en) | Compressed pages having data and compression metadata | |
US11327929B2 (en) | Method and system for reduced data movement compression using in-storage computing and a customized file system | |
CN107423425B (zh) | 一种对k/v格式的数据快速存储和查询方法 | |
EP4354310A1 (en) | Data processing method and device | |
US20240070120A1 (en) | Data processing method and apparatus | |
US20030097523A1 (en) | External storage device within a computer network | |
WO2016084228A1 (ja) | ストレージ装置 | |
CN117827079A (zh) | 压缩数据读取方法、写入方法及装置 | |
CN114003573A (zh) | 文件系统的压缩方法、装置、设备、存储介质、程序产品 | |
CN113467699B (zh) | 一种提升可用存储容量方法及装置 | |
CN115905146A (zh) | 数据处理方法、装置、计算设备及存储系统 | |
CN116566396A (zh) | 数据压缩方法、装置、存储介质、设备集群及程序产品 | |
US11194498B1 (en) | Inline compression with small-write compression avoidance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |