CN103458023A - 分布式闪存存储系统 - Google Patents
分布式闪存存储系统 Download PDFInfo
- Publication number
- CN103458023A CN103458023A CN201310388418XA CN201310388418A CN103458023A CN 103458023 A CN103458023 A CN 103458023A CN 201310388418X A CN201310388418X A CN 201310388418XA CN 201310388418 A CN201310388418 A CN 201310388418A CN 103458023 A CN103458023 A CN 103458023A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- flash
- data
- distributed
- pofs
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种分布式闪存存储系统,包括:分布式文件系统层,用于提供对文件数据的分布管理,并使文件元数据操作具有事务性特征;分布式闪存转换层,用于对闪存存储设备进行空间分配以及对多个闪存存储设备之间进行负载均衡;以及高速存储设备层,用于对分布式存储系统提供并发的存储单元和数据存储空间,以对文件数据进行存储。根据本发明实施例的系统,能够充分发挥闪存存储设备的存储和处理性能,提升整个系统的性能。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种分布式闪存存储系统。
背景技术
随着数据的爆炸性增长以及高速处理需求,应用程序对于数据的存储管理以及访问性能要求也越来越高。单个存储节点或者存储阵列难以提供PB级或者更大的存储容量。单节点的处理性能和访问带宽远不能满足现实应用。分布式存储系统提供了管理分布式的存储资源,提供了单一的命名空间,方便了数据共享,提供更高的聚集数据访问带宽。
分布式存储系统主要针对大规模数据密集型应用提供高的访问性能和扩展性。这些大规模数据密集型应用主要有以下共同点:(1)属于数据IO密集型,或者是元数据IO密集型;(2)均需要顺序或者随机访问大型数据集;(3)都需要大规模并行化,可能同时具有成千上万个并发操作。现有的基于磁盘的分布式存储系统虽然能提供很好的顺序访问性能,但是由于磁盘固有的机械特性,很难对多个小的随机访问提供足够的性能需求。
近年来,闪存存储的制造工艺日趋成熟,容量增加,成本降低。相比传统硬盘,无机械部件的闪存存储设备能耗低,抗震性能强,体积小,随机读写性能更好。然而,传统分布式存储系统复杂繁冗,而且主要针对磁盘优化。除此之外,上层文件系统与下层存储设备之间不能有效地交换语义信息,进而导致将其应用到闪存设备上时,出现功能重复实现、优化相互冲突等多种问题。
发明内容
本发明的目的旨在至少解决上述的技术缺陷之一。
为此,本发明的目的在于提出一种分布式闪存存储系统。
为达到上述目的,本发明的实施例提出一种分布式闪存存储系统,包括:
分布式文件系统层,用于提供对文件数据的分布式管理,并使所述文件元数据操作具有事务性特征;
分布式闪存转换层,用于对闪存存储设备进行空间分配以及对多个闪存存储设备之间进行负载均衡;以及
高速存储设备层,用于为所述分布式闪存存储系统提供并发的存储单元和数据存储空间,以对所述文件数据进行存储。
根据本发明实施例的系统,能够充分发挥闪存存储设备的存储和处理性能,提升整个系统的性能。
在本发明的一个实施例中,所述分布式文件系统层具体包括:基于SSD的RAID再同步一致性协议模块,用于更新所述文件的条带,并在所述闪存存储设备发生故障失效时,通过RAID再同步一致性协议恢复所述闪存存储设备中的失效数据;元数据操作一致性协议模块,用于对分布式文件系统中元数据的内容进行更新,并在所述闪存存储设备发生故障失效时,对所述元数据进行恢复;以及对象分布模块,用于通过分组方式为所述分布式闪存存储系统中的每个对象分配一个特定的设备来存储对象数据。
在本发明的一个实施例中,所述分布式闪存转换层具体包括:对象空间管理模块,用于合并文件系统中空间管理的映射表和FTL中逻辑地址映射到物理地址的映射表,以建立对象逻辑偏移地址与对应的物理地址之间的映射关系;冷热数据分组模块,用于通过所述闪存设备中闪存数据页面之间的相关性分离冷热数据;以及负载均衡模块,用于通过监控多个闪存存储设备之间的擦除频率,将部分数据从擦除频率高的闪存存储设备移动至擦除频率低的设备,以均衡所述多个闪存存储设备之间的负载。
在本发明的一个实施例中,所述高速存储设备层具体包括:并发存储模块,用于把所述闪存存储设备的多个并行单元中相同地址的闪存块映射成一个虚拟的闪存块,以使所述分布式文件系统层的一段连续闪存页位于闪存存储设备的不同并行单元上。
在本发明的一个实施例中,所述对象空间管理模块还用于将所述闪存存储设备分为根区域、数据区域和更新区域。
在本发明的一个实施例中,所述对象空间管理模块还用于当所述更新区域的数据量大于预设值时,将所述更新区域的部分数据转换至数据区域。
在本发明的一个实施例中,所述负载均衡模块进一步包括:重映射表管理单元,用于管理发生数据迁移对象的最新位置信息;垃圾回收频率监控单元,用于监控所述闪存存储设备的垃圾回收频率;访问跟踪单元,用于维护所述对象的访问冷热度;以及数据迁移单元,用于对所述闪存存储设备之间进行数据迁移。
在本发明的一个实施例中,
所述并发存储模块还用于根据闪存并行单元地址、闪存块地址和闪存页地址对物理地址进行映射,其中,对所述物理地址的映射通过如下公式表示,所述公式为,原地址(A,B,C)映射为(B,A1,C,A2),其中,A1和A2分别表示闪存并行单元地址A的高位地址和低位地址,B表示闪存块地址,C表示闪存页地址。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的分布式闪存存储系统的结构框图;
图2为根据本发明一个实施例的分布式闪存存储系统的整体框图;
图3为根据本发明一个实施例的基于SSD的RAID再同步一致性协议模块进行条带更新的流程图;
图4为根据本发明一个实施例的元数据操作一致性协议模块进行元数据更新的流程图;
图5为根据本发明一个实施例的对象分布模块的示意图;
图6为根据本发明一个实施例的对象分布算法伪代码;
图7(a)和(b)分别为根据本发明一个实施例的RAID再同步过程中的并发失效和成功的示意图;
图8为根据本发明一个实施例的对象空间管理模块的结构图;以及
图9为根据本发明一个实施例的负载均衡模块示意图。
具体实施方式
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
图1为根据本发明一个实施例的分布式闪存存储系统的结构框图。如图1所示,根据本发明实施例的分布式闪存存储系统包括分布式文件系统层100、分布式闪存转换层200和高速存储设备层300。
其中,分布式文件系统层100用于提供对文件数据的分布式管理,并使文件元数据操作具有事务性特征。
在本发明的一个实施例中,分布式文件系统层100具体包括:基于SSD的RAID再同步一致性协议模块110、元数据操作一致性协议模块120和对象分布模块130。
其中,基于SSD的RAID再同步一致性协议模块110用于更新文件的条带,并在闪存存储设备发生故障失效时,通过RAID再同步一致性协议恢复闪存存储设备中的失效数据。此协议能保证在RAID再同步过程中发生并发失效时,仍能通过该协议恢复失效闪存设备中的数据。
元数据操作一致性协议模块120用于对分布式文件系统中元数据的内容进行更新,并在闪存存储设备发生故障失效时,对元数据进行恢复。
对象分布模块130用于通过分组方式为分布式闪存存储系统中的每个对象分配一个特定的设备来存储对象数据。此外,通过尽可能地将具有相同的失效域的存储设备分至同一个组中,来提高集群系统的可靠性。
分布式闪存转换层200用于对闪存存储设备进行空间分配以及对多个闪存存储设备之间进行负载均衡。
在本发明的一个实施例中,分布式闪存转换层200具体包括:对象空间管理模块210、冷热数据分组模块220和负载均衡模块230。
其中,对象空间管理模块210用于合并文件系统中空间管理的映射表和FTL中逻辑地址映射到物理地址的映射表,以建立对象逻辑偏移地址与对应的物理地址之间的映射关系。
在本发明的一个实施例中,对象空间管理模块210还用于将闪存存储设备分为根区域、数据区域和更新区域。当更新区域的数据量大于预设值时,将更新区域的部分数据转换至数据区域。
冷热数据分组模块220用于通过闪存设备中闪存数据页面之间的相关性分离冷热数据,有效减少闪存垃圾回收时的写放大,提高闪存寿命。负载均衡模块230用于通过监控多个闪存存储设备之间的擦除频率,将部分数据从擦除频率高的闪存存储设备移动至擦除频率低的设备,以均衡多个闪存存储设备之间的负载以及寿命磨损。
在本发明的一个实施例中,负载均衡模块230进一步包括:重映射表管理单元、垃圾回收频率监控单元、访问跟踪单元和数据迁移单元。
重映射表管理单元用于管理发生数据迁移对象的最新位置信息。
垃圾回收频率监控单元用于监控闪存存储设备的垃圾回收频率。
访问跟踪单元用于维护对象的访问冷热度。
数据迁移单元用于对闪存存储设备之间进行数据迁移。
高速存储设备层300用于为分布式闪存存储系统提供并发的存储单元和数据存储空间,以对文件数据进行存储。
在本发明的一个实施例中,存储设备层300具体包括:并发存储模块310。
其中,并发存储模块310用于把闪存存储设备的多个并行单元中相同地址的闪存块映射成一个虚拟的闪存块,以使分布式文件系统层的一段连续闪存页位于闪存存储设备的不同并行单元上。
在本发明的一个实施例中,并发存储模块310还用于
根据闪存并行单元地址、闪存块地址和闪存页地址对物理地址进行映射,其中,对物理地址的映射通过如下公式表示,公式为,原地址(A,B,C)映射为(B,A1,C,A2),其中,A1和A2分别表示闪存并行单元地址A的高位地址和低位地址,B表示闪存块地址,C表示闪存页地址。
图2为根据本发明一个实施例的分布式闪存存储系统的整体框图。如图2所示,本发明的分布式闪存存储系统主要包括:多个客户端,以下简称client;一台元数据服务器,以下简称MDS(Metadata Server);以及多个基于对象存储的高速闪存存储设备,以下简称POFS(Parallel Object-based Flash Storage)。其中:POFS用以存储文件系统中的数据和元数据,client和MDS通过以太网与POFS进行通信并传输数据,MDS负责管理分布式文件系统的名字空间和元数据信息,以及维护对象的位置信息。Client通过PNFS协议在MDS上查找待访问文件所包含的对象号以及各对象的地址信息(各对象所在的POFS编号),在得到上述信息后,client就可以直接访问数据,而不需要每次访问数据之前都经过MDS。通过分离数据访问路径和元数据访问路径,数据和元数据的操作可以并行地执行,分别由client和MDS与POFS进行交互。
在分布式文件系统中,每个文件被划分成若干对象,其中每个对象可能分布于任意一个POFS中,并至少占用一个闪存页面,具体对象分布策略由本系统中的对象分布模块所决定。文件的属性(inode)存放在它所包含的对象的属性中。文件系统中的元数据,例如超级块、目录等,均以对象的形式存储。为了保证某些POFS在发生故障以后存储系统仍可用,文件的属性、超级块对象、目录对象都以镜像的方式存储在多个POFS中,而普通文件的数据都以RAID-5的形式组织存放在它所包含的若干对象中。为了保证元数据访问的效率,MDS维护了元数据缓存,根据元数据访问的局部性原理,MDS把最近经常访问的元数据放入DRAM中进行缓存,使得client访问元数据时尽量在MDS的DRAM中就能获取最新数据。
本发明中存储节点POFS直接管理裸闪存设备,闪存的FTL功能从闪存设备层移动到了系统软件层,新的FTL简称为POFTL(Parallel Object-based Flash TranslationLayer),它直接将对象中的逻辑偏移地址映射成为该部分数据在闪存设备中存储的物理地址。
在本发明的一个实施例中,分布式闪存转换层200和高速存储设备层300共同组成了POFS,POFS向client和MDS提供如下对象访问接口:
1、ocreate/oremove(oid)
2、oread/owrite(oid,offset,length,buf)
3、osetattr/ogetattr(oid,length,buf)
4、tx_owrite(oid,offset,length,buf,tx_id,bitmap)
5、tx_write_log(tx_id,length,buf)
6、tx_erasure(tx_id)
7、tx_conversion(tx_id)
ocreate/oremove(oid)分别表示创建或者删除一个编号是oid的对象。
oread/owrite(oid,offset,length,buf)接口表示对编号是oid的对象的普通读写操作,本次操作不属于任何一次事务。如果是oread操作,则表示把该对象从offset偏移处的length个字节读入buf中。如果是owrite操作,则表示把buf中length个字节的数据写入该对象的offset偏移处。
osetattr/ogetattr(oid,length,buf)接口,表示对编号是oid的对象的属性读写操作。如果是osetattr操作,则表示把buf中length字节的数据设置为该对象的属性。如果是ogetattr操作,则表示把该对象前length字节的属性读入buf中。
tx_owrite(oid,offset,length,buf,tx_id,bitmap)接口,表示对POFS进行事务性写操作,该次写操作所属的事务编号为tx_id,且该次事务的位图由bitmap表示,其中bitmap用以描述SCP协议中事务的元数据,bitmap所表示的具体信息将在以下SCP协议中具体说明。写操作中其余参数和owrite操作类似。
tx_write_log(oid,tx_id,length,buf)接口,表示将事务编号为tx_id的事务的日志记录写入POFS的日志区域中,该日志的记录内容为buf的前length个字节。
tx_erasure(tx_id)接口,表示擦除和事务编号为tx_id的事务相关的所有闪存页面。
tx_conversion(tx_id)接口,表示POFTL可以将和事务编号为tx_id的事务相关的所有闪存页面从更新区域移动至数据区域。除此之外,事务编号小于tx_id的事务的相关日志记录可以删除。
基于SSD的RAID再同步协议模块110所要解决的数据丢失问题具体描述如下:在大规模分布式存储系统中,存储节点会经常因为许多不确定因素而导致失效重启。在更新文件内容时,假设文件数据以RAID-5方式组织,更新一个条带可能需要系统同时更新两个甚至多个POFS节点上的数据。在一个相关的POFS掉电后且成功恢复之前,此时如果同时有另外一个相关的POFS发生故障失效并退出集群系统,例如设备出现故障等,那么这个POFS上的数据将永远不可恢复。图7(a)和(b)分别为根据本发明一个实施例的RAID再同步过程中的并发失效和成功的示意图。如图7(a)所示,当用户在第三次更新该条带的时候,此时POFS3发生故障失效了,页面C3未能成功写入POFS3的闪存设备中,当POFS3重启后再一次加入到存储系统中时,需要首先通过POFS1和POFS2中同一条带的相关数据计算出POFS3上对应的数据内容,并把数据写入POFS3,以达到条带一致的状态。然而,如果上述重启恢复的过程在未完成以前(C3成功写入POFS3之前),POFS2此时因为一些特殊原因永久地退出了集群系统,那么POFS1、POFS2、POFS3上该条带的数据将永远不能恢复到一个一致的状态,具体原因可以解释如下:为了达到一致的状态,恢复过程或者恢复到状态(A2,B1,C2),或者恢复到状态(A3,B3,C3),然而,此时页面A2和B1由于均被覆盖写入而丢失,页面B3由于POFS2永久退出而不能恢复,页面C3未能成功写入POFS3,因此,此时恢复不到任何一个一致的状态(任何一个状态都出现至少两个页面丢失,导致RAID-5不可恢复)。
基于SSD的RAID再同步一致性协议模块110,即SCP协议模块是为了解决上述服务器恢复过程中由于并发失效而导致的数据丢失问题,SCP协议用来保证POFS在出现上述并发失效时,相关POFS上的数据能够恢复到一致的状态(在上述例子中,SCP保证POFS2永久失效后,还能将数据恢复到一致的状态)。SCP协议具体包含两个过程:条带更新和失效恢复过程。
图3为根据本发明一个实施例的基于SSD的RAID再同步一致性协议模块进行条带更新的流程图。如图3所示,基于SSD的RAID再同步一致性协议模块(即SCP协议模块)进行条带更新的过程如下:
1、Client在更新一个文件的条带时,MDS为此次更新操作分配唯一的一个编号,记为SID。对于和每个条带相关的更新操作,SID是顺序分配的。除此之外,每次更新一个条带时,client会计算出一个32位的位图(bitmap),每一位代表该条带所属的文件的一个相关对象,如果位图的第i位设置为1,则表示此次更新关联该文件的第i个对象。SID和bitmap将会存放在闪存页面的OOB(out-of-band)空间。
2、继上一步得到bitmap和SID之后,client向所有和该更新操作相关的POFS发送tx_owrite(oid,offset,length,buf,SID,bitmap)操作命令。
3、所有POFS在接收到该事务写操作命令后,将相关的数据写入闪存设备的更新区域中,如果写入成功,则向client返回写入成功消息。否则,返回写入失败消息。
4、如果client接收到了和该SID相关的所有POFS的操作成功消息,那么此时,client需要向所有相关POFS发送tx_conversion(SID)命令。每个POFS接收到该命令之后,表示该闪存设备更新区域中和SID相关的所有闪存页面可以转换至数据区域了。相反,假设有一个或者多个POFS返回了写入失败的消息,则表示此次条带更新操作需要取消,而且必须在下一次更新该条带之前取消成功。此时,client向所有相关的POFS发送tx_erasure(SID)命令,擦除所有相关的闪存页面。
SCP协议模块的失效恢复描述如下:
当一个POFS(假设是POFSf)永久退出了集群中时,SCP协议需要恢复该POFS上的数据。对于每个条带S,恢复过程的目的是将POFSf中和该条带S相关的最新的且已经提交的页面恢复出来。
POFS中一个闪存页面已经提交,当且仅当该页面所对应的条带更新操作已经成功提交,即此次更新操作所包含的所有更新页面都已经成功写入相关POFS的更新区域中。POFS中和条带S相关的最新的且已经提交的闪存页面,需满足两个条件:1.该闪存页面属于条带S,且已经提交;2.该闪存页面对应OOB区域中的SID是该POFS中所有和条带S相关的闪存页面中所对应的最大SID。
在本发明的一个实施例中,SCP协议的失效恢复过程具体如下:
对于每个条带S,假设和该条带相关的POFS编号为POFS1,POFS2,……,POFSn。恢复过程需要首先找出从POFS1到POFSn上和条带S相关的最新的且已经提交的页面,假设用SIDr来表示所有和条带S相关的更新操作中的最大SID。
对于每个POFSi(1≤i≤n且i≠f),恢复过程首先需要检查该POFS上对应条带S且具有最大SID的那个闪存页面是否是已经提交的页面,假设该页面是Pi,它的OOB区域中对应的SID是SIDi,对应的bitmap为Bi,此时分为以下两种情况:
如果SIDi<SIDr,此时,根据SCP协议的隔离性,即对同一条带,下一次更新操作一定在上一次成功提交之后才能进行。我们可以断定条带更新编号为SIDi的操作一定成功提交了,因此Pi是一个最新的且已经提交的页面。
如果SIDi=SIDr,此时我们需要检查编号为SIDr的条带更新操作是否成功提交。具体为:根据页面Pi OOB中的bitmap Bi,查找Bi相应位为1所对应的POFS中是否已经成功写入相关页面,例如,假设Bi中的第3位对应为1,则需要查找POFS3中是否存在相关页面,相关页面表示该页面中对应OOB区域的SID等于SIDr。如果Bi中相应位为1所对应的POFS中均能查找到相关页面,则表示编号为SIDr的条带更新操作执行成功,页面Pi为POFSi中最新的且已经提交的页面。否则,POFSi中对应条带S的最新的且已经提交的页面为Pk,Pk满足该页面对应OOB中的SIDk为小于SIDr的最大SID。
继上述步骤之后,假设P1,P2,……,Pn分别为POFS1到POFSn中对应条带S的最新的且已经提交的页面,则POFSf对应条带S的最新且已经提交的页面Pf可以通过如下异或运算计算出来:
Pf=P1XOR P2 XOR…XOR Pf-1XOR Pf+1XOR…XOR Pn
元数据操作一致性协议模块120即PCP协议模块的处理包含两个过程:元数据内容更新和MDS或者闪存设备失效之后元数据一致性恢复过程。
图4为根据本发明一个实施例的元数据操作一致性协议模块进行元数据更新的流程图。如图4所示,PCP协议模块对元数据内容进行更新的过程如下:
1、当MDS想执行一个元数据事务操作时,MDS会为该事务操作分配唯一的一个事务ID,记为tx_id。此外,对于每个元数据事务操作,MDS需要在该事务操作所关联的每个POFS上记录一条相关的日志记录,这条日志记录的内容包含该事务操作在该POFS上写入数据的闪存页面地址(该闪存页面地址为逻辑地址,由三元组(oid,offset,length)组成,其中oid表示写入对象的编号,offset表示写入数据的对象逻辑偏移,length表示写入数据的长度),以及和该事务操作关联的其它所有POFS的编号。对于每次闪存页面写入操作,tx_id都会被写入该闪存页面OOB区域中。由于每个POFS上每条日志记录是由tx_id来索引的,因此每个闪存页面OOB区域中的tx_id指向了和该闪存页面相关的事务操作所对应的日志记录。
2、继上一步得到该事务操作的tx_id以及发送到每个POFS上的日志记录后,MDS向所有和该事务操作相关的POFS同时发送以下两条命令:tx_owrite(oid,offset,length,buf,tx_id,bitmap)和tx_write_log(tx_id,length,buf)。由于在tx_owrite命令中,bitmap只在SCP协议中有效,因此在PCP协议中只需将其赋值为0即可。
3、各POFS在接收到上一步两条命令时,将相关数据写入该POFS的更新区域中,并将相关日志记录写入POFS的日志区域中。如果数据和日志记录均写入成功,则返回给MDS一条成功的消息,否则返回一条失败的消息。
4、当MDS接收到编号为tx_id的事务操作所关联的所有POFS的反馈信息后,如果所有POFS返回的均是写入成功的消息,MDS则发送tx_conversion(tx_id)命令至所有POFS。否则,如若有一个或者多个POFS返回了写入失败的消息,MDS向所有相关的POFS发送tx_erasure(tx_id)命令,擦除所有相关的闪存页面。
在本发明的一个实施例中,PCP协议模块的元数据一致性恢复过程具体如下:
当POFS或者MDS从崩溃失效中重启之后,MDS开始元数据的一致性恢复过程,由于所有尚未完成事务的闪存更新页面均处于更新区域中,MDS在恢复的时候首先扫描所有POFS的更新区域。假设Th代表所有POFS上具有最大tx_id的事务(假设h代表最大的tx_id),那么元数据的一致性恢复过程只需要判断Th(即具有最大tx_id的事务操作)是否已经成功提交。
根据事务编号h,我们首先找出任意一条与Th相关的日志记录,根据该条日志记录,我们可以得到该Th相关的所有POFS的编号,假设为POFS1,POFS2,……,POFSm。
根据上一步的POFS编号,MDS需要在POFS1至POFSm中查找是否存在和Th相关的日志记录和相关闪存页面。在任意一台POFS,假设为POFSi(1≤i≤m)中判断和Th相关的日志记录和闪存页面是否存在的具体过程如下:首先在POFSi的日志区域检索是否有和Th相关的日志记录。若没有,则返回不存在。若有,则根据日志记录中所记录的和Th相关的逻辑地址查找该闪存页面是否存在,查找过程首先遍历查找更新区域中是否有和该逻辑地址相关的闪存页面,如若没有,则再根据日志记录中的逻辑地址和POFTL的索引查找数据区域。具体判断一个闪存页面P是否和Th相关的过程如下:读取页面P的OOB区域中所记录的tx_id,如果tx_id等于h,则该页面属于Th的更新页面,和Th相关。否则,该页面和Th无关。
完成判断之后,如果POFS1至POFSm和Th相关的日志记录和更新的闪存页面均存在,则表示Th已经成功提交。否则如果有任意一个POFS中不存在相关日志记录或者更新的闪存页面,则表示Th未能成功提交,需要被终止,此时,由MDS主动向POFS1至POFSm发送tx_erasure(h)命令。
对象分布模块130的功能在于为系统中任意一个对象分配该对象的具体位置。本发明中对象分布模块采用一种基于分组方式的对象组织模式,旨在提高集群系统中的可靠性以及提供一种高效、并行的数据恢复机制。对象分布模块的工作方式如图5所示,且其分布算法如图6中的算法1所示。具体过程如下:
对象分布模块130将集群中的所有POFS平均拆分成n个不相关的组。具有相同失效域的POFS被分配到同一组,例如,把连接在同一个交换机上的POFS分配到同一个组。这使得大部分的单点失效仅仅会影响到一个组内的POFS。
在本发明的一个实施例中,每个文件包含多个对象,文件的数据以RAID-5方式组织在其所包含的对象上。假设一个文件的RAID-5宽度为r,即该文件包含r个对象。对象分布模块130将这r个对象分布到r个不同组中。在创建一个文件时,MDS首先为该文件的第一个对象选择一个组。假设组编号为Gf,其中,Gf的选择方法如图6的算法1中第14行所示,Gf为对象编号的hash值与总组数的取模结果。此外,该文件剩余的r-1个对象将分布在组范围为[(Gf+1)mod n,(Gf+r-1)mod n]的连续r-1个组中,其中第i个对象分布在组编号为(Gf+i)mod n的组内。因此,属于同一个文件的所有r个对象将被分配到处于不同失效域内的POFS节点中。
在每个组内,对象分布模块130使用两个hash函数来把一个对象映射到该组内一个唯一的POFS中(如图6的算法1中1-9行所示)。其中不同组内的hash函数是相互独立的。
假设对象的编号为obj_id,它被分配到组f中,且该组有group_size个POFS,且组号为group_id。
第一个hash函数如图6的算法1中第2行所示,它把obj_id和group_id作为输入参数,然后产生一个远大于group_size的中间数值h。第二个hash函数如图6的算法1的第3-8行所示,其将上一个hash函数所产生的中间数值h映射成为一个最终值,该值为POFS所在的组内编号。这种hash方法带来以下好处:当系统想为某个组增加一台POFS服务器时,系统只需要将一台旧POFS上的部分数据移动至新加入的POFS中,数据迁移只会发生在两台POFS之间。而且,数据迁移的量大概为旧POFS中总数据量的一半。
对于每个对象,通过计算出组编号和组内编号后,就可以计算出分配给它的POFS服务器的编号,具体计算方法如图6的算法1第19行所示。该对象即存放在该POFS上。
本发明中的对象分布模块130具有以下优点:
1、系统具有高可靠性。为了减少闪存写,提高闪存寿命,本发明中的分布式闪存存储系统使用了RAID-5冗余模式替换了传统分布式存储系统的副本模式。然而对于每个文件,RAID-5只能同时容许该文件所属的对象中只有一个对象发生失效。本发明中的对象分布模块,通过将每个文件的不同对象分布到处于不同失效域的POFS节点中,使得大部分单点失效至多只会影响到每个文件的一个对象,进而提高了系统的可靠性。
2、高效、并行的数据恢复机制。对象分布模块中,在计算组内POFS编号的hash函数中,把组编号group_id加入进了该函数的输入参数中,使得相关文件的不同对象被尽量分配到了不同的POFS上(例如:任意两个处于同一失效POFS上的对象,分别与它们属于同一文件的其它相关对象在其它组中会处于不同POFS上,而并非也处于同一POFS上),提高了数据恢复的并行度和效率。
3、减少了元数据。对象分布模块使用hash方式来计算对象的位置,不需要在MDS上建立全局映射表,减少了元数据的开销,包括存储开销以及数据访问开销。
图8为根据本发明一个实施例的对象空间管理模块的结构图。对象空间管理模块210,即POFTL模块的结构如图8所示,其基本单元是对象(object)。所有对象都有一个唯一的对象标识,即对象ID(一个64位整数),存储系统通过该标识来访问对象。POFTL模块向上提供基于对象的访问接口,访问接口主要有创建、读、写、删除对象,设置、获取对象属性等接口。POFTL模块在逻辑上把整个闪存设备的空间分为三部分,分别为:根区域,数据区域和更新区域,其中,在数据区域和更新区域用来存放对象数据。
其中,数据区域用以存放对象数据,且对象包含两个部分:对象的元数据和对象的数据。对象的元数据和数据分别存放于不同的闪存页面中,其所在的闪存页面又分别被称为元数据页和数据页。对象的元数据包括对象的一些属性信息,例如,对象的大小,其它用户自定义的属性信息和对象的布局信息。对象的布局按照extent方式存储,即被组织成一系列的段,每个段中记录该对象存储在闪存中的一段连续数据,具体包括该段数据的起始页地址和长度。
根区域用来存放对象的索引结构(用B+树组织),该索引结构把对象的编号映射成为它的元数据页所在的地址。例如,对于某次读操作,POFTL首先需要通过对象ID索引到该对象的元数据页地址,通过元数据页获得对象数据的布局信息,最终通过布局信息得到对象数据的真实物理地址,进而访问该对象的数据。除此之外,根区域通常还维护一些全局的分配和擦除信息。根区域为每个闪存块存储一条信息,即块信息。每个闪存块的块信息可表示为:(该闪存块的累积擦除次数(20位),该闪存块中当前拥有的无效页面数(10位),该闪存块的状态(2位))。闪存块的状态用以区分该闪存块目前所在的区域,例如00代表该闪存块处于数据区,01代表该闪存块处于更新区域。无效页面数被用在垃圾回收选择待擦除的候选闪存块中,例如,垃圾回收模块可以选择具有最多无效页面数的闪存块进行擦除,以减少所产生的写放大。为了避免闪存块的更新操作出现在正常的写操作路径中,内存中闪存块的脏条目信息只会在块分配以及垃圾回收的过程中被写入闪存设备中。
更新区域被用来存放新写入的数据,在闪存的存储空间中划分一部分空间作为更新区域,写数据时需要的空闲页均从这部分空间进行分配。对象元数据页和数据页分开存储,更新区域分为元数据更新区域和数据更新区域,将元数据页或者数据页写入闪存时,新写入的数据均放入相应的更新区域。当更新区域的大小增长到一定界限时,将部分闪存块从更新区域转换为普通的数据区域,同时批量地更新映射表,这样将多次写合并,减少闪存的写次数,提高SSD的寿命。除此之外,为了方便上层文件系统设计事务操作的相关协议,更新区域中和某个事务操作相关的所有闪存页面在未收到对该事务操作的转换命令(即tx_conversion(tx_id))之前,不能把它们从更新区域移动至数据区域。每次把闪存块从更新区域移至数据区域并不需要真实的数据拷贝操作,闪存页面数据是否在更新区域由它所属的闪存块对应的块信息中的闪存块状态标志。因此,当每个闪存块移动至数据区域时,只需更改该闪存块的状态标志即可。
POFTL模块的读操作访问流程如下:
读取闪存设备中的根页面,通过根页面确定对象索引的根页面地址。
在对象索引中搜索要访问的对象ID,通过B+树索引出对象的元数据页地址。
根据获得的元数据页地址访问相应对象的元数据页面获取对象布局信息,并根据布局信息,确定要访问对象的逻辑偏移具体映射在哪个物理页面上。并根据得到的物理页面地址读取相应数据返回给上层。
POFTL模块的写操作流程如下:
写操作分为以下两种情况:
第一种情况是需要写入的数据属于对象的数据。此时,POFTL首先在更新区域找一个空闲页面,把数据写入进去,同时写入以下信息至该页面的OOB区域中,包括对象ID以及该段数据在对象中的逻辑偏移。这两条信息组成了对象数据页的反向指针(Datapagebackpointer)。
第二种情况是需要写入的数据属于对象的元数据。此时,POFTL首先在更新区域找一个空闲页面,把元数据写入进去,同时写入该对象的ID至该页面的OOB区域中。此时,该对象的ID成为了该对象元数据页的反向指针(Metapage backpointer)。
在把更新区域中的闪存块转换进入数据区域时,如果该闪存块中的存放的是数据页,则需要更新相应对象的元数据页面,而该部分数据所对应的对象ID和逻辑偏移则可以从该数据页的OOB中获取。如果该闪存块中存放的是元数据页,则需要更新对象索引中的相关索引,而该元数据页对应的对象ID也同样可以从OOB中获取,方便了转换时映射表的更新。除此之外,在反向指针的帮助下,POFS在失效重启之后还可以通过仅仅扫描更新区域中的数据实现快速地恢复。
闪存在垃圾回收的过程中需要将块内的有效数据迁移到其它区域,然后才能将块擦除,这会带来额外的写开销,而且块内有效数据越多,开销越大。因此,应尽量将可能在同一时间范围内失效的数据存储在同一个闪存块中,使同一个块内的数据在大致相同的时间点失效,减少垃圾回收需要数据迁移的页。传统的方法无法利用文件系统的语义,只能按照数据页的历史访问情况,将数据页按照其访问频率划分不同的冷热度,然后分别写入不同的闪存区域。然而数据页的历史访问情况也不尽准确,比如在删除文件的情况下,文件的数据所在的闪存页全部变为无效数据,而闪存FTL无法有效获取这些信息,当这些闪存页被其它文件重新利用时,其对应的历史记录变得不准确;而且对于追加写时新写入的文件逻辑地址,无法通过访问历史对数据的冷热度进行划分。
在分布式闪存转换层200,通过消除了系统软件和FTL的双重映射,POFTL中的冷热数据分组模块充分利用文件/对象的语义信息,实现了更好的数据分布。首先,POFTL中能完整的获取闪存页的数据类型,数据页、元数据页、对象索引页等,冷热数据分组模块220将闪存页按照不同的数据类型分开。在写入数据页时,冷热数据分组模块会通过数据的缓存将多次的写合并为一次大的连续写,然后将冷热数据分离,一个闪存块内的数据的冷热度尽量相近,使对象内的数据根据冷热度的不同尽可能分开。
图9为根据本发明一个实施例的负载均衡模块示意图。如图9所示,负载均衡模块230检测各个POFS上的负载情况,并在负载不均衡时进行数据的迁移。负载均衡模块230包括重映射表管理单元、垃圾回收频率监控单元、访问跟踪单元和数据迁移单元。
重映射表管理单元负责管理发生过数据迁移对象的最新位置信息。由于本发明中的对象分布模块使用hash方式来计算出各个对象的位置信息,因此,发生了位置移动的对象需要用一张额外的表来记录其位置信息,该表即为重映射表。当client访问对象的位置信息时,首先需要查询重映射表,如果在重映射表中查找到了相关目录项,则从该目录项中取出位置信息返回给client,否则通过使用图6中算法1所示的对象分布算法计算出对象的位置信息,并返回给client。
垃圾回收频率监控单元负责监控各个POFS上的垃圾回收频率。由于闪存设备的固有特性,每次写需要异地更新,因此需要在POFTL中加入垃圾回收单元,每隔固定时间回收无效的闪存页面。对于每个POFS,后端垃圾回收过程和前端I/O访问请求产生冲突,垃圾回收频率越高,表示前端I/O请求的延迟越高,负载越大。相反,POFS的访问延迟越小,负载越低。
访问跟踪单元负责维护每个对象的访问冷热度。访问跟踪单元结合访问频率和时间局部性来评价各个对象的访问冷热度。热度越高的对象预示着该对象在接下来的一段时间内很可能被访问;相反,热度越低的对象表示该对象在接下来的一段时间内很有可能不被访问。
数据迁移单元实现了各POFS之间的迁移过程。具体迁移过程采用了多线程的形式。
负载均衡模块230的具体步骤如下:
由垃圾回收频率监控单元定期监控各个POFS上的垃圾回收频率,并计算它们的标准差。
当各个POFS上垃圾回收频率的标准差大于一个阈值时,表示负载严重不均衡。此时,垃圾回收频率监控单元通知所有垃圾回收频率高出系统平均值的POFS开始数据迁移。
被通知数据迁移的POFS启动数据迁移单元,并根据访问跟踪单元选出部分热度最高的对象,迁移至垃圾回收频率低于系统平均值的若干POFS中。
迁移完成后,由迁移过程的目标服务器发送对象位置更新消息给重映射表管理单元,重映射表管理单元接收到此消息后,更新相应对象的位置信息。
在本发明的一个实施例中,不同于传统磁盘(由于磁盘只有一个磁头,数据只能串行访问),闪存能在设备中提供一定的数据并发访问。通常闪存的并行级别为bank,不同bank处于设备的不同传输通路上,因此不同bank之间的数据访问可以并行处理。
在本发明的一个实施例中,为了开发闪存芯片的并发特性,POFS可以将多个I/O请求同时发送到多个闪存不同bank上进行同时处理。为了最大化地提高闪存并行度,本专利在闪存设备层提出了一种新的地址编码方法,具体为:一个闪存的物理地址通常由三部分组成(A,B,C),表示闪存并行单元地址(即bank地址)为A,闪存块地址为B,闪存页地址为C。根据I/O访问的连续性,应尽可能让地址连续的闪存页面分布于不同的bank上,以提高闪存并行度。因此,在本发明的分布式系统中,每个POFS上的高速闪存设备将闪存页的物理地址进行了一层映射,提供一个连续的线性地址给系统。由POFTL发送给闪存设备的物理地址将不再按上述通常方法解析地址,而是将物理地址映射为(B,A1,C,A2),其中A1和A2分别代表bank地址的高位地址和低位地址。例如,设置并行度为4,将4个bank组合在一起,A2为bank地址A的低两位,A1为bank地址的高位,这样连续的四个bank中块地址相同的块组合成一个大的虚拟块,虚拟块的大小也将变为原来的4倍。例如:
0号地址映射为(0,0,0,0),位于0号bank,0号block,0号page上;
1号地址映射为(0,0,0,1),位于1号bank,0号block,0号page上;
2号地址映射为(0,0,0,2),位于2号bank,0号block,0号page上;
3号地址映射为(0,0,0,3),位于3号bank,0号block,0号page上;
4号地址映射为(0,0,1,0),位于0号bank,0号block,1号page上;
……
如此,连续的0,1,2,3号地址分别被映射到了不同的bank上,当应用程序连续访问这四个地址时,系统可以将这四个请求同时发到闪存不同bank进行并行处理,提高了闪存的访问效率。
根据本发明实施例的系统,能够充分发挥闪存存储设备的存储和处理性能,提升整个系统的性能。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (8)
1.一种分布式闪存存储系统,其特征在于,包括:
分布式文件系统层,用于提供对文件数据的分布式管理,并使所述文件元数据操作具有事务性特征;
分布式闪存转换层,用于对闪存存储设备进行空间分配以及对多个闪存存储设备之间进行负载均衡;以及
高速存储设备层,用于为所述分布式闪存存储系统提供并发的存储单元和数据存储空间,以对所述文件数据进行存储。
2.如权利要求1所述的分布式闪存存储系统,其特征在于,所述分布式文件系统层具体包括:
基于SSD的RAID再同步一致性协议模块,用于更新所述文件的条带,并在所述闪存存储设备发生故障失效时,通过RAID再同步一致性协议恢复所述闪存存储设备中的失效数据;
元数据操作一致性协议模块,用于对分布式文件系统中元数据的内容进行更新,并在所述闪存存储设备发生故障失效时,对所述元数据进行恢复;以及
对象分布模块,用于通过分组方式为所述分布式闪存存储系统中的每个对象分配一个特定的设备来存储对象数据。
3.如权利要求1所述的分布式闪存存储系统,其特征在于,所述分布式闪存转换层具体包括:
对象空间管理模块,用于合并文件系统中空间管理的映射表和FTL中逻辑地址映射到物理地址的映射表,以建立对象逻辑偏移地址与对应的物理地址之间的映射关系;
冷热数据分组模块,用于通过所述闪存设备中闪存数据页面之间的相关性分离冷热数据;以及
负载均衡模块,用于通过监控多个闪存存储设备之间的擦除频率,将部分数据从擦除频率高的闪存存储设备移动至擦除频率低的设备,以均衡所述多个闪存存储设备之间的负载。
4.如权利要求1所述的分布式闪存存储系统,其特征在于,所述高速存储设备层具体包括:
并发存储模块,用于把所述闪存存储设备的多个并行单元中相同地址的闪存块映射成一个虚拟的闪存块,以使所述分布式文件系统层的一段连续闪存页位于闪存存储设备的不同并行单元上。
5.如权利要求3所述的分布式闪存存储系统,其特征在于,所述对象空间管理模块还用于将所述闪存存储设备分为根区域、数据区域和更新区域。
6.如权利要求5所述的分布式闪存存储系统,其特征在于,所述对象空间管理模块还用于当所述更新区域的数据量大于预设值时,将所述更新区域的部分数据转换至数据区域。
7.如权利要求3所述的分布式闪存存储系统,其特征在于,所述负载均衡模块进一步包括:
重映射表管理单元,用于管理发生数据迁移对象的最新位置信息;
垃圾回收频率监控单元,用于监控所述闪存存储设备的垃圾回收频率;
访问跟踪单元,用于维护所述对象的访问冷热度;以及
数据迁移单元,用于对所述闪存存储设备之间进行数据迁移。
8.如权利要求4所述的分布式闪存存储系统,其特征在于,所述并发存储模块还用于根据闪存并行单元地址、闪存块地址和闪存页地址对物理地址进行映射,其中,对所述物理地址的映射通过如下公式表示,所述公式为,
原地址(A,B,C)映射为(B,A1,C,A2),
其中,A1和A2分别表示闪存并行单元地址A的高位地址和低位地址,B表示闪存块地址,C表示闪存页地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310388418.XA CN103458023B (zh) | 2013-08-30 | 2013-08-30 | 分布式闪存存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310388418.XA CN103458023B (zh) | 2013-08-30 | 2013-08-30 | 分布式闪存存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103458023A true CN103458023A (zh) | 2013-12-18 |
CN103458023B CN103458023B (zh) | 2016-12-28 |
Family
ID=49739965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310388418.XA Active CN103458023B (zh) | 2013-08-30 | 2013-08-30 | 分布式闪存存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103458023B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035886A (zh) * | 2014-06-23 | 2014-09-10 | 华为技术有限公司 | 磁盘重映射方法、装置及电子设备 |
WO2016029524A1 (zh) * | 2014-08-28 | 2016-03-03 | 北京兆易创新科技股份有限公司 | 一种用于闪存的网络存储设备及其处理方法 |
CN106293493A (zh) * | 2015-05-18 | 2017-01-04 | 广明光电股份有限公司 | 固态硬盘模块动态储存转换层的方法 |
CN106326370A (zh) * | 2016-08-12 | 2017-01-11 | 德基网络科技南京有限公司 | 一种基于电子商务平台的大数据统计方法 |
CN107515728A (zh) * | 2016-06-17 | 2017-12-26 | 清华大学 | 发挥闪存设备内部并发特性的数据管理方法和装置 |
CN107632780A (zh) * | 2017-08-28 | 2018-01-26 | 深圳市云舒网络技术有限公司 | 一种基于分布式存储系统的条带卷实现方法及其存储架构 |
CN107657185A (zh) * | 2016-07-26 | 2018-02-02 | 三星电子株式会社 | 用于安全删除文件的主机和存储系统及主机的操作方法 |
CN108038026A (zh) * | 2017-11-17 | 2018-05-15 | 中国科学院信息工程研究所 | 一种基于闪存的数据快速恢复方法与系统 |
TWI629592B (zh) * | 2017-10-25 | 2018-07-11 | 旺宏電子股份有限公司 | 記憶體裝置及應用於其上之資料管理方法 |
CN108509353A (zh) * | 2018-03-14 | 2018-09-07 | 清华大学 | 基于裸闪存的对象存储构建方法及装置 |
CN109471594A (zh) * | 2018-10-09 | 2019-03-15 | 华中科技大学 | 一种mlc闪存读写方法 |
CN109471809A (zh) * | 2018-09-29 | 2019-03-15 | 上海东软载波微电子有限公司 | 一种芯片的flash加密保护方法、装置、flash控制器及芯片 |
WO2019071595A1 (zh) * | 2017-10-13 | 2019-04-18 | 华为技术有限公司 | 分布式块存储系统中数据存储方法、装置及计算机可读存储介质 |
CN109710195A (zh) * | 2019-01-08 | 2019-05-03 | 郑州云海信息技术有限公司 | 一种全闪存储负载均衡方法、装置及存储系统 |
CN109710173A (zh) * | 2017-10-26 | 2019-05-03 | 旺宏电子股份有限公司 | 存储器装置及应用于其上的数据管理方法 |
CN110023896A (zh) * | 2016-12-19 | 2019-07-16 | 净睿存储股份有限公司 | 直接映射的闪存存储系统中的块合并 |
CN110096477A (zh) * | 2019-04-30 | 2019-08-06 | 北京三快在线科技有限公司 | 一种数据存储的方法及装置 |
CN110413229A (zh) * | 2019-07-10 | 2019-11-05 | 华中科技大学 | 一种数据写入方法 |
CN113039514A (zh) * | 2018-06-29 | 2021-06-25 | 维卡艾欧有限公司 | 分布式文件系统中的数据迁移 |
CN113742310A (zh) * | 2015-10-05 | 2021-12-03 | 维卡艾欧有限公司 | 用于操作存储系统的方法和机器可读存储器 |
CN117270795A (zh) * | 2023-11-23 | 2023-12-22 | 北京中超伟业信息安全技术股份有限公司 | 一种大容量数据存储设备及其数据销毁方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090177860A1 (en) * | 2005-02-23 | 2009-07-09 | Yaolong Zhu | Data management method for network storage system and the network storage system built thereof |
CN101504625A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 实现独立磁盘冗余阵列的方法、固态硬盘和电子设备 |
CN101567001A (zh) * | 2009-05-22 | 2009-10-28 | 清华大学 | 并行文件系统的元数据文件布局管理方法 |
-
2013
- 2013-08-30 CN CN201310388418.XA patent/CN103458023B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090177860A1 (en) * | 2005-02-23 | 2009-07-09 | Yaolong Zhu | Data management method for network storage system and the network storage system built thereof |
CN101504625A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 实现独立磁盘冗余阵列的方法、固态硬盘和电子设备 |
CN101567001A (zh) * | 2009-05-22 | 2009-10-28 | 清华大学 | 并行文件系统的元数据文件布局管理方法 |
Non-Patent Citations (1)
Title |
---|
郑文静等: "Flash存储技术", 《计算机研究与发展》 * |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035886A (zh) * | 2014-06-23 | 2014-09-10 | 华为技术有限公司 | 磁盘重映射方法、装置及电子设备 |
WO2016029524A1 (zh) * | 2014-08-28 | 2016-03-03 | 北京兆易创新科技股份有限公司 | 一种用于闪存的网络存储设备及其处理方法 |
CN106293493A (zh) * | 2015-05-18 | 2017-01-04 | 广明光电股份有限公司 | 固态硬盘模块动态储存转换层的方法 |
CN113742310A (zh) * | 2015-10-05 | 2021-12-03 | 维卡艾欧有限公司 | 用于操作存储系统的方法和机器可读存储器 |
CN107515728B (zh) * | 2016-06-17 | 2019-12-24 | 清华大学 | 发挥闪存设备内部并发特性的数据管理方法和装置 |
CN107515728A (zh) * | 2016-06-17 | 2017-12-26 | 清华大学 | 发挥闪存设备内部并发特性的数据管理方法和装置 |
CN107657185A (zh) * | 2016-07-26 | 2018-02-02 | 三星电子株式会社 | 用于安全删除文件的主机和存储系统及主机的操作方法 |
US11657022B2 (en) | 2016-07-26 | 2023-05-23 | Samsung Electronics Co., Ltd. | Host and storage system for securely deleting files and operating method of the host |
CN106326370A (zh) * | 2016-08-12 | 2017-01-11 | 德基网络科技南京有限公司 | 一种基于电子商务平台的大数据统计方法 |
CN110023896A (zh) * | 2016-12-19 | 2019-07-16 | 净睿存储股份有限公司 | 直接映射的闪存存储系统中的块合并 |
CN110023896B (zh) * | 2016-12-19 | 2023-11-07 | 净睿存储股份有限公司 | 直接映射的闪存存储系统中的块合并 |
CN107632780A (zh) * | 2017-08-28 | 2018-01-26 | 深圳市云舒网络技术有限公司 | 一种基于分布式存储系统的条带卷实现方法及其存储架构 |
WO2019071595A1 (zh) * | 2017-10-13 | 2019-04-18 | 华为技术有限公司 | 分布式块存储系统中数据存储方法、装置及计算机可读存储介质 |
TWI629592B (zh) * | 2017-10-25 | 2018-07-11 | 旺宏電子股份有限公司 | 記憶體裝置及應用於其上之資料管理方法 |
CN109710173B (zh) * | 2017-10-26 | 2021-12-03 | 旺宏电子股份有限公司 | 存储器装置及应用于其上的数据管理方法 |
CN109710173A (zh) * | 2017-10-26 | 2019-05-03 | 旺宏电子股份有限公司 | 存储器装置及应用于其上的数据管理方法 |
CN108038026A (zh) * | 2017-11-17 | 2018-05-15 | 中国科学院信息工程研究所 | 一种基于闪存的数据快速恢复方法与系统 |
CN108038026B (zh) * | 2017-11-17 | 2021-11-30 | 中国科学院信息工程研究所 | 一种基于闪存的数据快速恢复方法与系统 |
CN108509353A (zh) * | 2018-03-14 | 2018-09-07 | 清华大学 | 基于裸闪存的对象存储构建方法及装置 |
CN113039514A (zh) * | 2018-06-29 | 2021-06-25 | 维卡艾欧有限公司 | 分布式文件系统中的数据迁移 |
CN109471809B (zh) * | 2018-09-29 | 2021-07-27 | 上海东软载波微电子有限公司 | 一种芯片的flash加密保护方法、装置、flash控制器及芯片 |
CN109471809A (zh) * | 2018-09-29 | 2019-03-15 | 上海东软载波微电子有限公司 | 一种芯片的flash加密保护方法、装置、flash控制器及芯片 |
CN109471594A (zh) * | 2018-10-09 | 2019-03-15 | 华中科技大学 | 一种mlc闪存读写方法 |
CN109710195A (zh) * | 2019-01-08 | 2019-05-03 | 郑州云海信息技术有限公司 | 一种全闪存储负载均衡方法、装置及存储系统 |
CN110096477A (zh) * | 2019-04-30 | 2019-08-06 | 北京三快在线科技有限公司 | 一种数据存储的方法及装置 |
CN110096477B (zh) * | 2019-04-30 | 2022-04-01 | 北京三快在线科技有限公司 | 一种数据存储的方法及装置 |
CN110413229A (zh) * | 2019-07-10 | 2019-11-05 | 华中科技大学 | 一种数据写入方法 |
CN117270795A (zh) * | 2023-11-23 | 2023-12-22 | 北京中超伟业信息安全技术股份有限公司 | 一种大容量数据存储设备及其数据销毁方法 |
CN117270795B (zh) * | 2023-11-23 | 2024-02-09 | 北京中超伟业信息安全技术股份有限公司 | 一种大容量数据存储设备及其数据销毁方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103458023B (zh) | 2016-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103458023A (zh) | 分布式闪存存储系统 | |
CN110825748B (zh) | 利用差异化索引机制的高性能和易扩展的键值存储方法 | |
Lee et al. | {F2FS}: A new file system for flash storage | |
CN102722449B (zh) | 基于SSD的Key-Value型本地存储方法及系统 | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
EP3170106B1 (en) | High throughput data modifications using blind update operations | |
CN102521269B (zh) | 一种基于索引的计算机连续数据保护方法 | |
US8880787B1 (en) | Extent metadata update logging and checkpointing | |
US9519591B2 (en) | Latch-free, log-structured storage for multiple access methods | |
US10503424B2 (en) | Storage system | |
CN107391774B (zh) | 基于重复数据删除的日志文件系统的垃圾回收方法 | |
CN103106286B (zh) | 元数据的管理方法和装置 | |
CN103577339A (zh) | 一种数据存储方法及系统 | |
CN108021717B (zh) | 一种轻量级嵌入式文件系统的实现方法 | |
CN113867627B (zh) | 一种存储系统性能优化方法及系统 | |
CN105045850A (zh) | 云存储日志文件系统中垃圾数据回收方法 | |
US10210067B1 (en) | Space accounting in presence of data storage pre-mapper | |
US10289345B1 (en) | Contention and metadata write amplification reduction in log structured data storage mapping | |
CN113377292A (zh) | 一种单机存储引擎 | |
CN110134551B (zh) | 一种持续数据保护方法及装置 | |
WO2017113211A1 (zh) | 访问请求处理方法、装置及计算机系统 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 | |
CN106294189B (zh) | 内存碎片整理方法及装置 | |
US10416901B1 (en) | Storage element cloning in presence of data storage pre-mapper with multiple simultaneous instances of volume address using virtual copies | |
CN106547484A (zh) | 一种基于raid5的实现内存数据可靠性方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |