CN117149723A - 有序字符串表文件的压缩方法和装置 - Google Patents

有序字符串表文件的压缩方法和装置 Download PDF

Info

Publication number
CN117149723A
CN117149723A CN202311118365.XA CN202311118365A CN117149723A CN 117149723 A CN117149723 A CN 117149723A CN 202311118365 A CN202311118365 A CN 202311118365A CN 117149723 A CN117149723 A CN 117149723A
Authority
CN
China
Prior art keywords
sst
files
compression
file
sst files
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311118365.XA
Other languages
English (en)
Inventor
员鹏
齐辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
Original Assignee
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung China Semiconductor Co Ltd, Samsung Electronics Co Ltd filed Critical Samsung China Semiconductor Co Ltd
Priority to CN202311118365.XA priority Critical patent/CN117149723A/zh
Publication of CN117149723A publication Critical patent/CN117149723A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供了一种SST文件的压缩方法和装置,所述方法包括:响应于确定需要对LSM‑tree的第一层执行压缩操作,确定第一层中的第一多个SST文件以及第二层中的第二多个SST文件;基于所述每个SST文件与第二多个SST文件中的键范围与所述每个SST文件的键范围至少部分重叠的SST文件之间的键重叠率以及与第一多个SST文件和第二多个SST文件对应的所述ZNS SSD的区域的属性信息确定第一多个SST文件的压缩优先级;优先对第一多个SST文件中的具有较高压缩优先级的SST文件执行压缩。

Description

有序字符串表文件的压缩方法和装置
技术领域
本申请涉及数据存储技术领域,更具体地,涉及一种有序字符串表(SortedString Table,SST)文件的压缩方法和装置。
背景技术
基于日志结构合并树(Log-Structured Merge-Tree,LSM-Tree)存储结构(例如,RocksDB或LevelDB)存储的数据可被存储到区域(或分区)命名空间(Zoned Namespaces,ZNS)固态驱动器(Solid State Drive,SSD)中。可对LSM-Tree的层(level)中的存储在区域中的多个SST文件执行压缩,在压缩操作后,所述多个SST文件变为所述区域中的无效文件,通过压缩操作获得的新SST文件被存储在ZNS SSD的具有空闲空间的区域中。根据ZNS SSD的存储机制,仅当区域中文件全部为无效文件时(即不存在有效数据碎片时),该区域才能被回收。现有的压缩策略根据参与压缩操作的开始层中的SST文件与输出层中的SST文件的键重叠率来确定开始层中的SST文件的压缩顺序,这样的压缩机制无法保证优先压缩能够尽快被回收的区域对应的SST文件,导致区域无法被及时回收,从而降低了ZNS SSD存储空间的利用率。
因此,亟需一种能够提高ZNS SSD空间利用率的数据压缩机制。
发明内容
本公开的目的在于提供一种SST文件的压缩方法和装置,其可根据压缩开始层SST文件与压缩输出层SST文件的键重叠率以及SST文件所在的ZNS SSD的区域的空间利用信息确定SST文件的压缩优先级,根据确定的压缩优先级对SST文件执行压缩,可以使得空间利用率较低的区域被及时收回,从而提高ZNS SSD的存储空间利用率。
根据本公开的示例性实施例的一方面,提供了一种有序字符串表(SST)文件的压缩方法,其中,所述SST文件存储在区域命名空间固态驱动器(ZNS SSD)的区域中,所述方法包括:响应于确定需要对日志结构合并树(LSM-tree)的第一层执行压缩操作,确定第一层中的第一多个SST文件以及第二层中的第二多个SST文件,其中,第一多个SST文件中的每个SST文件的键范围与第二层中的SST文件的键范围至少部分重叠,第二多个SST文件中的每个的键范围与第一层中的SST文件的键范围至少部分重叠,其中,第二层为LSM-tree中的与第一层相邻且比第一层高的层;基于第一多个SST文件中的所述每个SST文件与第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件之间的键重叠率以及与第一多个SST文件和第二多个SST文件对应的所述ZNS SSD的区域的属性信息确定第一多个SST文件的压缩优先级;优先对第一多个SST文件中的具有较高压缩优先级的SST文件执行压缩。
根据本公开的实施例,根据压缩开始层SST文件与压缩输出层SST文件的键重叠率以及SST文件所在的ZNS SSD的区域的属性信息确定SST文件的压缩优先级,并根据所述压缩优先级优先压缩具有较高压缩优先级的SST文件,可尽快回收存储空间利用率较低的区域,从而提高ZNS SSD的存储空间利用率。
可选地,基于所述键重叠率以及与第一多个SST文件和第二多个SST文件对应的所述ZNS SSD的区域的属性信息确定第一多个SST文件的压缩优先级的步骤包括:确定第一多个SST文件中的所述每个SST文件以及第二多个SST文件中键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件对应的所述ZNS SSD的多个区域中的每个区域的预设类型的属性信息;按照预设规则基于所述每个区域的预设类型的属性信息确定所述每个区域对应的因子;基于所述多个区域对应的因子以及所述键重叠率确定第一多个SST文件中的所述每个SST文件的压缩优先级值;以及根据第一多个SST文件的压缩优先级值确定所述压缩优先级。
根据本公开的实施例,由于区域的属性信息可反映区域的存储空间利用信息,因此,基于区域的属性信息以及压缩开始层SST文件与压缩输出层SST文件的键重叠率确定压缩顺序,可尽快回收存储空间利用率较低的区域,从而提高ZNS SSD的存储空间利用率。
可选地,所述预设类型的属性信息包括以下项中的至少一个:所述每个区域中无效文件的大小与所述每个区域的容量之比、所述每个区域的使用时长以及所述每个区域的访问次数的倒数。
根据本公开的实施例,所述每个区域中无效文件的大小与所述每个区域的容量之比、所述每个区域的使用时长以及所述每个区域的访问次数中的至少一个可有效反映区域的利用率,因此,基于以上属性信息确定的压缩优先级可使得空间利用率低的区域被尽快回收。
可选地,按照预设规则基于所述每个区域的预设类型的属性信息确定所述每个区对应的因子的步骤包括:对所述每个区域的预设类型的属性信息执行加权求和来获得所述每个区域对应的因子。
可选地,基于所述多个区域对应的因子以及所述键重叠率确定第一多个SST文件中的所述每个SST文件的压缩优先级值的步骤包括:确定所述多个区域对应的因子中的最大值;根据所述键重叠率以及所述最大值确定第一多个SST文件中的所述每个SST文件的压缩优先级值。
可选地,根据所述键重叠率以及所述最大值确定第一多个SST文件中的所述每个SST文件的压缩优先级值的步骤包括:将所述最大值+1与所述键重叠率之比作为第一多个SST文件中的所述每个SST文件的压缩优先级值。
可选地,根据第一多个SST文件的压缩优先级值确定所述压缩优先级的步骤包括:将具有较大压缩优先级值的SST文件确定为具有较高压缩优先级。
可选地,优先对第一多个SST文件中的具有较高压缩优先级的SST文件执行压缩的步骤包括:优先选择第一多个SST文件中的具有较高压缩优先级的SST文件,对所选择的具有较高压缩优先级的SST文件以及第二多个SST文件中的键范围与所述选择的具有较高压缩优先级的SST文件的键范围至少部分重叠的SST文件执行压缩。
可选地,所述无效文件包括:所述每个区域中的通过针对第一多个SST文件中的所述每个SST文件以及第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件的压缩操作能够被删除的SST文件;和/或,使用时长指示所述每个区域最后的被打开的时间与当前时间的间隔。
根据本公开的实施例的另一方面,提供了一种有序字符串表SST文件的压缩装置,其中,所述SST文件存储在区域命名空间固态驱动器ZNS SSD的区域中,所述装置包括:第一确定单元,被配置为响应于确定需要对日志结构合并树LSM-tree的第一层执行压缩操作,确定第一层中的第一多个SST文件以及第二层中的第二多个SST文件,其中,第一多个SST文件中的每个SST文件的键范围与第二层中的SST文件的键范围至少部分重叠,第二多个SST文件中的每个的键范围与第一层中的SST文件的键范围至少部分重叠,其中,第二层为LSM-tree中的与第一层相邻且比第一层高的层;第二确定单元,被配置为基于第一多个SST文件中的所述每个SST文件与第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件之间的键重叠率以及与第一多个SST文件和第二多个SST文件对应的所述ZNS SSD的区域的属性信息确定第一多个SST文件的压缩优先级;以及压缩单元,被配置为优先对第一多个SST文件中的具有较高压缩优先级的SST文件执行压缩。
可选地,第二确定单元被配置为:确定第一多个SST文件中的所述每个SST文件以及第二多个SST文件中键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件对应的所述ZNS SSD的多个区域中的每个区域的预设类型的属性信息;按照预设规则基于所述每个区域的预设类型的属性信息确定所述每个区域对应的因子;基于所述多个区域对应的因子以及所述键重叠率确定第一多个SST文件中的所述每个SST文件的压缩优先级值;以及根据第一多个SST文件的压缩优先级值确定所述压缩优先级。
可选地,所述预设类型的属性信息包括以下项中的至少一个:所述每个区域中无效文件的大小与所述每个区域的容量之比、所述每个区域的使用时长以及所述每个区域的访问次数的倒数。
可选地,第二确定单元被配置为:对所述每个区域的预设类型的属性信息执行加权求和来获得所述每个区域对应的因子。
可选地,第二确定单元被配置为:确定所述多个区域对应的因子中的最大值;以及根据所述键重叠率以及所述最大值确定第一多个SST文件中的所述每个SST文件的压缩优先级值。
可选地,第二确定单元被配置为:将所述最大值+1与所述键重叠率之比作为第一多个SST文件中的所述每个SST文件的压缩优先级值。
可选地,第二确定单元被配置为:将具有较大压缩优先级值的SST文件确定为具有较高压缩优先级。
可选地,压缩单元被配置为:优先选择第一多个SST文件中的具有较高压缩优先级的SST文件,并对所选择的具有较高压缩优先级的SST文件以及第二多个SST文件中的键范围与所述选择的具有较高压缩优先级的SST文件的键范围至少部分重叠的SST文件执行压缩。
可选地,所述无效文件包括:所述每个区域中的通过针对第一多个SST文件中的所述每个SST文件以及第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件的压缩操作能够被删除的SST文件;和/或,使用时长指示所述每个区域最后的被打开的时间与当前时间的间隔。
根据本公开的实施例的另一方面,提供了一种电子装置,包括:存储器,被配置为存储一个或更多个指令;多个存储装置;以及主处理器,被配置为执行所述一个或更多个指令以使得所述主处理器执行如本文所述的SST文件的压缩方法。
根据本公开的实施例的另一方面,提供了一种主机存储系统,包括:主机,包括主机存储器和主机控制器;以及存储装置,其中,所述主机控制器被配置为执行如本文所述的SST文件的压缩方法。
根据本公开的实施例的另一方面,提供了一种数据中心系统,包括:多个应用服务器;以及多个存储服务器,其中,所述多个应用服务器中的至少一个和/或所述多个存储服务器中的至少一个被配置为执行如本文所述的SST文件的压缩方法。
根据本公开的实施例的另一方面,提供了一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时使得所述处理器实现如本文所述的SST文件的压缩方法。
附图说明
通过下面结合附图对示例实施例进行的描述,上述和其它目方面将会更加清楚,其中:
图1示出了LSM-tree的结构的示例;
图2示出了LSM-tree的层与ZNS SSD的区域的对应关系;
图3示出了LSM-tree的层中的SST文件的示例。
图4示出了压缩完成后的SST文件;
图5示出了现有通用方案的示意图;
图6示出了根据本公开的实施例的SST文件的压缩方法的流程图;
图7示出了区域的使用时长以及访问次数的示例;
图8示出了根据本公开的实施例的SST文件的压缩方法与传统方法的比较示图;
图9示出了根据本公开的实施例的SST文件的压缩装置的结构的框图;以及
图10为根据本公开的实施例的电子装置的示意图;
图11是根据本公开实施例的主机存储系统的框图;以及
图12为根据本公开的实施例的应用了存储装置的数据中心的示图。
具体实施方式
在下文中,参照附图对本公开的各种实施例进行描述,其中,相同的标号用于表示相同或相似的元件、特征和结构。然而,不旨在由本文所述的各种实施例将本公开限制于具体实施例,并且旨在于:本公开覆盖本公开的所有修改、等同物和/或替代物,只要它们在所附权利要求及其等同物的范围内。在以下说明书和权利要求书中使用的术语和词语不限于它们的词典含义,而是仅被用于使得能够清楚和一致地理解本公开。因此,对于本领域技术人员应显而易见的是:提供本公开的各种实施例的以下描述仅用于说明的目的,而不是为了限制由所附权利要求和它们的等同物限定的本公开的目的。
应理解,除非上下文另外明确指出,否则单数形式包括复数形式。本文使用的术语“包括”、“包含”和“具有”指示公开的功能、操作或元件的存在,但不排除其它功能、操作或元件。
例如,表述“A或B”、或“A和/或B中的至少一个”可指示A和B、A或者B。例如,表述“A或B”或“A和/或B中的至少一个”可指示(1)A、(2)B或(3)A和B两者。
在本公开的各种实施例中,意图是:当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“耦接”或“连接”或者被“耦接”或者“连接”到另一组件(例如,第二组件)时,所述组件可被直接连接到所述另一组件,或者可通过另一组件(例如,第三组件)被连接。相比之下,当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“直接耦接”或“直接连接”或者被直接耦接到或直接连接到另一组件(例如,第二组件)时,在所述组件和所述另一组件之间不存在另一组件(例如,第三组件)。
在描述本公开的各种实施例中使用的表述“被配置为”可以例如根据情况与诸如“适用于”、“具有…的能力”、“被设计为”、“适合于”、“被制造为”和“能够”的表述互换使用。术语“被配置为”可不一定指示按照硬件“被专门设计为”。相反,在一些情况下的表述“被配置为...的装置”可指示所述装置和另一装置或者部分“能够…”。例如,表述“被配置为执行A、B和C的处理器”可指示用于执行相应操作的专用处理器(例如,嵌入式处理器)或用于通过执行存储在存储器装置中的至少一个软件程序来执行相应的操作的通用处理器(例如,中央处理单元CPU或应用处理器(AP))。
本文使用的术语在于描述本公开的某些实施例,但并不旨在限制其它实施例的范围。除非本文另外指出,否则本文使用的所有术语(包括技术或科学术语)可具有与本领域技术人员通常理解的含义相同含义。通常,词典中定义的术语应被视为具有与相关领域中的上下文含义相同的含义,并且,除非本文明确地定义,否则不应被不同地理解或被理解为具有过于正式的含义。在任何情况下,本公开中定义的术语也不旨在被解释为排除本公开的实施例。
为了便于理解本公开,首先对相关技术进行说明。
ZNS SSD是一种区域存储装置,其将存储空间划分为具有固定大小的多个区域或分区(zone),每个区域仅支持顺序写。ZNS SSD的存储块接口对外开放以允许主机可根据业务需要决定数据放置的位置。如果要重新针对一个区域执行写入,需要发送特定的命令(例如,重置(RESET)命令)来重置所述一个区域以将所述一个区域中存储的数据全部清除,然后对重置后的区域执行数据写入。ZNS SSD的固件(Firmware,FW)没有复杂垃圾回收(GC)机制,所以不需要预留空间(Over-Provisioning,OP),这使得用户可以使用更多的有效空间。
LSM-tree包括内存表(MemTable)和多个level。当MemTable的大小达到预定的大小时,MemTable中的数据被刷入到一个SST文件(以下也可称为SST)中,多个SST文件被分组为一个排序序列,称为层(level)。
可针对层中的SST文件执行压缩(compaction)操作。具体地,从第i层(Leveli)中选择牺牲(victim)SST文件,对选择的牺牲SST以及第i+1层(Leveli+1)中的键(key)或键范围与所述选择的牺牲SST文件的键或键范围至少部分重叠的SST文件执行压缩操作,然后在Leveli+1中生成一个或更多个新的SST。在压缩过程中,被覆盖和删除的键被回收。
图1示出了LSM-tree的结构的示例。
参照图1,可对level1中的第2个SST文件以及level2中的键范围与所述第2个SST文件的键范围至少部分重叠的第1个至第3个SST文件执行压缩操作,可对level2中的第4个SST文件以及level3中的键范围与所述第4个SST文件的键范围至少部分重叠的第4个和第5个SST文件执行压缩操作。
由于针对SST文件的写入为顺序写入,这与ZNS SSD的特性相符,因此基于LSM-tree的应用非常适用于ZNS SSD。
基于LSM-tree的数据库在ZNS SSD上的数据放置策略是将各层的SST放到与各层相应的区域中。因为相同层的SST文件有相似的生命周期,通过SST文件参与压缩操作产生的SST文件的失效时间接近。
图2示出了LSM-tree的层与ZNS SSD的区域的对应关系。
参照图2,不同层的SST文件被存储在ZNS SSD的不同区域中。
基于LSM-tree的存储引擎在执行压缩操作时先按照特定的规则对压缩开始层中的SST文件进行优先级排序,再选择优先级最高的SST文件执行压缩。不同的优先级排序规则会产生不一样的优先级,从而影响到对SST文件的选择。
以RocksDB为例,说明现有技术中选择压缩开始层中的SST文件的过程。
首先,确定压缩开始层中的键范围与压缩输出层中的SST文件的键范围至少部分重叠的SST文件,并将确定的SST文件与输出层中的键范围与确定的SST文件的键范围至少部分重叠的SST文件组成一个SST集合。
图3示出了LSM的层中的SST文件的示例。
参照图3,假设Leveli为压缩开始层,Leveli+1为压缩输出层,则可将Leveli中的键(或键范围)为11-29的SST文件SST0与Leveli+1中的键为0-15的SST文件SST2以及键为20-28的SST文件SST3组成SST集合(set)0:{SST0,SST2,SST3},将Leveli中的键为40-85的SST文件SST1与Leveli+1中的键为30-48的SST文件SST4、键为51-75的SST文件SST5以及键为80-88的SST文件SST6组成SST集合1:{SST1,SST4,SST5,SST6}。
然后,计算各个SST集合的键重叠率。具体地,可如下计算SST集合0的键重叠率ratio0和SST集合1的键重叠率ratio1
ratio0=(S2+S3)×1024/S0,
ratio1=(S4+S5+S6)×1024/S1,
其中,S0、S1、S2、S3、S4、S5和S6分别代表SST0、SST1、SST2、SST3、SST4、SST5和SST6的键的范围大小。例如,S0为19(即29-11+1),S2为16(即15-0+1)。
然后确定ratio0和ratio1中的最小值,并对最小值对应的集合中的SST文件优先执行压缩操作。
参照图3,显然ratio0<ratio1,因此,优先对SST0、SST2、SST3执行压缩。
图4示出了压缩完成后的SST文件。参照图4,压缩生成的新SST文件SST8被写入Leveli+1中,并且SST0、SST2、SST3被删除。
压缩操作后,由于参与了压缩操作的SST文件被删除,区域内与删除的SST文件对应的空间变为无效,从而形成空洞(hole)。由于有空洞的区域中依然存在有效数据,并且ZNS SSD的FW没有垃圾回收(garbage collection,GC)功能,因此无法对有空洞的区域进行回收,从而导致空间放大(space amplification)。
如图4所示,在SST集合0进行压缩后,由于没有区域可被回收,所以需要额外的区域来存储新生成的SST8。空间放大带来了存储空间的浪费,从而增加了总拥有成本(TotalCost of Ownership,TCO)。
为了解决上述空间放大问题,目前通用方案是通过主机端的GC将具有空洞的区域(旧区域)中的有效数据复制到其它区域,并擦除具有空洞的区域中的数据以便区域的循环再利用。
图5示出了现有通用方案的示意图。
首先,将区域1中的有效文件SST4以及区域2中的有效文件SST5和SST6复制到区域4中,然后回收区域1和2,将新生成的SST文件SST8存储在回收后的区域1中。
然而这种基于主机的GC操作会带来以下不利效果:
1)占用主机端资源:基于主机端的GC操作(例如,处理IO请求,主机端到设备端的数据传输,元数据的更新等)所占用的资源远远大于设备端GC;
2)由于需要搬移更多的数据,处理更多的IO请求导致系统性能降低;以及
3)尽管减少了空间放大,但是由于GC需要搬移有效数据,有效数据可能需要写入多次,从而带来写放大。
本公开提出的SST文件的压缩方法可在一定程度上降低写放大。
图6示出了根据本公开的实施例的SST文件的压缩方法的流程图。
参照图6,在步骤S601,响应于确定需要对日志结构合并树LSM-tree的第一层执行压缩操作,确定第一层中的第一多个SST文件以及第二层中的第二多个SST文件,其中,第一多个SST文件中的每个SST文件的键范围与第二层中的SST文件的键范围至少部分重叠,第二多个SST文件中的每个的键范围与第一层中的SST文件的键范围至少部分重叠,其中,第二层为LSM-tree中的与第一层相邻且比第一层高的层。
作为示例,当第一层中的SST文件的数量超过设定值或者第一层中的SST文件的大小超过预定容量(例如,第一层的容量或更小的容量)时,可确定需要对第一层执行压缩操作。
本领域技术人员应当理解,第一层即为参与压缩操作的开始层,第二层为参与压缩操作的输出层。
例如,参照图3,当确定需要对Leveli执行压缩操作时,第一多个SST文件为SST0和SST1,第二多个SST文件为SST2、SST3、SST4、SST5和SST6。
在步骤S602,基于第一多个SST文件中的所述每个SST文件与第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件之间的键重叠率(Overlapping Ratio)以及与第一多个SST文件和第二多个SST文件对应的所述ZNS SSD的分区的属性信息确定第一多个SST文件的压缩优先级。
作为示例,所述属性信息可指示区域的空间利用率。
作为示例,所述键重叠率可基于参照图3的描述的键重叠率的计算方法进行计算。
本领域技术人员应当理解,键重叠率的具体计算方式不限于此,可以是任何其它可以反映键的重叠程度的计算方式。
作为示例,基于所述键重叠率以及与第一多个SST文件和第二多个SST文件对应的所述ZNS SSD的分区的属性信息确定第一多个SST文件的压缩优先级的步骤包括:确定第一多个SST文件中的所述每个SST文件以及第二多个SST文件中键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件对应的所述ZNS SSD的多个分区中的每个分区的预设类型的属性信息;按照预设规则基于所述每个分区的预设类型的属性信息确定所述每个分区对应的因子;基于所述多个分区对应的因子以及所述键重叠率确定第一多个SST文件中的所述每个SST文件的压缩优先级值;以及根据第一多个SST文件的压缩优先级值确定所述压缩优先级。
作为示例,所述预设类型的属性信息包括以下项中的至少一个:所述每个分区中无效文件的大小与所述每个分区的容量之比、所述每个分区的使用时长以及所述每个分区的访问次数的倒数。
作为示例,所述无效文件包括:所述每个分区中的通过针对第一多个SST文件中的所述每个SST文件以及第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件的压缩操作能够被删除的SST文件;和/或,使用时长指示所述每个分区最后的被打开的时间与当前时间的间隔。
图7示出了区域的使用时长以及访问次数的示例。
表1示出了与图7相应的分区使用时长和访问次数。
表1
使用时长 访问次数
区域0(z0) t6-t9 12
区域1(z1) t1-t3 23
作为示例,按照预设规则基于所述每个分区的预设类型的属性信息确定所述每个分区对应的因子的步骤包括:对所述每个分区的预设类型的属性信息执行加权求和来获得所述每个分区对应的因子。
具体地,可如下计算所述每个分区的预设类型的属性信息对应的因子:
Factor=M·W,
其中,M=(m1,m2…mn),其中,m1,m2…mN表示预设类型的属性信息(或属性值),N表示所述属性信息的类型的数量,W=(w1,w1…wN),w1,w1…wN为分别与m1,m2…mN对应的权重,其中,
作为示例,W可以是预设的或者根据预设规则被确定的。
图8示出了根据本公开的实施例的SST的压缩方法与传统方法的比较示图。
例如,参照图8,第一多个SST文件为SST0、SST1和SST2,第二多个SST文件为SST3、SST4、SST5、SST6和SST7。
根据本公开的实施例,可如上获得:SSTO以及键范围与SSTO的键范围至少部分重叠的SST文件SST3和SST4对应的区域0和区域2的因子Factor0134和Factor2134;SST1以及键范围与SST1的键范围至少部分重叠的SST文件SST5对应的区域0和区域2的因子Factor015和Factor215;SST2以及键范围与SST2的键范围至少部分重叠的SST文件SST6和SST7对应的区域1和区域3的因子Factor1267和Factor3267
作为示例,基于所述多个分区对应的因子以及所述键重叠率确定第一多个SST文件中的所述每个SST文件的压缩优先级值的步骤包括:确定所述多个分区对应的因子中的最大值;根据所述键重叠率以及所述最大值确定第一多个SST文件中的所述每个SST文件的压缩优先级值(或得分)。
作为示例,根据所述键重叠率以及所述最大值确定第一多个SST文件中的所述每个SST文件的压缩优先级值的步骤包括:将所述最大值+1与所述键重叠率之比作为第一多个SST文件中的所述每个SST文件的压缩优先级值。
作为示例,第一多个SST文件的所述每个SST文件的得分(或压缩优先级值)可如下计算:
score=(1+max{F0,F1,…Fl})/overlappingRatio,其中,F0,F1,…FL表示第一多个SST文件中的所述每个SST文件以及第二多个SST文件中的键与第一多个SST文件中的所述每个SST文件的键至少部分重叠的文件对应的多个分区的各个因子,L表示所述多个分区的分区数量。
例如,参照图8,对于SSTO、SST3和SST4对应的多个分区的分区数量可以为3(即多个分区包括分区0、分区2、分区2)。
例如,可确定Factor0034和Factor2034中的最大值max1;Factor015和Factor215中的最大值max2;Factor1267和Factor3267中的最大值max3。
例如,针对SST0,其对应的压缩优先级值为(1+max1)/OverlappingRatio_SST0,其中,OverlappingRatio_SST0表示SST0与SST3和SST4之间的键重叠率(即SST0的键范围与SST3和SST4的键范围之间的重叠率),类似地,可获得SST1、SST2对应的压缩优先级值。
作为示例,根据第一多个SST文件的压缩优先级值确定所述压缩优先级的步骤包括:将具有较大压缩优先级值的SST文件确定为具有较高压缩优先级。
返回参照图6,在步骤S603,优先对第一多个SST文件中的具有较高压缩优先级的SST文件执行压缩。
作为示例,优先对第一多个SST文件中的具有较高压缩优先级的SST文件执行压缩的步骤包括:优先选择第一多个SST文件中的具有较高压缩优先级的SST文件,对所选择的具有较高压缩优先级的SST文件以及第二多个SST文件中的键范围与所述选择的具有较高压缩优先级的SST文件的键范围至少部分重叠的SST文件执行压缩。
例如,参照图8,经过计算,SST2的压缩优先级值最大,因此,优先对SST2执行压缩,即优先对SST2、SST6和SST7执行压缩。在压缩过程中,区域1和2可被回收,然后将新生成的SST文件SST8存储到区域1中。可见,在压缩后,仅3个区域被占用。
而根据传统方法,由于SSTO的键范围与SST3和SST4的键范围之间的重叠率最小,会优先对SSTO、SST3和SST4执行压缩。参照图7,在压缩操作后,由于区域1和3中还存在有效数据,因此,5个区域被占用。
作为示例,可通过区域管理器(Zone Manager)对区域资源进行管理。具体地,区域管理器可池化ZNS SSD的区域资源,负责从区域池中对区域进行分配,并同步ZNS SSD上的区域指标(Metric)。
作为示例,当需要存储数据时,区域管理器的配置(Provisioning)模块可为将被写入的数据分配新的区域;当区域中的所有数据失效时,配置模块可回收该区域。
作为示例,区域管理器的指标(Metric)模块可为区域对应的因子的计算提供区域的指标。
以上参照图1至图8对根据本公开的实施例的SST文件的压缩方法行了描述,下面参照图9根据本公开的实施例的SST文件的压缩装置、电子装置、存储装置、系统以及计算机可读存储介质进行描述。
图9示出了根据本公开的实施例的SST文件的压缩装置900的结构的框图。
参照图9,SST文件的压缩装置900可包括第一确定单元901、第二确定单元902以及压缩单元903。
本领域技术人员应当理解,SST文件的压缩装置900还可另外包括其它组件,并且SST文件的压缩装置900包括的组件中的至少一个可被组合或者拆分。
作为示例,第一确定单元901可被配置为响应于确定需要对日志结构合并树LSM-tree的第一层执行压缩操作,确定第一层中的第一多个SST文件以及第二层中的第二多个SST文件,其中,第一多个SST文件中的每个SST文件的键范围与第二层中的SST文件的键范围至少部分重叠,第二多个SST文件中的每个的键范围与第一层中的SST文件的键范围至少部分重叠,其中,第二层为LSM-tree中的与第一层相邻且比第一层高的层。
作为示例,第二确定单元902可被配置为:基于第一多个SST文件中的所述每个SST文件与第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件之间的键重叠率以及与第一多个SST文件和第二多个SST文件对应的所述ZNS SSD的区域的属性信息确定第一多个SST文件的压缩优先级。
作为示例,压缩单元903可被配置为优先对第一多个SST文件中的具有较高压缩优先级的SST文件执行压缩。
作为示例,第二确定单元902可被配置为:确定第一多个SST文件中的所述每个SST文件以及第二多个SST文件中键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件对应的所述ZNS SSD的多个区域中的每个区域的预设类型的属性信息;按照预设规则基于所述每个区域的预设类型的属性信息确定所述每个区域对应的因子;基于所述多个区域对应的因子以及所述键重叠率确定第一多个SST文件中的所述每个SST文件的压缩优先级值;以及根据第一多个SST文件的压缩优先级值确定所述压缩优先级。
作为示例,所述预设类型的属性信息包括以下项中的至少一个:所述每个区域中无效文件的大小与所述每个区域的容量之比、所述每个区域的使用时长以及所述每个区域的访问次数的倒数。
作为示例,第二确定单元902可被配置为:对所述每个区域的预设类型的属性信息执行加权求和来获得所述每个区域对应的因子。
作为示例,第二确定单元902被配置为:确定所述多个区域对应的因子中的最大值;以及根据所述键重叠率以及所述最大值确定第一多个SST文件中的所述每个SST文件的压缩优先级值。
作为示例,第二确定单元902可被配置为:将所述最大值+1与所述键重叠率之比作为第一多个SST文件中的所述每个SST文件的压缩优先级值。
作为示例,第二确定单元902可被配置为:将具有较大压缩优先级值的SST文件确定为具有较高压缩优先级。
作为示例,压缩单元903可被配置为:优先选择第一多个SST文件中的具有较高压缩优先级的SST文件,并对所选择的具有较高压缩优先级的SST文件以及第二多个SST文件中的键范围与所述选择的具有较高压缩优先级的SST文件的键范围至少部分重叠的SST文件执行压缩。
作为示例,所述无效文件可包括:所述每个区域中的通过针对第一多个SST文件中的所述每个SST文件以及第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件的压缩操作能够被删除的SST文件;和/或,使用时长指示所述每个区域最后的被打开的时间与当前时间的间隔。
图10为根据本公开的实施例的电子装置1000的示意图。
图10的电子装置1000基本上可以是移动系统,例如便携式通信终端(例如,移动电话)、智能手机、平板个人计算机(PC)、可穿戴装置、医疗保健装置或物联网(IOT)装置。但是,图10的电子装置1000不必限于移动系统,其可以是PC、膝上型计算机、服务器、媒体播放器或汽车装置(例如,导航装置)。
参照图10,电子装置1000可以包括主处理器1100、存储器(例如,1200a和1200b)以及存储装置(例如,1300a和1300b)。并且,电子装置1000可以包括图像捕获装置1410、用户输入装置1420、传感器1430、通信装置1440、显示器1450、扬声器1460、供电装置1470以及连接接口1480中的至少一个。
主处理器1100可以控制电子装置1000的所有操作,更具体地,可以控制电子装置1000中包括的其他组件的操作。主处理器1100可以被实现为通用处理器、专用处理器或应用程序处理器等。
主处理器1100可以包括至少一个中央处理器(CPU)核1110,并且还包括控制器1120,其用于控制存储器1200a和1200b和/或存储装置1300a和1300b。在一些实施例中,主处理器1100可以进一步包括加速器1130,其是用于诸如人工智能(AI)数据操作等的高速数据操作的专用电路。加速器1130可以包括图形处理单元(GPU)、神经处理单元(NPU)和/或数据处理单元(DPU)等,并且被实现为与主处理器1100的其他组件物理上分离的芯片。
存储器1200a和1200b可以用作电子装置1000的主存储装置。尽管存储器1200a和1200b可以分别包括易失性存储器,例如静态随机存取存储器(SRAM)和/或动态随机存取存储器(DRAM)等,但是存储器1200a和1200b可以分别包括非易失性存储器,例如闪存、相变随机存取存储器(PRAM)和/或电阻式随机存取存储器(RRAM)等。存储器1200a和1200b可以在与主处理器1100相同的封装中实现。
存储装置1300a和1300b可以用作非易失性存储装置,其被配置为不管是否被供电都存储数据,并且具有比存储器1200a和1200b更大的存储容量。存储装置1300a和1300b可以分别包括存储器控制器(STRG CTRL)1310a和1310b以及非易失性存储器(NVM)1320a和1320b,其被配置为经由存储器控制器1310a和1310b的控制来存储数据。尽管NVM 1320a和1320b可以包括具有二维(2D)或三维(3D)结构的V-NAND闪存,但是NVM 1320a和1320b可以包括其他类型的NVM,例如PRAM和/或RRAM等。
存储装置1300a和1300b可以与主处理器1100物理上分离并且包括在电子装置1000中,或者可以在与主处理器1100相同的封装中实现。另外,存储装置1300a和1300b可以具有固态装置(SSDs)或存储卡的类型,并且可以通过诸如稍后将描述的连接接口1480之类的接口与系统100的其他组件可移除地结合。存储装置1300a和1300b可以是应用了诸如通用闪存(UFS)、嵌入式多媒体卡(eMMC)或NVMe之类的标准协议的装置,但不限于此。
图像捕获装置1410可以拍摄静止图像或运动图像。图像捕获装置1410可以包括照相机、便携式摄像机和/或网络摄像头等。
用户输入装置1420可以接收由电子装置1000的用户输入的各种类型的数据,并且包括触摸板、键区、键盘、鼠标和麦克风等。
传感器1430可以检测可以从电子装置1000的外部获得的各种类型的物理量,并将所检测的物理量转换成电信号。传感器1430可以包括温度传感器、压力传感器、照度传感器、位置传感器、加速度传感器、生物传感器和/或陀螺仪传感器等。
通信装置1440可以根据各种通信协议在电子装置1000外部的其他装置之间发送和接收信号。通信装置1440可以包括天线、收发器或调制解调器等。
显示器1450和扬声器1460可以用作输出装置,其被配置为分别向电子装置1000的用户输出视觉信息和听觉信息。
供电装置1470可以适当地转换从嵌入在电子装置1000中的电池(未示出)和/或外部电源供应的电力,并且将所转换的电力供应给电子装置1000的每个组件。
连接接口1480可以提供电子装置1000和外部装置之间的连接,该外部装置连接到电子装置1000并且能够向电子装置1000发送数据和从电子装置1000接收数据。连接接口1480可以通过使用各种接口方案来实现,例如,高级技术附件(ATA)、串行ATA(SATA)、外部串行ATA(e-SATA)、小型计算机系统接口(SCSI)、串行SCSI(SAS)、外部设备互连(PCI)、PCIexpress(PCIe)、NVMe、IEEE 1394、通用串行总线(USB)接口、安全数码(SD)卡接口、多媒体卡(MMC)接口、嵌入式多媒体卡(eMMC)接口、UFS接口、嵌入式UFS(eUFS)接口和紧凑式闪存(CF)卡接口等。
根据本公开的实施例,提供了一种电子装置,包括:存储器(例如,图10中的1200a和1200b),存储一个或更多个指令;多个存储装置(例如,图10中的1300a和1300b);以及主处理器(例如,图10中的1100),被配置为执行所述一个或更多个指令以使得所述主处理执行如本文所述的SST文件的压缩方法。
图11是根据本公开实施例的主机存储系统10的框图。
主机存储系统10可以包括主机100和存储装置200。此外,存储装置200可以包括存储器控制器210和NVM 220。根据本发明的示例性实施例,主机100可以包括主机控制器110和主机存储器120。主机存储器120可以用作缓冲存储器,其被配置为临时存储要发送到存储装置200的数据或从存储装置200接收的数据。
存储装置200可以包括存储介质,其被配置为响应于来自主机100的请求而存储数据。作为示例,存储装置200可以包括SSD、嵌入式存储器和可装卸的外部存储器中的至少一个。当存储装置200是SSD时,存储装置200可以是符合NVMe标准的装置。当存储装置200是嵌入式存储器或外部存储器时,存储装置200可以是符合UFS标准或eMMC标准的装置。主机100和存储装置200均可以根据采用的标准协议来生成包(packet)并发送该包。
当存储装置200的NVM 220包括闪存时,所述闪存可以包括2D NAND存储阵列或3D(或垂直)NAND(VNAND)存储阵列。作为另一示例,存储装置200可以包括各种其他种类的NVM。例如,存储装置200可以包括磁性随机存取存储器(MRAM)、自旋转移扭矩MRAM、导电桥式RAM(CBRAM)、铁电RAM(FRAM)、PRAM、RRAM以及各种其他类型的存储器。
根据一实施例,主机控制器110和主机存储器120可以实现为单独的半导体芯片。或者,在一些实施例中,主机控制器110和主机存储器120可以集成在同一半导体芯片中。作为示例,主机控制器110可以是包括在应用处理器(AP)中的多个模块中的任何一个。所述AP可以实现为片上系统(SoC)。此外,主机存储器120可以是所述AP中包括的嵌入式存储器或所述AP外部的存储器模块。
主机控制器110可以管理将主机存储器120的缓冲区域的数据(例如,写入数据)存储在NVM 220中的操作或将NVM 220的数据(例如,读取数据)存储在缓冲区域中的操作。
存储器控制器210可以包括主机接口211、存储器接口212和CPU 213。另外,存储器控制器210还可以包括闪存转换层(FTL)、包管理器215、缓冲存储器216、纠错码(ECC)引擎217和高级加密标准(AES)引擎218。存储器控制器210可以进一步包括其中装载有FTL 214的工作存储器(未示出)。CPU 213可以执行FTL 214来控制NVM 220上的数据写入和读取操作。
主机接口211可以向主机100发送包和从主机100接收包。从主机100发送到主机接口211的包可以包括命令或要被写入NVM 220的数据等。从主机接口211发送到主机100的包可以包括对命令的响应或从NVM 220读取的数据等。存储器接口212可以将要被写入NVM220的数据发送到NVM 220或接收从NVM 220读取的数据。存储器接口212可以被配置为符合诸如切换(Toggle)或开放NAND闪存接口(ONFI)的标准协议。
FTL 214可以执行各种功能,例如地址映射操作、磨损均衡操作以及垃圾收集操作。地址映射操作可以是将从主机100接收的逻辑地址转换为用于在NVM 220中实际存储数据的物理地址的操作。磨损均衡操作可以是通过允许均匀地使用NVM 220的块来防止特定块的过度退化的技术。作为示例,磨损均衡操作可以通过使用平衡物理块的擦写计数的固件技术来实现。垃圾收集操作可以是通过在将现有块的有效数据复制到新块之后擦除现有块来确保NVM 220中的可用容量的技术。
包管理器215可以根据同意主机100的接口的协议生成包,或者从从主机100接收到的包中解析各种类型的信息。另外,缓冲存储器216可以临时存储要写入NVM 220的数据或要从NVM 220读取的数据。尽管缓冲存储器216可以是包括在存储器控制器210中的组件,但是缓冲存储器216可以在存储器控制器210的外部。
ECC引擎217可以对从NVM 220读取的读取数据执行错误检测和校正操作。更具体地,ECC引擎217可以生成用于要写入到NVM 220的写入数据的奇偶校验位,并且所生成的奇偶校验位可以与写入数据一起存储在NVM 220中。在从NVM 220读取数据期间,ECC引擎217可以通过使用读取数据以及从NVM 220读取的奇偶校验位来校正读取数据中的错误,并输出错误校正后的读取数据。
AES引擎218可以通过使用对称密钥算法对输入到存储器控制器210的数据执行加密操作和解密操作中的至少一个。
根据本公开的实施例,提供了一种主机存储系统,包括:主机(例如图11中的100),包括主机存储器(例如,图11中的110)和主机控制器(例如,图11中的120);以及存储装置(例如,图11中的200),其中,所述主机控制器被配置为执行如本文所述的SST文件的压缩方法。
图12为根据本公开的一实施例的应用了存储装置的数据中心3000的示图。
参照图12,数据中心3000可以是收集各种类型的数据并提供服务的设施,并且被称为数据存储中心。数据中心3000可以是用于操作搜索引擎和数据库的系统,并且可以是公司(诸如,银行)或政府机构所使用的计算系统。数据中心3000可以包括应用服务器3100至3100n和存储服务器3200至3200m。根据实施例,可以不同地选择应用3100至3100n的数量和存储服务器3200至3200m的数量。应用服务器3100至3100n的数量和存储服务器3200至3200m的数量可以彼此不同。
应用服务器3100或存储服务器3200可以包括处理器3110和3210以及存储器3120和3220中的至少一个。现在将以存储服务器3200为例进行描述。处理器3210可以控制存储服务器3200的所有操作,访问存储器3220,并且执行加载到存储器3220的指令和/或数据。存储器3220可以是双数据率同步DRAM(DDR SDRAM)、高带宽存储器(HBM)、混合内存立方体(HMC)、双列直插式内存模块(DIMM)、傲腾DIMM(Optane DIMM)或非易失性DIMM(NVMDIMM)。在一些实施例中,存储服务器3200中包括的处理器3210和存储器3220的数量可以被不同地选择。在一实施例中,处理器3210和存储器3220可以提供处理器-存储器对。在一实施例中,处理器3210的数量与存储器3220的数量可以彼此不同。处理器3210可以包括单核处理器或多核处理器。对于存储服务器3200的以上描述可以类似地应用于应用服务器3100。在一些实施例中,应用服务器3100可以不包括存储装置3150。存储服务器3200可以包括至少一个存储装置3250。根据实施例,存储服务器3200中包括的存储装置3250的数量可以被不同地选择。
应用程序服务器3100至3100n可以通过网络3300与存储服务器3200至3200m通信。网络3300可以通过使用光纤信道(FC)或以太网来实现。在这种情况下,FC可以是用于相对高速的数据传输的介质,并且可以使用具有高性能和高可用性的光开关。根据网络3300的访问方法,可以将存储服务器3200至3200m设置为文件存储、块存储或对象存储。
在一实施例中,网络3300可以是专用于存储的网络,例如存储区域网络(SAN)。例如,SAN可以是FC-SAN,其使用FC网络并且根据FC协议(FCP)实现。作为另一示例,SAN可以是因特网协议(IP)-SAN,其使用传输控制协议(TCP)/IP网络并且根据TCP/IP上的SCSI或因特网SCSI(iSCSI)协议来实现。在另一实施例中,网络3300可以是通用网络,例如TCP/IP网络。例如,可以根据诸如以太网上的FC(FCoE)、网络附加存储(NAS)和结构上的NVMe(NVMe-oF)之类的协议来实现网络3300。
在下文中,将主要描述应用服务器3100和存储服务器3200。应用服务器3100的描述可以应用于另一应用服务器3100n,并且存储服务器3200的描述可以应用于另一存储服务器3200m。
应用服务器3100可以通过网络3300将用户或客户端请求存储的数据存储在存储服务器3200至3200m中的一个。此外,应用服务器3100可以通过网络3300从存储服务器3200至3200m中的一个获得由用户或客户端请求读取的数据。例如,应用程序服务器3100可以被实现为网络服务器或数据库管理系统(DB MS)。
应用服务器3100可以通过网络3300访问包括在另一应用服务器3100n中的存储器3120n或存储装置3150n。或者,应用服务器3100可以通过网络3300访问包括在存储服务器3200至3200m中的存储器3220至3220m或存储装置3250至3250m。因此,应用服务器3100可以对存储在应用服务器3100至3100n和/或存储服务器3200至3200m中的数据执行各种操作。例如,应用服务器3100可以执行用于在应用服务器3100至3100n和/或存储服务器3200至3200m之间移动或复制数据的指令。在这种情况下,可以将数据从存储服务器3200至3200m的存储装置3250至3250m通过存储服务器3200至3200m的存储器3220至322 0m或直接移动到应用服务器3100至3100n的存储器3120至3120n。通过网络3300移动的数据可以是为了安全或隐私而加密的数据。
现在将以存储服务器3200为例进行描述。接口3254可以提供处理器3210和控制器3251之间的物理连接以及网络接口卡(NIC)3240和控制器3251之间的物理连接。例如,可以使用直接附加存储(DAS)方案来实现接口3254,其中存储装置3250直接与专用电缆连接。例如,接口3254可以通过使用各种接口方案来实现,例如ATA、SATA、e-SATA、SCSI、SAS、PCI、PCIe、NVMe、IEEE 1394、USB接口、SD卡接口、MMC接口、eMMC接口、UFS接口、eUFS接口和CF卡接口。
存储服务器3200可以进一步包括开关3230和网络互连(NIC)3240。开关3230可以经由处理器3210的控制来选择性地将处理器3210连接到存储装置3250,或者选择性地将NIC 3240连接到存储装置3250。
在一实施例中,NIC 3240可以包括网络接口卡和网络适配器。NIC 3240可以通过有线接口、无线接口、蓝牙接口或光接口连接到网络3300。NIC 3240可以包括内部存储器、数字信号处理器(DSP)和主机总线接口,并且通过主机总线接口连接到处理器3210和/或开关3230。主机总线接口可以被实现为接口3254的上述示例之一。在一实施例中,NIC 3240可以与处理器3210、开关3230和存储装置3250中的至少一个集成。
在存储服务器3200至3200m或应用服务器3100至3100n中,处理器可将命令发送到存储装置3150至3150n和3250至3250m或存储器3120至3120n和3220至3220m并编程或读取数据。在这种情况下,数据可以是通过ECC引擎校正了错误的数据。数据可以是对其执行数据总线倒置(DBI)操作或数据掩蔽(DM)操作的数据,并且可以包括循环冗余编码(CRC)信息。数据可以是为了安全或隐私而加密的数据。
存储装置3150至3150n和3250至3250m可以响应于从处理器接收到的读取命令向NAND闪存装置3252至3252m发送控制信号和命令/地址信号。因此,当从NAND闪存装置3252至3252m读取数据时,可以输入读取使能(RE)信号作为数据输出控制信号,因此,可以将数据输出至DQ总线。可以使用RE信号产生数据选通信号DQS。取决于写入使能(WE)信号的上升沿或下降沿,命令和地址信号可以锁存在页面缓冲器中。
控制器3251可以控制存储装置3250的所有操作。在一实施例中,控制器3251可以包括SRAM。控制器3251可以响应于写入命令将数据写入到NAND闪存装置3252,或者响应于读取命令从NAND闪存装置3252读取数据。例如,可以从存储服务器3200的处理器3210、另一存储服务器3200m的处理器3210m或应用服务器3100和3100n的处理器3110和3110n提供写入命令和/或读取命令。DRA M 3253可以临时存储(或缓冲)要写入到NAND闪存装置3252的数据或从NAND闪存装置3252读取的数据。并且,DRAM 3253可以存储元数据。这里,元数据可以是用户数据或由控制器3251生成的用于管理NAND闪存装置3252的数据。存储装置3250可以包括用于安全性或隐私性的安全元件(SE)。
根据本公开的实施例,提供了一种数据中心系统,包括:多个应用服务器(例如,应用服务器3100至3100n);以及多个存储服务器(例如,存储服务器3200至3200m),其中,多个应用服务器中的至少一个和/或所述多个存储服务器中的至少一个被配置为执行如本文所述的SST文件的压缩方法。
根据本公开的示例性实施例,提供了一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时使得所述处理器实现如本文所述的SST文件的压缩方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
根据本公开的实施例中,还可提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成本文所述的SST文件的压缩方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

Claims (13)

1.一种有序字符串表SST文件的压缩方法,其中,所述SST文件存储在区域命名空间固态驱动器ZNS SSD的区域中,所述方法包括:
响应于确定需要对日志结构合并树LSM-tree的第一层执行压缩操作,确定第一层中的第一多个SST文件以及第二层中的第二多个SST文件,其中,第一多个SST文件中的每个SST文件的键范围与第二层中的SST文件的键范围至少部分重叠,第二多个SST文件中的每个的键范围与第一层中的SST文件的键范围至少部分重叠,其中,第二层为LSM-tree中的与第一层相邻且比第一层高的层;
基于第一多个SST文件中的所述每个SST文件与第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件之间的键重叠率以及与第一多个SST文件和第二多个SST文件对应的所述ZNS SSD的区域的属性信息确定第一多个SST文件的压缩优先级;以及
优先对第一多个SST文件中的具有较高压缩优先级的SST文件执行压缩。
2.如权利要求1所述的方法,其中,基于所述键重叠率以及与第一多个SST文件和第二多个SST文件对应的所述ZNS SSD的区域的属性信息确定第一多个SST文件的压缩优先级的步骤包括:
确定第一多个多个SST文件中的所述每个SST文件以及第二多个SST文件中键范围与第一多个多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件对应的所述ZNS SSD的多个区域中的每个区域的预设类型的属性信息;
按照预设规则基于所述每个区域的预设类型的属性信息确定所述每个区域对应的因子;
基于所述多个区域对应的因子以及所述键重叠率确定第一多个多个SST文件中的所述每个SST文件的压缩优先级值;以及
根据第一多个SST文件的压缩优先级值确定所述压缩优先级。
3.如权利要求2所述的方法,所述预设类型的属性信息包括以下项中的至少一个:所述每个区域中无效文件的大小与所述每个区域的容量之比、所述每个区域的使用时长以及所述每个区域的访问次数的倒数。
4.如权利要求2所述的方法,其中,按照预设规则基于所述每个区域的预设类型的属性信息确定所述每个区域对应的因子的步骤包括:
对所述每个区域的预设类型的属性信息执行加权求和来获得所述每个区域对应的因子。
5.如权利要求2所述的方法,基于所述多个区域对应的因子以及所述键重叠率确定第一多个SST文件中的所述每个SST文件的压缩优先级值的步骤包括:
确定所述多个区域对应的因子中的最大值;以及
根据所述键重叠率以及所述最大值确定第一多个SST文件中的所述每个SST文件的压缩优先级值。
6.如权利要求5所述的方法,其中,根据所述键重叠率以及所述最大值确定第一多个SST文件中的所述每个SST文件的压缩优先级值的步骤包括:
将所述最大值+1与所述键重叠率之比作为第一多个SST文件中的所述每个SST文件的压缩优先级值。
7.如权利要求2所述的方法,其中,根据第一多个SST文件的压缩优先级值确定所述压缩优先级的步骤包括:
将具有较大压缩优先级值的SST文件确定为具有较高压缩优先级,以及
其中,优先对第一多个SST文件中的具有较高压缩优先级的SST文件执行压缩的步骤包括:
优先选择第一多个SST文件中的具有较高压缩优先级的SST文件,并对所选择的具有较高压缩优先级的SST文件以及第二多个SST文件中的键范围与所述选择的具有较高压缩优先级的SST文件的键范围至少部分重叠的SST文件执行压缩。
8.如权利要求3所述的方法,其中,所述无效文件包括:所述每个区域中的通过针对第一多个SST文件中的所述每个SST文件以及第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件的压缩操作能够被删除的SST文件;和/或,使用时长指示所述每个区域最后的被打开的时间与当前时间的间隔。
9.一种有序字符串表SST文件的压缩装置,其中,所述SST文件存储在区域命名空间固态驱动器ZNS SSD的区域中,所述装置包括:
第一确定单元,被配置为响应于确定需要对日志结构合并树LSM-tree的第一层执行压缩操作,确定第一层中的第一多个SST文件以及第二层中的第二多个SST文件,其中,第一多个SST文件中的每个SST文件的键范围与第二层中的SST文件的键范围至少部分重叠,第二多个SST文件中的每个的键范围与第一层中的SST文件的键范围至少部分重叠,其中,第二层为LSM-tree中的与第一层相邻且比第一层高的层;
第二确定单元,被配置为基于第一多个SST文件中的所述每个SST文件与第二多个SST文件中的键范围与第一多个SST文件中的所述每个SST文件的键范围至少部分重叠的SST文件之间的键重叠率以及与第一多个SST文件和第二多个SST文件对应的所述ZNS SSD的区域的属性信息确定第一多个SST文件的压缩优先级;以及
压缩单元,被配置为优先对第一多个SST文件中的具有较高压缩优先级的SST文件执行压缩。
10.一种电子装置,包括:
存储器,被配置为存储一个或更多个指令;
多个存储装置;以及
主处理器,被配置为执行所述一个或更多个指令以使得所述主处理器执行如权利要求1-8中的任一项所述的SST文件的压缩方法。
11.一种主机存储系统,包括:
主机,包括主机存储器和主机控制器;以及
存储装置,
其中,所述主机控制器被配置为执行如权利要求1-8中的任一项所述的SST文件的压缩方法。
12.一种数据中心系统,包括:
多个应用服务器;以及
多个存储服务器,
其中,所述多个应用服务器中的至少一个和/或所述多个存储服务器中的至少一个被配置为执行如权利要求1-8中的任一项所述的SST文件的压缩方法。
13.一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时使得所述处理器实现如权利要求1-8中的任一项所述的SST文件的压缩方法。
CN202311118365.XA 2023-08-31 2023-08-31 有序字符串表文件的压缩方法和装置 Pending CN117149723A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311118365.XA CN117149723A (zh) 2023-08-31 2023-08-31 有序字符串表文件的压缩方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311118365.XA CN117149723A (zh) 2023-08-31 2023-08-31 有序字符串表文件的压缩方法和装置

Publications (1)

Publication Number Publication Date
CN117149723A true CN117149723A (zh) 2023-12-01

Family

ID=88909466

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311118365.XA Pending CN117149723A (zh) 2023-08-31 2023-08-31 有序字符串表文件的压缩方法和装置

Country Status (1)

Country Link
CN (1) CN117149723A (zh)

Similar Documents

Publication Publication Date Title
US9182912B2 (en) Method to allow storage cache acceleration when the slow tier is on independent controller
WO2017148242A1 (zh) 一种访问叠瓦式磁记录smr硬盘的方法及服务器
EP3989052B1 (en) Method of operating storage device and method of operating storage system using the same
US11921629B1 (en) Method and device for data storage
CN117112219A (zh) 主机内存数据访问的方法和装置
CN116755620A (zh) 基于独立磁盘冗余阵列的数据存储的方法和装置
US20230153006A1 (en) Data processing method and data processing device
KR20240025451A (ko) 데이터 캐싱을 위한 방법 및 장치
US20220179724A1 (en) Method for operating storage device and host device, and storage device
US11662949B2 (en) Storage server, a method of operating the same storage server and a data center including the same storage server
CN115291796A (zh) 存储数据的方法和装置
CN117149723A (zh) 有序字符串表文件的压缩方法和装置
US20240192860A1 (en) Method and device for log structured merge-tree based key-value data storage
US20230409200A1 (en) Method and device for data storage
US20240160511A1 (en) Failure prediction apparatus and method for storage devices
CN116756106A (zh) 有序字符串表文件的压缩方法和装置
US20240004762A1 (en) Method of recovering data in storage device using network and storage device performing the same
US20230146540A1 (en) Storage device and an operating method of a storage controller thereof
KR102435910B1 (ko) 스토리지 장치 및 그것의 동작 방법
US20240045597A1 (en) Storage device and operation method thereof
CN117055816A (zh) 配置zns ssd的区域的方法和装置
KR102484073B1 (ko) 스토리지 시스템
CN115794687A (zh) 基于日志结构合并树的键值数据存储的方法和装置
US20230153238A1 (en) Method of operating a storage device using multi-level address translation and a storage device performing the same
CN117008826A (zh) 数据压缩方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication