一种集群文件系统中文件冗余存储方法转让专利

申请号 : CN201110042143.5

文献号 : CN102110154B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘振晗

申请人 : 中国科学院计算技术研究所天津中科蓝鲸信息技术有限公司

摘要 :

本发明提供一种集群文件系统中文件冗余存储方法,在保证数据可靠性和可用性的前提下,数据可以在不同存储状态中动态切换。在系统存储资源紧张时,数据可以从镜像方式转化为冗余校验方式存储,减少了冗余空间占用,提高空间利用率。同时数据以镜像方式进行写更新,对于客户端的写请求不必考虑如何进行冗余校验方式的冗余计算及冗余更新问题,新写的数据块镜像到冗余存储管理设备上,写性能相比冗余校验方式得到大幅度提高。另外当存储节点出现故障时可以用镜像和冗余校验结合的方式来进行恢复操作来减少计算量,并改善数据恢复的效率。

权利要求 :

1.一种集群文件系统中文件冗余存储方法,所述文件系统中文件以数据片的方式存放在网络存储节点,包括以下存储状态:状态1,数据片以镜像方式存放;

状态2,数据片以冗余校验方式存放;

状态3,其中原版本数据片以冗余校验方式存放,写更新所生成的新版本数据片以镜像方式存放;

所述方法包括以下步骤:

读取处于状态1的文件的各数据片;

进行冗余计算,生成冗余校验片;

将冗余校验片写入文件;

释放文件各镜像数据片的存储空间;

修改状态1为状态2;

保持被写更新的处于状态2的原版本数据片不变,生成新版本数据片;

将新版本数据片写入相应的存储节点,同时做镜像备份到另一存储节点;

修改状态2为状态3。

2.根据权利要求1所述的集群文件系统中的文件冗余存储方法,其特征在于:所述冗余校验方式是奇偶校验。

3.根据权利要求1所述的集群文件系统中文件冗余存储方法,其特征在于:所述方法由文件系统中作为客户端的应用服务器执行。

4.根据权利要求1所述的集群文件系统中文件冗余存储方法,其特征在于:还包括以下写更新步骤:对以镜像方式存放的数据片,同时修改存放在两个存储节点的数据片及其镜像;

对以冗余校验方式存放的数据片,保持以冗余校验方式存放的原版本数据片不变,生成新版本数据片;将新版本数据片写入相应的存储节点,同时做镜像备份到另一存储节点。

5.根据权利要求1所述的集群文件系统中文件冗余存储方法,其特征在于所述方法还包括以下步骤:依次遍历处于状态3的文件的镜像数据片,遇到空洞,将原版本数据片填充写入新版本数据片和镜像数据片;

将原版本数据片替换为新版本数据片;

释放新版本数据片和冗余校验数据片的存储空间;

修改状态3为1。

6.根据权利要求1、4或5所述的集群文件系统中文件冗余存储方法,其特征在于:还包括数据片出错时的恢复步骤:状态1时,用对应节点上的数据片镜像恢复出错数据片;

状态2时,进行冗余计算恢复出错的数据片;

状态3时,如果出错的是原版本数据片,则进行冗余计算恢复出错数据片;如果出错的是新版本数据片或者其镜像数据片,则用对应节点上的数据片镜像恢复出错数据片。

说明书 :

一种集群文件系统中文件冗余存储方法

技术领域

[0001] 本发明涉及共享存储系统的数据的安全保障机制,特别涉及集群系统中文件的冗余存储方法。

背景技术

[0002] 在以数据为中心的信息时代,如何妥善有效地保护数据是存储系统的核心问题之一。人们可以忍受计算机异常宕机、所有应用程序重新启动甚至硬件损坏,但是他们要求信息永远不会丢失。存储系统最重要的任务是不论发生什么故障,都要保证存储的信息不能丢失,并且尽力不间断地提供高质量的数据服务。数据信息的毁坏和丢失不但影响到企业的业务连续性,甚至极大地威胁到一个机构的生存。
[0003] 为了保证存储在磁盘中的数据的安全性,本领域的技术人员提出了独立冗余磁盘阵列(RAID)技术,该技术将多个磁盘组合成一个磁盘阵列,并在各个磁盘中存储其它磁盘的冗余信息,使得当阵列中的某个磁盘发生故障后,可以根据阵列中其它磁盘所存储的冗余信息恢复故障磁盘上的数据。RAID根据实现原理可分为不同的级别,分别用RAID0-RAID7表示。不同级别的RAID系统的工作模式存在较大的差异,比较有代表性的是采用镜像方式的RAID1和采用冗余校验方式的RAID5。
[0004] 在网络存储系统中同样可以采用类似上述的RAID的技术,多个存储节点组成一个网络RAID系统。但如果采用类似RAID1的镜像方式,尽管读写性能高,但是空间利用率只有50%,整个系统的性价比反而较低。如果采用类似RAID5的冗余校验方式,增加了空间利用率,但是写性能尤其是小写性能较低。
[0005] 如何为高性能、大容量的基于网络存储的集群文件系统,提供高效的数据高可靠和高可用保障机制,即保持优良的性能并且减少冗余空间的损耗,这个问题已经成为一个研究热点。目前集群存储厂商Panasas公司的并行文件系统PanFS实现了文件级冗余存储机制,小文件使用类似RAID1的镜像方式存放,而大文件采用类似RAID5的冗余校验方式存放,但PanFS依然无法解决上述传统镜像和冗余校验技术所不能解决的问题。

发明内容

[0006] 本发明的目的在于克服上述现有技术的缺陷,为高性能、大容量的基于网络存储的集群文件系统,提供高效的数据高可靠和高可用保障机制,在保持优良的性能的同时减少冗余空间的损耗。
[0007] 本发明的目的是通过以下技术方案实现的:
[0008] 本发明提供了一种集群文件系统中文件冗余存储方法,其中,在所述文件系统中,文件以数据片的方式存放在网络存储节点,包括以下存储状态:状态1,数据片以镜像方式存放;状态2,数据片以冗余校验方式存放;所述方法包括以下步骤:
[0009] 读取处于状态1的文件的各数据片;
[0010] 进行冗余计算,生成冗余校验片;
[0011] 将冗余校验片写入文件;
[0012] 释放文件各镜像数据片的存储空间;
[0013] 修改状态1为状态2。
[0014] 根据本发明优选实施例的集群文件系统中的文件冗余存储方法,存储状态2所采用的冗余校验方式是奇偶校验。
[0015] 根据本发明优选实施例的集群文件系统中的文件冗余存储方法,所述方法的步骤是由文件系统中作为客户端的应用服务器执行的。
[0016] 根据本发明优选实施例的集群文件系统中的文件冗余存储方法,文件的存储状态还包括状态3,其中原版本数据片以冗余校验方式存放,写更新所生成的新版本数据片以镜像方式存放;
[0017] 所述方法还包括以下步骤:
[0018] 保持被写更新的处于状态2的原版本数据片不变,生成新版本数据片;
[0019] 将新版本数据片写入相应的存储节点,同时做镜像备份到另一存储节点;
[0020] 修改状态2为状态3。
[0021] 根据本发明优选实施例的集群文件系统中的文件冗余存储方法,还包括以下写更新步骤:
[0022] 对以镜像方式存放的数据片,同时修改存放在两个存储节点的数据片及其镜像;
[0023] 对以冗余校验方式存放的数据片,保持以冗余校验方式存放的原版本数据片不变,生成新版本数据片;将新版本数据片写入相应的存储节点,同时做镜像备份到另一存储节点。
[0024] 根据本发明优选实施例的集群文件系统中的文件冗余存储方法,还包括以下步骤:
[0025] 依次遍历处于状态3的文件的镜像数据片,遇到空洞,将原版本数据片填充写入新版本数据片和镜像数据片;
[0026] 将原版本数据片替换为新版本数据片;
[0027] 释放新版本数据片和冗余校验数据片的存储空间;
[0028] 修改状态3为1。
[0029] 根据本发明优选实施例的集群文件系统中的文件冗余存储方法,还包括数据片出错时的恢复步骤:
[0030] 状态1时,用对应节点上的数据片镜像恢复出错数据片;
[0031] 状态2时,进行冗余计算恢复出错的数据片;
[0032] 状态3时,如果出错的是原版本数据片,则进行冗余计算恢复出错数据片;如果出错的是新版本数据片或者其镜像数据片,则用对应节点上的数据片镜像恢复出错数据片。
[0033] 与现有技术相比,根据本发明具体实施例提供的集群文件系统中的文件冗余存储方法,数据可以在不同存储状态中动态切换。对于客户端的写操作,数据以镜像方式进行写更新,对于客户端的写请求不必考虑如何进行冗余计算及冗余更新问题,新写的数据块镜像到冗余存储管理设备上。避免了冗余校验方式中小写更新导致的写性能低下问题,写性能相比现有冗余校验方式得到大幅度提高。同时,非写活跃性质的数据在系统存储资源紧张时,可以转化为冗余校验方式存储,在保证数据可靠性和可用性的前提下,减少了冗余空间占用,提高空间利用率。另外当存储节点出现故障时可以用镜像方式和冗余校验结合的方式来减少计算量,改善数据恢复的效率,保障了数据的可靠性和可用性。

附图说明

[0034] 以下参照附图对本发明实施例作进一步说明,其中:
[0035] 图1为根据本发明实施例的各存储节点没有写入数据的初始状态的示意图;
[0036] 图2为根据本发明实施例的数据片以镜像方式存放的状态1的示意图;
[0037] 图3为根据本发明实施例的数据片以冗余校验方式存放的状态2的示意图;
[0038] 图4为根据本发明实施例的原版本数据片以冗余校验方式存放,写更新所生成的新版本数据片以镜像方式冗余存放的状态3的示意图;
[0039] 图5为根据本发明实施例的状态1下写更新数据片的示意图;
[0040] 图6为根据本发明实施例的状态3下新版本数据片被再次写更新后的示意图;
[0041] 图7为根据本发明实施例的状态3下原版本数据片被写更新的示意图;
[0042] 图8为根据本发明实施例的状态2下冗余校验片出错的示意图;
[0043] 图9为根据本发明实施例的状态2下数据片出错的示意图;
[0044] 图10为根据本发明实施例的状态3下冗余校验片出错的示意图;
[0045] 图11为根据本发明实施例的状态3下原版本数据片出错的示意图;
[0046] 图12为根据本发明实施例的状态3下新版本数据片的镜像出错的示意图;
[0047] 图13为根据本发明实施例的状态3下原版本数据片及其新版本的数据片都出错的示意图。

具体实施方式

[0048] 为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0049] 在本发明的实施例中所述文件系统包括作为应用服务器,元数据服务器以及多个存储节点,其中应用服务器作为文件系统的客户端执行文件的读写操作。图1为根据本发明的一个实施例的初始状态,各存储节点(SN)没有写入数据。在本发明的实施例中初次保存文件时,文件以数据片的方式分别存放在相应网络存储节点,同时将各存储节点数据片作镜像备份至其余节点,形成镜像方式冗余存放,提高数据可靠性。此时文件的存储状态称为状态1,如图2所示。图2为根据本发明实施例的状态1,数据片以镜像方式存放。在本实施例中仅以3个存储节点和3个镜像节点为示例,但在其他实施例中存储节点的数目不受限制,可以为任意数目。
[0050] 在本发明的实施例中,所述文件系统中文件的存储状态还包括如图3所示的状态2,数据片以冗余校验方式存放。在本实施例中冗余校验方式采用的是类似RAID5的奇偶校验,在其他实施例中冗余校验方式也可以采用如海明码校验等其他为本领域技术人员所知的冗余校验方式。
[0051] 在本发明的实施例中,上述的文件存储状态1可以通过以下步骤转换为状态2,转换步骤包括:
[0052] 读取处于状态1的文件的各数据片;
[0053] 进行冗余计算,生成冗余校验片;
[0054] 将冗余校验片写入文件;
[0055] 释放文件各镜像数据片的存储空间;
[0056] 修改状态1为状态2。
[0057] 以上步骤也可以称为降级操作。当大量文件处于状态1以镜像方式保存,文件空间冗余达到100%,此时如果系统剩余存储资源较为紧张,可以对文件进行降级操作,将状态1转化为状态2,以冗余校验保存文件,在不降低系统可靠性的基础上释放存储资源,减少空间占用。
[0058] 在本发明实施例中降级操作由文件系统中作为客户端的应用服务器执行,这样可以避免产生集中式管理的单个控制节点性能瓶颈。此降级操作可以由后台降级守护进程(DegradeDeamon)调用,在资源紧张时进行空间压缩和资源释放。在一些实施例中,降级操作也可以由存储管理服务器执行。在另一些实施例中,降级步骤可以由文件系统中的服务器端执行。
[0059] 在本发明实施例中所述文件系统中文件的存储状态还包括如图4所示的状态3,其中原版本数据片以冗余校验方式存放,写更新所生成的新版本数据片以镜像方式存放。当对处于状态2的文件进行写更新时文件的存储状态从状态2转换到状态3,包括以下步骤:
[0060] 保持被写更新的处于状态2的原版本数据片不变,生成新版本数据片;
[0061] 将新版本数据片写入相应的存储节点,同时做镜像备份到另一存储节点;
[0062] 修改状态2为状态3。
[0063] 以上步骤也可以统称为对状态2的写操作。如图4所示,对处于状态2的文件进行写更新,以写更新数据片D10为例,保持原来的旧片段D10不变,并生成新片段D11,同时将新片段D11的镜像D11′保存至另一个存储节点,实现镜像备份,以保证数据的可靠性,此时文件的存储状态称为状态3。
[0064] 在本发明的实施例中对文件进行写更新时需要根据数据片的不同存放方式执行不同的操作,包括以下步骤:
[0065] 对以镜像方式存放的数据片,同时修改存放在两个存储节点的数据片及其镜像;
[0066] 对以冗余校验方式存放的数据片,保持以冗余校验方式存放的原版本数据片不变,生成新版本数据片;将新版本数据片写入相应的存储节点,同时做镜像备份到另一存储节点。
[0067] 以上步骤可以统称为写更新操作。图5为在本发明实施例中的状态1下写更新数据片的示意图,状态1时,数据片以镜像方式存放,对其进行写更新时,需要同时修改以镜像方式保存在两个存储节点的数据片及其镜像,修改可以采用同步模式或异步模式。以写更新数据片D1为例,更新D1为D12,同时将另一个存储节点的镜像D1′更新为D12′。此时数据存储状态仍为状态1,以上步骤也可以称为对状态1的写更新操作。
[0068] 对处于状态3的文件进行写更新时,要区分数据片的存储方式,原版本数据片以冗余校验方式存放,而写更新所生成的新版本数据片以镜像方式存放。图6为根据本发明实施例的状态3下新版本数据片被写更新后的示意图,其中新版本数据片以镜像方式存放,对图4所示的处于状态3的文件进行写更新,以写更新D11为例,保持原来的以冗余校验方式存放的原版本数据片D10不变,更新D11为D12,同时将D11在另一个存储节点的镜像D11′更新为D12′,实现镜像备份,此时存储状态也为状态3。
[0069] 图7为根据本发明实施例的状态3下原版本数据片被写更新的示意图;其中原版本数据片以冗余校验方式存放,对如图6所示处于状态3的文件写更新,以写更新D30为例,保持原版本数据片D30不变,并生成新版本数据片D31,同时将新版本数据片D31的镜像D31′保存至另一个存储节点,实现镜像备份,以保证数据的可靠性。此时存储状态也为状态3。
[0070] 读写操作
[0071] 在本发明实施例中,应用服务器作为客户端进行写读操作。
[0072] 客户端进行读操作,不会影响文件系统一致性状态,不会影响快照的创建和维护,因此按正常的流程即可,如步骤(1),(2),(3)所示:
[0073] (1)客户端向服务端请求文件布局关系信息layout(即文件逻辑地址到物理地址映射);
[0074] (2)服务端查询相关元数据,返回相对应的layout;
[0075] (3)客户端通过返回的layout读存储设备上的数据。
[0076] 应用服务器作为客户端进行写操作,如步骤(4),(5),(6)所示:
[0077] (4)客户端向服务端请求layout信息;
[0078] (5)服务端查询相关元数据,返回对应的读写layout,并且预留相应的资源。客户端根据返回的layout的进行设备读写,根据只读layout读出存储设备的内容,修改的内容写入可写layout对应存储设备中;
[0079] (6)客户端向layout提交相应的元数据信息,并且把预留资源信息加入到元数据组织中。
[0080] 对于读请求,客户端通过元数据服务器得到资源映射地址后,从存储节点直接请求数据,性能不受冗余存储影响;对于写请求客户端不必考虑冗余更新问题,只需使用远程镜像方式将新写的数据块镜像到冗余存储管理设备上,写性能相比冗余校验方式得到大幅度提高。在一些实施例中客户端还可采用延迟写和写聚合以及缓存等技术进一步优化写操作的性能。
[0081] 在本发明的实施例中文件的存储状态可以通过以下步骤从状态3转换到状态1:
[0082] 依次遍历处于状态3的文件的镜像数据片,遇到空洞,将原版本数据片填充写入新版本数据片和镜像数据片;
[0083] 将原版本数据片替换为新版本数据片;
[0084] 释放新版本数据片和冗余校验数据片的存储空间;
[0085] 修改状态3为1。
[0086] 以上步骤也可以称为升级操作。在本实施例中由应用服务器作为客户端进行如下操作:依次遍历处于状态3的文件的镜像数据片block′,遇到空洞,则说明该数据片尚未写入有效数据,说明原版本数据片block0没有被修改,自然也没有生成新版本数据片blocki;此时将原版本数据片填充写入新版本数据片blocki和镜像数据片block′;
[0087] 将原版本数据片block0替换为新版本数据片blocki,因为此时需要将文件所处存储状态3转化为状态1,只保留数据片及其镜像;
[0088] 将新版数据片blocki、冗余校验数据片P的相关信息进行删除、清空和回收;同时修改状态3为1;
[0089] 依次对处于状态3的文件执行升级操作就可以完成从状态3到状态1的转换。
[0090] 在本实施例中,上述降级操作,对状态2的写操作,写更新操作以及升级操作都是由文件系统中作为客户端的应用服务器执行的。在其他一些的实施例中,上述操作也可以由存储管理服务器或者文件系统中的服务器执行。
[0091] 在本发明的一些实施例中为集群文件系统提供了一种文件存储状态动态转换的方法,其中所述文件系统中的文件包括以下存储状态:
[0092] 状态1,数据片以镜像方式存放;
[0093] 状态2,数据片以冗余校验方式存放;
[0094] 状态3,原版本数据片以冗余校验方式存放,写更新所生成的新版本数据片以镜像方式存放;
[0095] 所述的动态转换方法包括以下步骤:
[0096] 状态1经过写更新操作进入状态1;
[0097] 状态1经过降级操作进入状态2;
[0098] 状态2经过对状态2的写操作进入状态3;
[0099] 状态3经过写更新操作进入状态3;
[0100] 状态3经过升级操作进入状态1。
[0101] 当状态为1时,降级操作将原本以镜像方式保存的数据片改为以冗余校验方式保存,转换到状态2。此操作通常发生在系统存储空间资源紧张时,可压缩数据,释放存储空间。
[0102] 状态2经过对状态2的写操作,转换到状态3,在状态3保持原有以冗余方式存储的数据片不变,需要进行写更新操作时直接生成新版本数据片并对其做镜像保存,这样所有的写更新操作都不必进行冗余计算和冗余更新,从而提高了写性能。
[0103] 当文件的存储状态为3时,如果全部或绝大多数数据片已经执行了写更新操作,则全部或绝大多数数据片Dij都已经在另一存储节点保存镜像Dij′,事实上已经在以镜像方式存放数据。此时可执行升级操作。操作完成后,存储状态恢复至状态1。
[0104] 当某存储节点(SN)由于节点故障(如电源故障、操作系统出错等)或网络故障(如网络连接中断等)等原因停止服务,造成数据丢失后,需要将故障设备修复或替换。完成修复或替换后,客户端需要采用恢复操作恢复丢失数据,保证数据的可靠性。在本发明的实施例中在数据片出错时采用以下步骤:
[0105] 状态1时,用对应节点上的数据片镜像恢复出错数据片;
[0106] 状态2时,进行冗余计算恢复出错的数据片;
[0107] 状态3时,如果出错的是原版本数据片,则进行冗余计算恢复出错数据片;如果出错的是新版本数据片或者其镜像数据片,则用对应节点上的数据片镜像恢复出错数据片。
[0108] 上述步骤也可称为恢复操作。下面参考附图8,9,10,11,12,13对恢复操作进行具体说明。
[0109] 在本发明实施例中,文件处于状态1时,对小文件而言,可能只有1个数据分片;对大文件而言,可能有若干数据片分布在不同节点,每个数据片都在另一个节点存有镜像备份。当文件处于状态1时执行恢复操作只需要将故障节点的出错数据片用对应节点上的镜像恢复即可。
[0110] 在本发明实施例中,状态2下出错数据片分类及恢复操作如下:
[0111] 如图8所示,状态2下,冗余校验片P出错时的恢复操作,需要读取文件的他数据片D1、D2和D3,作冗余计算,生成新冗余校验片P。如图9所示,状态2下,数据片D3出错时的恢复操作,需要读取冗余组内其他数据片D1、D2以及冗余校验片P,作冗余计算,生成新数据片D3。
[0112] 在本发明实施例中,状态3下出错数据分类及恢复操作如下:
[0113] 图10所示,状态3下,冗余校验片P0出错时的恢复操作,需要读取以冗余校验方式存放的其他原版本数据片D10、D20和D30,作冗余计算,恢复冗余校验片P0。图11所示,状态3下,原版本数据片D30出错时的恢复操作,需要读取其他原版本数据片D10、D20以及冗余校验片P,作冗余计算,恢复数据片D30。图12所示,状态3下,镜像数据片D11′出错时的恢复操作,通过利用未出错节点的数据片D11,恢复出错节点的镜像数据片D11′。图13所示,状态3下,原版本数据片D10和新版本数据片D11出错时的恢复操作,分为两步:首先需要读取在未出错节点上的文件以冗余校验方式存放的其他原版本数据片,作冗余计算,恢复原版本数据片D10;然后通过在镜像保存的数据片D11′,恢复出错节点上的数据片D11。
[0114] 可见当存储节点出现故障时采用镜像和冗余校验结合的方式也可以减少冗余计算量和冗余更新,改善数据恢复的效率。
[0115] 在本发明实施例中上述恢复操作是由在文件系统中作为客户端的应用服务器执行的。在其他一些的实施例中,上述操作也可以由存储管理服务器或者文件系统中的服务器执行。
[0116] 在本发明的一些实施例中,所述文件系统中的文件的存储状态可以是:状态1,数据片以RAID1方式存放;状态2,数据片以RAID5模式冗余存放;状态3,原版本数据片以RAID5模式冗余方式存放,写更新所生成的新版本数据片以RAID1方式存放。
[0117] 通过上述本发明的具体实施例,为基于网络存储的集群文件系统,提供高效的高可靠和高可用保障机制的方法,利用镜像和冗余校验结合的数据冗余机制保证文件系统的数据可靠性和可用性。根据本发明实施例提供的文件冗余存储方法使数据的存储状态进行动态转化:对于客户端的写操作,数据以镜像方式进行写更新,对于客户端的写请求不必考虑如何进行冗余校验方式中的冗余计算及冗余更新问题,新写的数据块镜像到冗余存储管理设备上,避免了如RAID5等冗余校验方式中小写更新导致的写性能低下问题,写性能得到大幅度提高。同时,非写活跃性质的数据在系统存储资源紧张时,可以转化为冗余校验方式存储,在保证数据可靠性和可用性的前提下,减少了冗余空间占用,提高空间利用率。
[0118] 可见根据本发明实施例的文件冗余存储方法具备良好的空间利用率,并且能够有效减少冗余计算开销,提高系统性能。同时当存储节点出现故障时可以用镜像和冗余校验结合的方式来减少计算量,改善数据恢复的效率,保障了数据的可靠性和可用性。
[0119] 虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所作出的各种改变以及变化。