掌桥专利:专业的专利平台
掌桥专利
首页

数据存储方法和装置、计算设备及存储介质

文献发布时间:2023-06-19 13:46:35


数据存储方法和装置、计算设备及存储介质

技术领域

本公开涉及分布式存储系统,特别涉及用于分布式存储系统的数据存储方法和装置。

背景技术

随着互联网技术的发展,对分布式存储系统的应用越来越广泛。分布式存储系统是一种通过网络连接的服务器集群,用于确保满足以充分的数据可靠性进行横向扩展(scale-out)的要求。

为了确保数据完整性,分布式存储系统为每个逻辑映射单元(或称为“逻辑区块”,例如4096字节)额外插入填充验证信息(或称为“填充信息”)。这些填充验证信息通常包含校验签名、元数据信息等。这一操作有助于对大规模分布式存储集群所持有的数据质量进行即时检查,并且提供了通过打断长路径来识别潜在问题的有效工具。

另一方面,NAND闪存已经发展到3D安全协议(3D domain),因此NAND闪存的底层错误率保持增长。为了维持SSD所要求的可靠性和长寿命,在SSD控制器设计中已经应用了强ECC(纠错编码),而强ECC要求相当多的校验信息(parity)。3D NAND闪存页面只能够提供有限的空间来容纳校验信息。

存储系统一般要求IO对齐,即将物理硬盘分区与主机逻辑分区对齐,以确保硬盘的读/写效率。

而当如上所述对逻辑映射单元额外插入填充信息时,物理NAND闪存难以将所有数据(包括用户数据和校验数据)放入相同物理页面,并且因此出现物理粒度和逻辑粒度之间的未对齐,导致NAND闪存的次优利用。由此,还会不可避免地影响了SSD性能和寿命。

现有的分布式存储系统解决方案是将扩展(插入填充信息)后的用户数据和对应的校验信息一起存储在相同的物理页面中,以便确保良好的性能,特别是读取延迟和吞吐量性能。众所周知,源自物理NAND闪存的读取延迟是不可忽略的。如果校验信息与用户数据不在同一个物理页面,那么要取回无差错的用户数据需要对NAND闪存读取两次,这显著影响了性能和服务质量(QoS)。

下面参考图1和图2简要描述现有解决方案。

图1示意性地示出了现有技术中数据在物理页面上的布置情形。

如图1所示,例如4个逻辑区块LBA1、LBA2、LBA3、LBA4的总尺寸可以与物理页面的数据区的尺寸相同。这样,在不需要额外插入填充信息的情况下,物理页面的数据区和4个逻辑区块是对齐。

另外,4个逻辑区块LBA1、LBA2、LBA3、LBA4各自对应的ECC校验信息P1、P2、P3、P4可以存放在同一物理页面的附件区(例如也可以称为“ECC校验区”)。这样,4个逻辑区块及其各自对应的ECC校验信息均可以存储在同一个物理页面。例如,逻辑区块的尺寸可以为4k字节,物理页面的数据区的尺寸可以为16k字节。

然而,当在分布式存储系统的场景下,在分别为各个逻辑区块LBA1、LBA2、LBA3添加分布式存储系统所需要生成并插入的填充信息T1、T2、T3之后,物理页面的数据区不再能够存放逻辑区块LBA4及其对应的填充信息。

同时,一般地,在物理页面中存放了数量比原来少的,例如图1所示为3个,逻辑区块LBA1、LBA2、LBA3及其对应的填充信息T1、T2、T3之后,物理页面的数据区往往还会有较大存储空间W1未能充分利用。这个存储空间W1将被浪费掉。

同样地,针对LBA1、LBA2、LBA3及其各自对应的填充信息T1、T2、T3分别进行ECC纠错编码得到的ECC校验信息P1'、P2'、P3',虽然尺寸可能分别大于先前的P1、P2、P3,但是往往也不足以填充原来P1、P2、P3、P4所占用的存储空间。这样,在附件区也会有一部分存储空间W2被浪费。

随着一些碎小物理页面如存储空间W1和W2的浪费,导致了对物理页面的利用不充分,也导致NAND物理页面中不均匀的损耗平衡。

图2示意性地示出了现有的存储空间水印管理方案。

如图2所示,在在线部署实践过程中,驱动器容量是通过水印管理方案来管理的。在水印管理方案中,在驱动器由于全速驱动而变成只读之前,会预留一定量的存储空间,即OP(预留空间,over-provisioning)。例如在SSD的OP的进一步帮助下,可以通过进行更加频繁的修整操作,在现代驱动器中仍然保证驱动器的名义容量。

然而,由于修整而频繁触发的GC(Garbage Collection,垃圾回收)会导致写入放大操作增加,这会降低了SSD的性能和寿命。

而且,在这种情况下,实际使用的驱动器容量空间将如图2右侧中的阴影部分所示那样超出预设使用容量。相应地,实际上的预留空间OP被缩水,导致性能降级。

进一步地,逻辑单元(逻辑区块)和物理单元(物理页面)之间的不匹配,使得与未对齐边界关联的映射变得复杂化。

因此,仍然需要一种改进的数据存储方案,以便对来自分布式存储系统的填充信息进行便捷存储以提高效率。

发明内容

本公开要解决的一个技术问题是提供一种数据处理方法和装置,其能够对来自分布式存储系统的填充信息进行便捷的存储以提高效率。

根据本公开的第一个方面,提供了一种数据存储方法,用于分布式存储系统,该方法包括:对待存储数据块进行分割,得到多个切片;为每个切片分别添加分布式存储系统为其生成的填充信息;以及存储多个切片及其对应的填充信息,其中在单个物理页面中存储整数个切片及其对应的填充信息。

可选地,切片的尺寸设置是可调节的;并且/或者切片的尺寸被设置为适于在单个物理页面中存储整数个切片及其对应的填充信息;并且/或者切片的尺寸被设置为使得在单个物理页面中存储整数个切片及其对应的填充信息之后,物理页面上的剩余空间尺寸小于预定阈值。

可选地,该方法还可以包括:对数据块进行压缩,得到压缩数据块,作为所述待存储数据块。

可选地,该方法还可以包括:接收数据包,去除所接收数据包的包头和包尾,得到待存储数据;以及/或者积累待存储数据,形成具有设定尺寸的数据块。

可选地,对数据块进行压缩得到压缩数据块的步骤包括:将数据块压缩成压缩数据小块;以及积累至少一个压缩数据小块,得到压缩数据块。

可选地,对压缩数据块进行分割得到多个切片的步骤包括:将压缩数据块分割为n个数据切片;基于分割得到的n个数据切片进行纠删编码,得到k个纠删校验码切片,其中,多个切片包括n个数据切片和k个纠删校验码切片,其中n和k均为正整数。

可选地,对待存储数据块进行分割得到多个切片的步骤还可以包括:在待存储数据块的尺寸小于进行纠删编码所需要的n个切片的总尺寸的情况下,对待存储数据块填充预定数据,使其尺寸达到n个切片的总尺寸,以便进行纠删编码;以及在进行纠删编码之后,删除所填充的预定数据。

可选地,该方法还可以包括:对切片及其对应的填充信息进行纠错编码,得到纠错编码校验码,将纠错编码校验码与切片及其对应的填充信息存储到同一个物理页面中。

根据本公开的第二个方面,提供了一种数据存储装置,用于分布式存储系统,该装置包括:切片装置,用于对待存储数据块进行分割,得到多个切片;填充装置,用于为每个切片分别添加分布式存储系统为其生成的填充信息;以及落盘装置,用于存储多个切片及其对应的填充信息,其中在单个物理页面中存储整数个切片及其对应的填充信息。

可选地,该装置还可以包括:压缩装置,用于对数据块进行压缩,得到压缩数据块,作为所述待存储数据块。

可选地,切片装置可以包括:数据分割装置,用于将待存储数据块分割为n个数据切片;以及纠删编码装置,用于基于分割得到的n个数据切片进行纠删编码,得到k个纠删校验码切片,其中,多个切片包括n个数据切片和k个纠删校验码切片,其中n和k均为正整数。

根据本公开的第三个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一方面所述的方法。

根据本公开的第四个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一方面所述的方法。

由此,通过本公开的数据存储方案,能够便捷地将分布式存储系统生成的填充信息与其对应的用户数据存储在同一个物理页面上,并且能够提升物理页面的利用效率。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。

图1示意性地示出了现有技术中数据在物理页面上的布置情形。

图2示意性地示出了现有的存储空间水印管理方案。

图3是根据本公开的用于分布式存储系统的数据存储方法的示意性流程图。

图4是可以用于根据本公开的用于分布式存储系统的数据存储装置的示意性框图。

图5是基于压缩数据库进行分割得到多个切片的过程的示意性流程图。

图6是用于得到多个切片的切片装置的示意性框图。

图7是对可变长度的压缩数据块的支持方案的示意图。

图8是根据本公开的数据存储方法的数据处理示意图。

图9是使用本公开的数据存储方法对数据进行处理的示例的示意图。

图10是可用于实现根据本公开的数据存储方法的存储服务器的示意性框图。

图11示出了根据本发明一实施例可用于实现上述数据存储方法的计算设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

图3是根据本公开的用于分布式存储系统的数据存储方法的示意性流程图。

图4是可以用于根据本公开的用于分布式存储系统的数据存储装置的示意性框图。

如图4所示,数据存储装置300可以包括切片装置320、填充装置330以及落盘装置340。另外,在以压缩数据块作为待存储数据块的情况下,数据存储装置300还可以包括压缩装置310。应当理解,在不需要进行压缩的情况下,数据存储装置300可以不包括压缩装置310。

如图3所示,首先,在步骤S210,准备待存储数据块。

待存储数据块可以是预先已经整理好的,也可以是例如通过网络接收的,或者通过数据处理得到的。

在一些实施例中,还可以对待存储数据进行压缩,已减小数据存储量。这种情况下,例如可以通过压缩装置310,对要存储的数据块进行压缩,得到压缩数据块。以该压缩数据块作为待存储数据块。

要存储的数据块可以有各种来源。例如,可以通过从网络接收例如来自用户的数据包,去除所接收数据包的包头和包尾,得到待存储数据。进一步地,可以积累待存储数据,直到所积累的数据量达到设定尺寸(压缩窗),从而形成具有设定尺寸的数据块。

在进行压缩得到压缩数据块的过程中,可以对一个数据块进行压缩得到一个压缩数据块,也可以对多个数据块进行压缩得到一个压缩数据块。或者,还可以将各个数据块分别压缩成压缩数据小块,然后积累至少一个压缩数据小块,得到压缩数据块,作为上述待存储数据块。

然后,在步骤S220,例如可以通过切片装置320,对待存储数据块(例如压缩数据块)进行分割,得到多个切片。

切片的尺寸可以被设置为适于在单个物理页面中存储整数个切片及其对应的填充信息。例如,切片的尺寸可以被设置为使得在单个物理页面中存储整数个切片及其对应的填充信息之后,物理页面上的剩余空间尺寸小于预定阈值。预定阈值可以是设定的字节数或位数。或者预定阈值也可以是切片尺寸的设定比例,例如切片尺寸的1/3或1/4等。

切片的尺寸设置是可调节的。这样,可以根据实际应用场景来控制切片的尺寸,使得切片尺寸与物理页面尺寸更加匹配。

在步骤S230,例如可以通过填充装置330,为每个切片分别添加分布式存储系统为其生成的填充信息。

如上文所述,分布式存储系统为数据生成的填充信息通常包含校验签名、元数据信息等。填充信息本身的内容以及填充信息的生成方式为本领域所公知,在此不再赘述。

在步骤S240,例如可以通过落盘装置340,在存储设备的物理页面中,存储多个切片及其对应的填充信息。

这里,可以在单个物理页面中存储整数个切片及其对应的填充信息。

对于设定尺寸的切片,填充信息例如可以具有相应固定尺寸的尺寸。这样,在设定切片尺寸之后,切片及其对应的填充信息的总尺寸可以为确定值。

如果整数M个切片及其对应填充信息的总尺寸不大于但接近1个物理页面的数据区的尺寸,那么当在一个物理页面中存储整数M个切片及其对应填充信息时,物理页面的存储空间利用率将会很高,而浪费会较少。这样,通过设定合适的切片尺寸,可以提升物理页面的存储空间利用率,减少存储空间浪费。

另外,除了能够自由调整切片的设定尺寸,还能够调整压缩窗的尺寸(即所积累的数据块的设定尺寸)。这是为了处理通过压缩未能为填充信息提供充足的空间的极端情形。在这种情况下,可以相应减小压缩窗,以预先为填充信息腾出空间。这可以通过压缩前在数据缓存器中的数据合并实现。

进一步地,在对待存储数据块进行分割得到多个切片的过程中,还可以进行纠删编码(EC,erasure coding),基于待存储数据块得到的多个切片包括对待存储数据块进行分割得到的数据切片和通过执行纠删编码得到的纠删校验码切片。

图5是基于压缩数据库进行分割得到多个切片的过程的示意性流程图。

图6是用于得到多个切片的切片装置的示意性框图。

如图6所示,切片装置320可以包括数据分割装置321和纠删编码装置322。

如图5所示,在步骤S221,例如可以通过数据分割装置321,将待存储数据块分割为n个数据切片。

然后,在步骤S222,例如可以通过纠删编码装置322,基于分割得到的n个数据切片进行纠删编码,得到k个纠删校验码切片,这里,n和k均为正整数。

这样,基于待存储数据块得到的多个切片可以包括上述n个数据切片和k个纠删校验码切片。纠删校验码切片和数据切片可以具有相同的尺寸,并在后续落盘存储过程中予以相同的处理。

另外,当积累待存储数据时,可以设定积累得到的数据块的尺寸;而在对数据块进行压缩得到压缩数据块作为待存储数据块的情况下,当对数据块进行压缩时,得到的压缩数据块或压缩数据小块的尺寸则往往并不相同。这样,作为待存储数据块的压缩数据块可以具有不规则的长度,所以纠删编码(EC)需要能够支持压缩数据块尺寸可变的情形。

图7是对可变长度的压缩数据块的支持方案的示意图。

图7上部示意性地示出了进行EC编码所要求或设定的完整数据尺寸和完整数据的EC校验码尺寸。

图7中部示出了对数据块进行压缩得到的压缩数据小块A、压缩数据小块B、压缩数据小块C的尺寸(图7中未以切片形式呈现数据)。可以看出,压缩数据小块A、压缩数据小块B、压缩数据小块C各自的尺寸互不相同,而它们的总尺寸也是不固定的,而且没有达到所设定的进行EC编码的完整数据长度。

这样,在压缩数据块的尺寸小于进行纠删编码所需要的n个切片的总尺寸的情况下,对压缩数据块填充预定数据,例如全部填充“零”,使其尺寸达到n个切片的总尺寸,以便进行纠删编码,得到EC校验码。

然后,如图7下部所示,在进行纠删编码之后,要将EC码字存储到驱动器中时,删除所填充的预定数据。

这样,在执行纠删编码时,可以支持可变尺寸的压缩数据块。同时,在最终落盘存储时,完整的压缩数据和EC校验码的总尺寸也可以重新缩短回到实际有效数据的长度,减小存储空间占用。

另外,还可以对切片及其对应的填充信息进行纠错编码(ECC,ErrorCorrectionCoding),得到纠错编码校验信息,将纠错编码校验信息与切片及其对应的填充信息存储到同一个物理页面中。

如上文所述,物理页面可以包括数据区和附件区。数据区例如可以为16k字节,可用来存储用户数据等待存储数据(压缩数据块的数据切片)和对应的EC校验码切片。附件区例如可以用来存储ECC校验信息。这样,用户数据及其对应的ECC校验信息可以存储在同一个物理页面上。

图8是根据本公开实施例的数据存储方法的数据处理示意图,其中示出了将以太网数据包转换为例如硬盘驱动器上的存储IO单元的数据处理步骤。

首先,去除所接收到的以太网数据包的头部位(包头)H和尾部位(包尾)T,并将以太网数据包中的用户数据一起放入数据缓存器。

在数据缓存器中积累用户位以形成具有设定尺寸的定长数据块。所积累得到的定长数据块作为后续压缩操作的压缩处理输入块,定长数据块的尺寸可以由压缩窗限定。

将单个的压缩窗中积累的数据块压缩得到压缩数据小块。压缩数据小块的尺寸通常取决于压缩比。

将整数个压缩数据小块放在一起,形成压缩数据块,也可以称为“纠删编码(EC)组”,作为后续EC编码处理的输入。

在生成EC校验码的过程中,压缩数据块被分割为多个数据切片,并且生成多个EC校验码切片。

考虑到填充信息插入,切片被分配灵活的长度,以与存储介质的物理上的几何图形相匹配。换句话说,单个切片的长度被配置为消除IO对齐问题,并由此实现对驱动器的友好利用。

本发明提出了可以在一定范围内选择的而不是预定常数的可变切片长度。切片的数量能够满足EC可靠性保护的基本要求,以将整个EC码字扩展到足够数量的(硬盘)驱动器,然而每个切片尺寸可变。一般而言,EC窗的尺寸大于填充信息尺寸,因此切片长度灵活性使得填充切片能够以物理粒度和逻辑粒度对齐。

图9是使用本公开的数据存储方法对数据进行处理的示例的示意图,其中示出了通过本发明的方法落盘存储4个LBA的数据的示例。

打包在一起的4个LBA被压缩到压缩页面中。

压缩页面形成纠删编码组,并且对其一起进行纠删编码。

压缩页面可以被视作整体,并且分布式存储系统为这个压缩页面生成总的填充信息。

使用通过压缩处理而空出的空间,总的填充信息被与压缩页面一起存储在同一个物理页面中。

可能仍然有一定量的空闲存储容量(图9中的阴影区域)。这些空闲存储容量可以要么填充哑数据,要么用于存储其它切片。

进一步地,通过纠错编码(ECC),对完整的数据进一步编码。ECC码字和校验位可以和压缩页面存储在相同的物理页面中,例如存储在物理页面中专用于存储ECC校验信息的附件区中。

图10是可用于实现根据本公开的数据存储方法的存储服务器的示意性框图。

网络接口控制器(NIC)对来自网络的数据包执行数据包取回重组和压缩操作。然后,压缩数据经由CPU接口被传送到系统存储器以形成EC组(压缩数据块),并确定调整后的数据切片。基于切片生成填充信息,并且将填充信息与切片级联,以基于不同的格式存储在落盘驱动器和日志驱动器中。

本公开创新性地提出了灵活的压缩和纠删编码(EC)切片,以在为了数据完整性的目的而额外插入填充信息的时候,使逻辑单元和物理粒度对齐。

通过赋予数据组织的自由,为各种系列的硬盘驱动器赋予宽松的寿命、容量和性能要求,有效地改善了存储性能和存储介质利用率。

图11示出了根据本发明一实施例可用于实现上述数据存储方法的计算设备的结构示意图。

参见图11,计算设备1000包括存储器1010和处理器1020。

处理器1020可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器1020可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器1020可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。

存储器1010可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器1020或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器1010可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器1010可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。

存储器1010上存储有可执行代码,当可执行代码被处理器1020处理时,可以使处理器920执行上文述及的数据存储方法。

上文中已经参考附图详细描述了根据本发明的用于分布式存储系统的数据存储方案。

此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。

或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

相关技术
  • 一种数据存储方法、数据查询方法、计算设备和存储介质
  • 一种数据存储方法及装置、一种计算设备及存储介质
技术分类

06120113808260