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

分布式存储系统及其数据写入、读取和擦除方法

文献发布时间:2024-04-18 20:01:30


分布式存储系统及其数据写入、读取和擦除方法

技术领域

本申请涉及分布式存储领域,特别涉及分布式存储系统的数据写入、读取和擦除技术。

背景技术

本部分旨在为权利要求书中陈述的本申请的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是已被公开的现有技术。

图1展示了大规模分布式存储系统的上层架构,该存储系统管理着大量的SSD(固态硬盘)集群,为大量用户提供灵活可靠的存储服务。当用户向存储系统申请一块存储空间,存储系统就从SSD集群中分配相应的一段存储空间给到该用户。

该存储系统中用户的一个使用特点是用户往往不会百分百使用申请的存储空间,而且通常的实际使用率可能非常低,甚至会小于百分之十,这种情况下就会导致现有的分布式存储系统的存储空间被严重浪费。

发明内容

本申请的目的在于提供一种分布式存储系统及其数据写入、读取和擦除方法,可以大幅提高分布式存储系统存储空间的利用率。

本申请公开了一种分布式存储系统的数据写入方法,所述分布式存储系统包括多个存储器,其中至少一个存储器的报告容量大于该存储器的实际物理容量,该存储器的报告容量被划分为M个数据段,该存储器的实际容量被划分为N个数据段,该存储器有N个保存逻辑地址与物理地址映射关系的L2P表,N个所述L2P表分别对应该存储器的实际容量的N个数据段,M>N>1;所述方法包括:

根据待写入数据的逻辑区块地址确定该数据所属的数据段;

根据所述数据所属的数据段查询第一映射关系,以确定待写入的L2P表,其中,所述第一映射关系记录了数据段到L2P表的映射关系;

将所述待写入数据写入存储器的物理页中,并将被写入的物理页的信息更新到所述待写入的L2P表。

在一个优选例中,所述根据所述数据所属的数据段查询第一映射关系,以确定待写入的L2P表,进一步包括:

如果所述数据所属的数据段记录在所述第一映射关系中,则确定所述第一映射关系中所述数据所属的数据段所对应的L2P表,将该L2P表作为所述待写入的L2P表。

在一个优选例中,所述根据所述数据所属的数据段查询第一映射关系,以确定待写入的L2P表,进一步包括:

如果所述数据所属的数据段未记录在所述第一映射关系中,则分配一个空闲的L2P表作为所述待写入的L2P表,并将所述数据所属的数据段到所述空闲的L2P表的映射关系记录在所述第一映射关系中。

在一个优选例中,所述根据所述数据所属的数据段查询第一映射关系,以确定待写入的L2P表,进一步包括:

如果所述数据所属的数据段未记录在所述第一映射关系中,并且当前存储器不存在空闲的L2P表,则将所述数据写入所述分布式存储系统的其他存储器中。

本申请还公开了一种分布式存储系统的数据读取方法,所述分布式存储系统包括多个存储器,其中至少一个存储器的报告容量大于该存储器的实际物理容量,该存储器的报告容量被划分为M个数据段,该存储器的实际容量被划分为N个数据段,该存储器有N个保存逻辑地址与物理地址映射关系的L2P表,N个所述L2P表分别对应该存储器的实际容量的N个数据段,M>N>1;所述方法包括:

根据待读取数据的逻辑区块地址确定该数据所属的数据段;

根据所述数据所属的数据段查询第一映射关系,以确定待读取的L2P表,其中,所述第一映射关系记录了数据段到L2P表的映射关系;

从所述待读取的L2P表获取所述待读取数据对应的物理页地址,并根据该物理页地址从存储器读取数据。

在一个优选例中,所述根据所述数据所属的数据段查询第一映射关系,以确定待读取的L2P表,进一步包括:

如果所述第一映射关系中存在所述数据所属的数据段,则将所述第一映射关系中与所述数据所属的数据段对应的L2P表确定为待读取的L2P表,否则返回表示存储器中不存在所述待读取数据的信息。

本申请还公开了一种分布式存储系统的数据擦除方法,所述分布式存储系统包括多个存储器,其中至少一个存储器的报告容量大于该存储器的实际物理容量,该存储器的报告容量被划分为M个数据段,该存储器的实际容量被划分为N个数据段,该存储器有N个保存逻辑地址与物理地址映射关系的L2P表,N个所述L2P表分别对应该存储器的实际容量的N个数据段,M>N>1;所述方法包括:

根据待擦除数据的逻辑区块地址确定该数据所属的数据段;

根据所述数据所属的数据段查询第一映射关系,以确定待擦除的L2P表,其中,所述第一映射关系记录了数据段到L2P表的映射关系;

将所述待擦除的L2P表中与所述待擦除数据对应的物理页信息擦除。

在一个优选例中,还包括:

检查所述待擦除的L2P表中是否所有物理页的信息都为空值,如果是则从所述第一映射关系中删除包含该待擦除的L2P表的映射关系,将该待擦除的L2P表设定为空闲的L2P表。

本申请还公开了一种分布式存储系统,包括:

多个存储器,其中至少一个存储器的报告容量大于该存储器的实际物理容量,该存储器的报告容量被划分为M个数据段,该存储器的实际容量被划分为N个数据段,该存储器有N个保存逻辑地址与物理地址映射关系的L2P表,N个所述L2P表分别对应该存储器的实际容量的N个数据段,M>N>1;

用于存储第一映射关系的存储器,所述第一映射关系记录了数据段到L2P表的映射关系;

控制装置,被配置为执行如前文描述的方法。

在一个优选例中,所述第一映射关系的实现方式是以下之一:

哈希表,位图,树,线性表。

本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。

本申请的实施方式在不改变分布式存储系统的前提下,使得SSD集群的物理利用率显著提出,理论上可以达到百分百利用率。

上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均应该视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+B+C,在另一个例子中公开了特征A+B+D+E,而特征C和D是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征E技术上可以与特征C相组合,则,A+B+C+D的方案因技术不可行而应当不被视为已经记载,而A+B+C+E的方案应当视为已经被记载。

附图说明

图1是大规模分布式存储系统的上层架构;

图2是根据本申请的第一实施方式的分布式存储系统的数据写入方法流程示意图;

图3是根据本申请的第二实施方式的分布式存储系统的数据读取方法流程示意图;

图4是根据本申请的第三实施方式的分布式存储系统的数据擦除方法流程示意图;

图5是根据本申请一个实施例的一个固态硬盘的结构示意图;

图6是现有技术中L2P表对LBA和物理页进行映射的示意图;

图7是在报告容量大于实际容量的情况下按照现有技术的思路L2P表对LBA和物理页进行映射的示意图;

图8根据本申请一个实施例的对LBA和物理页进行映射的示意图。

具体实施方式

在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

部分概念的说明:

LBA:逻辑区块地址(Logical Block Address)。

L2P表:固态硬盘中用于记录逻辑地址与物理地址映射关系的线性表。

存储器的报告容量:存储器向所在的存储系统报告的容量,在现有技术中报告容量与该存储器的实际容量相同。

DRAM:动态随机存取存储器(Dynamic Random Access Memory)。

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。

本申请的第一实施方式涉及一种分布式存储系统的数据写入方法。该分布式存储系统包括多个存储器,其中至少一个存储器的报告容量大于该存储器的实际物理容量,该存储器的报告容量被划分为M个数据段,该存储器的实际容量被划分为N个数据段,该存储器有N个保存逻辑地址与物理地址映射关系的L2P表,N个L2P表分别对应该存储器的实际容量的N个数据段,M>N>1。

如图2所示,该数据写入方法包括以下步骤:

在步骤201中,根据待写入数据的逻辑区块地址确定该数据所属的数据段。

在步骤202中,根据数据所属的数据段查询第一映射关系,以确定待写入的L2P表,其中,第一映射关系记录了数据段到L2P表的映射关系。可选的,在一个实施例中,第一映射关系可以通过哈希表,位图,树,线性表等方式实现。

在步骤303中,将待写入数据写入存储器的物理页中,并将被写入的物理页的信息更新到待写入的L2P表。待写入数据的逻辑区块地址是基于存储器的报告容量的。

可选的,在一个实施例中,上述步骤由分布式存储系统的控制装置执行。该控制装置可以包括一个或多个处理器。处理器可以是中央处理器(Central Processing Unit,CPU)、图像处理器(Graphic Processing Unit,GPU)、数字信号处理器(Digital SignalProcessor,DSP)、微控制单元(Microcontroller Unit,MCU)、神经网络处理器(NPU)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件等。

可选的,在一个实施例中,步骤102可以进一步包括:

如果数据所属的数据段记录在第一映射关系中,则确定第一映射关系中数据所属的数据段所对应的L2P表,将该L2P表作为待写入的L2P表。

如果数据所属的数据段未记录在第一映射关系中,并且当前存储器存在空闲的L2P表,则分配一个空闲的L2P表作为待写入的L2P表,并将数据所属的数据段到空闲的L2P表的映射关系记录在第一映射关系中。

如果数据所属的数据段未记录在第一映射关系中,并且当前存储器不存在空闲的L2P表,则将数据写入分布式存储系统的其他存储器中。

本申请的第二实施方式涉及一种分布式存储系统的数据读取方法,该分布式存储系统包括多个存储器,其中至少一个存储器的报告容量大于该存储器的实际物理容量,该存储器的报告容量被划分为M个数据段,该存储器的实际容量被划分为N个数据段,该存储器有N个保存逻辑地址与物理地址映射关系的L2P表,N个L2P表分别对应该存储器的实际容量的N个数据段,M>N>1。

如图3所示,该数据读取方法包括:

在步骤301中,根据待读取数据的逻辑区块地址确定该数据所属的数据段。

在步骤302中,根据数据所属的数据段查询第一映射关系,以确定待读取的L2P表,其中,第一映射关系记录了数据段到L2P表的映射关系。可选的,在一个实施例中,如果第一映射关系中存在数据所属的数据段,则将第一映射关系中与数据所属的数据段对应的L2P表确定为待读取的L2P表,否则返回表示存储器中不存在待读取数据的信息。可选的,在一个实施例中,第一映射关系可以通过哈希表,位图,树,线性表等方式实现。

在步骤303中,从待读取的L2P表获取待读取数据对应的物理页地址,并根据该物理页地址从存储器读取数据。

可选的,在一个实施例中,上述步骤由分布式存储系统的控制装置执行。该控制装置可以包括一个或多个处理器。

本申请的第三实施方式涉及一种分布式存储系统的数据擦除方法,该分布式存储系统包括多个存储器,其中至少一个存储器的报告容量大于该存储器的实际物理容量,该存储器的报告容量被划分为M个数据段,该存储器的实际容量被划分为N个数据段,该存储器有N个保存逻辑地址与物理地址映射关系的L2P表,N个L2P表分别对应该存储器的实际容量的N个数据段,M>N>1。

如图4所示,该数据擦除方法包括:

在步骤401中,根据待擦除数据的逻辑区块地址确定该数据所属的数据段。

在步骤402中,根据数据所属的数据段查询第一映射关系,以确定待擦除的L2P表,其中,第一映射关系记录了数据段到L2P表的映射关系。可选的,在一个实施例中,第一映射关系可以通过哈希表,位图,树,线性表等方式实现。

在步骤403中,将待擦除的L2P表中与待擦除数据对应的物理页信息擦除。可选的,在一个实施例中,可以检查待擦除的L2P表中是否所有物理页的信息都为空值,如果是则从第一映射关系中删除包含该待擦除的L2P表的映射关系,将该待擦除的L2P表设定为空闲的L2P表。

可选的,在一个实施例中,上述步骤由分布式存储系统的控制装置执行。该控制装置可以包括一个或多个处理器。

本申请的第四实施方式涉及一种分布式存储系统,该系统包括:

多个存储器,其中至少一个存储器的报告容量大于该存储器的实际物理容量,该存储器的报告容量被划分为M个数据段,该存储器的实际容量被划分为N个数据段,该存储器有N个保存逻辑地址与物理地址映射关系的L2P表,N个L2P表分别对应该存储器的实际容量的N个数据段,M>N>1。可选的,在一个实施例中,存储器是固态硬盘。该固态硬盘所使用的存储介质可以包括NAND闪存、NOR闪存、磁阻随机存取存储器(Magnetoresistive RandomAccess Memory,简称“MRAM”)、电阻随机存取存储器(Resistive Random Access Memory,简称“RRAM”)、相变随机存取存储器(Phase Change Random Access Memory,简称“PCRAM”)、Nano-RAM等。L2P表可以存储在DRAM中。

用于存储第一映射关系的存储器,第一映射关系记录了数据段到L2P表的映射关系。可选的,在一个实施例中,第一映射关系可以通过哈希表,位图,树,线性表等方式实现。

控制装置,被配置为执行第一、第二和第三实施方式所述的方法。第一、第二和第三实施方式中所描述的技术细节都可以用于本实施方式。本实施方式的技术细节也可以用于第一、第二和第三实施方式。

可选的,在一个实施例中,分布式存储系统包括多个固态硬盘。其中一块或多块固态硬盘进一步包括:闪存(用于存储数据),DRAM(用于存储N个L2P表和第一映射关系),控制装置(用于执行第一、第二和第三实施方式所述的方法)。图5示出了一个固态硬盘的结构。在其他实施例中,L2P表和第一映射关系也可以存储在其他类型的相对于闪存更为高速的存储器中。在其他某些实施例中,多个固态硬盘的第一映射关系也可以集中起来存储在固态硬盘之外的DRAM中。

为了能够更好地理解本申请的技术方案,下面结合一个具体的例子来进行说明,该例子中罗列的细节主要是为了便于理解,不作为对本申请的保护范围的限制。

SSD固态硬盘存储数据的主流介质为闪存(例如NAND Flash),闪存具备以下独特特性:

1.物理页为最小读写单元,一个物理块中有多个物理页。

2.物理块为最小擦除单元。

3.物理页必须擦除后才能写入。

如图6所示,为了不让用户(此处特指存储系统中的软件层)感知到闪存的这些特性,主流的固态硬盘都会维护一张L2P(Logical_2_Physical)线性表来记录每个LBA写入闪存的物理位置信息,每个表项占用4B DRAM空间,所以假设固态硬盘容量为4TB,则L2P的大小为4TB/4KB*4B=4GB。SSD物理容量越大,L2P表也越大。

存储系统向SSD写入数据LBA_x时,SSD固件从NAND闪存中分配物理地址{物理块_y,物理页_z},并更新L2P表,L2P[LBA_x]={物理块_y,物理页_z}.之后存储系统读LBA_x时,SSD固件查询L2P表,得到物理地址{物理块_y,物理页_z},然后直接从对应的物理地址读取数据。其中L2P[LBA_x]表示L2P表中数据LBA_x对应的表项。

本实施例中,SSD向存储系统报告大于实际物理容量的报告容量,假设SSD的实际NAND闪存容量是4TB,则SSD固件对存储系统报告大于4TB的容量,这里假设为40TB(实际值可以大于或小于该假设值)。报告容量大于实际物理容量的SSD,可以称为精简配置SSD。如此,在分布式存储系统中,用户能够申请到很大一块存储空间,而且在用户实际使用率较低时(为了便于计算,此处举例是10%,也可以是其他比例,例如17%、6%等),单块SSD能够提供足够的闪存物理空间。

实现精简配置SSD的一个难点是L2P太大,因为SSD对系统的报告容量是40TB,所以按照传统的实现方式,SSD中的L2P表需要40GB DRAM,如图7所示:

而且真正可能被有效使用的L2P表最大是4GB,因为只有4TB的闪存物理容量,所以存在L2P浪费的缺陷,该缺陷无法被忽视,因为DRAM的价格比较高。

本实施例的解决方案如图8所示。

L2P表的总容量依然只有4GB大小,但是被切割成N个小表(即第一至第三实施方式中的N个L2P表),这里假设N=512(实际N可以等于任意值),则每个小表的大小是4GB/512=5MB.每个小表的管理方式与传统的L2P方式一样,即表中的LBA索引值必须是连续的。小表之间的LBA索引值是无关的。由于每个小表存储5MB*1K=5GB的用户数据,所以可以将报告容量按照5GB为一段来管理,所以整个报告容量40TB被切分成40TB/5GB=8K个段。此外还需要一个额外的小的段映射表(S2C,Sector_2_Chunk)来记录每个数据段使用的L2P小表,该S2C表的大小=数据段数量*logN*bit,本实施例中S2C表大小=8K*9bit=9KB。可见,S2C表是非常小的一张表,基本可以忽略它对DRAM的占用。下面分别讲解用户读写数据的操作流程。

1.在初始阶段。用户没有数据写入,所以8K个数据段与512个L2P小表没有对应关系。

2.用户写入数据。用户写入LBA_x,则计算该数据所属的数据段下标index=LBA_x/5GB,查看S2C[index]的值,存在下述两种情况,

2.1)S2C[index]=NULL,则该数据段是第一次有数据写入,所以需要从L2P小表中分配一个空闲的L2P小表来使用,则可能:

2.1.1)分配成功,且分配了第Y个L2P小表,则更新S2C[index]=Y。之后用传统的方式从物理闪存中分配物理页,且将物理页更新到第Y个L2P小表对应的位置L2P[Y][LBA_x%5GB]中(%代表取模运算)。

2.1.2)分配失败,说明已经没有可用的L2P小表了,则SSD固件向存储系统上报写入失败,存储系统会将数据写入到其他SSD。

2.2)S2C[index]不等于NULL,则该数据段已经分配过L2P小表,则使用传统的方式从物理闪存中分配物理页,且将物理页更新到第Y个L2P小表对应的位置L2P[S2C[index]][LBA_x%5GB]中。

3.用户读取数据。则计算该数据所属的数据段下标index=LBA_x/5GB,查看S2C[index]的值,存在下述两种情况:

3.1)S2C[index]等于NULL,说明该数据段没写过数据,则返回协议规定的数据值,一般是全0.

3.2)S2C[index]不等于NULL,说明该数据段曾经写过数据,则查看L2P小表中存储的物理页地址P=L2P[S2C[index]][LBA_x%5GB],又分为两种情况:

3.2.1)P等于NULL,则说明LBA_x之前没写过数据,则放回协议规定的数据值(例如全0)。

3.2.2)P不等于NULL,则从物理页P中读取数据返回给用户。

4.用户擦除数据。当用户不再想要曾经写入的数据,则会使用协议规定的命令(NVMe协议对应的是DSM-Deallocate命令)来擦除数据。此时计算该数据所属的数据段下标index=LBA_x/5GB,查看S2C[index]的值,然后将L2P[S2C[index]][LBA_x%5GB]更新为NULL。然后检查L2P小表L2P[S2C[index]]中的所有物理页值是否都等于NULL,如果都等于NULL,则说明数据段index中的数据都被用户擦除了,则释放L2P小表L2P[S2C[index]],即空闲的L2P小表又多了一个,且更新S2C[index]等于NULL。

本实施例中,数据段与L2P小表的映射关系可以用任意的数据结构来管理,包括但不限于哈希表,位图,树,线性表等,本示例中以线性表方式(即S2C表)来阐明原理,这并不构成对本申请保护范围的限制。

本申请实施方式的优点如下:

1.SSD对存储系统报告远大于物理容量的报告容量,使得用户能够以非常便宜的价格购买到同等的存储空间。在上面的实例中,SSD的实际容量是4TB,而报告容量则达到了40TB。

2.SSD固件内部L2P表的创新性管理,使得SSD在几乎不增加任何成本(此处特指DRAM的增加)情况下获得收益1。在上面的实例中,DRAM中存储的LSP表依然占用4GB空间,和现有技术相同。DRAM中虽然额外存储了S2C表,但S2C表只占用9KB空间,和LSP表的4GB相比,完全可以忽略不计。

本申请的实施方式还提供一种计算机可读存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本申请的各方法实施方式。计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于,相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

需要说明的是,在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本申请中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。

在描述方法的步骤时使用的序号本身并不对这些步骤的顺序构成任何的限定。例如,序号大的步骤并非一定要在序号小的步骤之后执行,也可以是先执行序号大的步骤再执行序号小的步骤,还可以是并行执行,只要这种执行顺序对于本领域技术人员来说是合理的即可。又如,拥有连续编号序号的多个步骤(例如步骤201,步骤202,步骤203等)并不限制其他步骤可以在其间执行,例如步骤201和步骤202之间可以有其他的步骤。

本说明书包括本文所描述的各种实施例的组合。对实施例的单独提及(例如“一个实施例”或“一些实施例”或“优选实施例”);然而,除非指示为是互斥的或者本领域技术人员很清楚是互斥的,否则这些实施例并不互斥。应当注意的是,除非上下文另外明确指示或者要求,否则在本说明书中以非排他性的意义使用“或者”一词。

在本说明书提及的所有文献都被认为是整体性地包括在本申请的公开内容中,以便在必要时可以作为修改的依据。此外应理解,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。

在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

技术分类

06120116556586