本发明涉及分布式文件系统的存储应用领域,尤其涉及一种存储管理方法及分布式文件系统。
背景技术:
大规模应用的分布式文件系统,使用纠删码作为底层文件存储策略,可以显著的减少文件占用物理空间,并保持和多副本一样的可靠性,而企业应用中,系统规模变大后且长时间运行后,磁盘损坏或者故障已经不是小概率事件,而是日常维护中经常面对的常态。
例如,企业应用一般使用纠删码时,配置文件存储策略原始块N:校验块M为6:2,可以同时损坏2个分片副本,系统整体可靠性同3副本模式一样。结合企业应用现状以及不可避免的存储集群本身软硬件问题,一个存储系统中损坏3块磁盘,可能会导致部分数据损坏。一个存储集群包含数百甚至数千块磁盘,经过长时间运行后,每个磁盘中存储几千万数目的副本。若在某一时间段内,系统同时损坏超过2块磁盘,会因为部分文件的数据块无法修复,导致文件内容不可读。
因此,如何提供一种可缓解现有分布式文件系统存在的因同时损坏超过2块磁盘会导致文件内容不可读问题的存储管理方法,是本领域技术人员亟待解决的技术问题。
技术实现要素:
本发明提供了一种存储管理方法及分布式文件系统,以缓解现有分布式文件系统存在的因同时损坏超过2块磁盘会导致文件内容不可读问题。
本发明提供了一种用于分布式文件系统的存储管理方法,存储管理方法包括磁盘分组步骤及数据存储步骤,其中,磁盘分组步骤包括:将分布式文件系统的所有磁盘分为多个磁盘分组;获取各磁盘分组的可服务性,根据各磁盘分组的可服务性将各磁盘分组分为健康组集合、亚健康组集合、坏组集合;在需要存储数据时,数据存储步骤包括:从健康组集合中选择磁盘分组,从所选择的磁盘分组选择磁盘存储数据。
进一步的,将分布式文件系统的所有磁盘分为多个磁盘分组包括:根据各磁盘在其所属存储服务器内的槽位信息将所有磁盘分为多个磁盘分组。
进一步的,根据各磁盘在其所属存储服务器内的槽位信息将所有磁盘分为多个磁盘分组包括:将所有存储服务器内具备一个或多个相同槽位信息的磁盘分为一个磁盘分组。
进一步的,获取各磁盘分组的可服务性包括:获取各磁盘分组的可用卷数目,根据存储策略及各磁盘分组的可用卷数目确定各磁盘分组的可服务性。
进一步的,数据存储步骤还包括:当无法从健康组集合中选择磁盘分组时,从亚健康组集合中选择磁盘分组,若无法从亚健康组集合中选择磁盘分组,则数据存储失败。
进一步的,从健康组集合或亚健康组集合中选择磁盘分组包括:根据健康组集合或亚健康组集合中各磁盘分组的可用空间的比例选择磁盘分组。
本发明提供了一种分布式文件系统,其包括,多个磁盘,以及位置寄存器,其中,位置寄存器用于将分布式文件系统的所有磁盘分为多个磁盘分组;获取 各磁盘分组的可服务性,根据各磁盘分组的可服务性将各磁盘分组分为健康组集合、亚健康组集合、坏组集合;在需要存储数据时,位置寄存器还用于从健康组集合中选择磁盘分组,从所选择的磁盘分组选择磁盘存储数据。
进一步的,位置寄存器用于根据各磁盘在其所属存储服务器内的槽位信息将所有磁盘分为多个磁盘分组。
进一步的,位置寄存器具体用于将所有存储服务器内具备一个或多个相同槽位信息的磁盘分为一个磁盘分组。
进一步的,位置寄存器用于获取各磁盘分组的可用卷数目,根据存储策略及各磁盘分组的可用卷数目确定各磁盘分组的可服务性。
进一步的,位置寄存器还用于当无法从健康组集合中选择磁盘分组时,从亚健康组集合中选择磁盘分组,若无法从亚健康组集合中选择磁盘分组,则数据存储失败。
进一步的,位置寄存器具体用于根据健康组集合或亚健康组集合中各磁盘分组的可用空间的比例选择磁盘分组。
本发明的有益效果:
本发明提供的存储管理方法,首先将所有磁盘分组管理,并且进一步区分磁盘分组的可服务性状态,在存储数据时,优先从健康组中分配副本位置,多块磁盘(大于M)出现故障时,只要这些磁盘不属于同一个磁盘分组,就不会造成文件内容丢失,可以提高系统整体可靠性。
附图说明
图1为本发明第一实施例提供的存储管理方法的流程图;
图2为本发明第二实施例提供的分布式文件系统的示意图;
图3为本发明第三实施例提供的存储管理方法中磁盘分组步骤的流程图;
图4为本发明第三实施例提供的存储管理方法中数据存储步骤的流程图。
具体实施方式
现通过具体实施方式结合附图的方式对本发明做出进一步的诠释说明。
第一实施例:
图1为本发明第一实施例提供的存储管理方法的流程图,由图1可知,在本实施例中,本发明提供的存储管理方法包括以下步骤:
S101:将分布式文件系统的所有磁盘分为多个磁盘分组;
S102:获取各磁盘分组的可服务性,根据各磁盘分组的可服务性将各磁盘分组分为健康组集合、亚健康组集合、坏组集合;
S103:在需要存储数据时,从健康组集合中选择磁盘分组,从所选择的磁盘分组选择磁盘存储数据。
在一些实施例中,上述实施例中的将分布式文件系统的所有磁盘分为多个磁盘分组包括:根据各磁盘在其所属存储服务器内的槽位信息将所有磁盘分为多个磁盘分组。
在一些实施例中,上述实施例中的根据各磁盘在其所属存储服务器内的槽位信息将所有磁盘分为多个磁盘分组包括:将所有存储服务器内具备一个或多个相同槽位信息的磁盘分为一个磁盘分组。
在一些实施例中,上述实施例中的获取各磁盘分组的可服务性包括:获取 各磁盘分组的可用卷数目,根据存储策略及各磁盘分组的可用卷数目确定各磁盘分组的可服务性。
在一些实施例中,上述实施例还包括:当无法从健康组集合中选择磁盘分组时,从亚健康组集合中选择磁盘分组,若无法从亚健康组集合中选择磁盘分组,则数据存储失败。
在一些实施例中,上述实施例中的从健康组集合或亚健康组集合中选择磁盘分组包括:根据健康组集合或亚健康组集合中各磁盘分组的可用空间的比例选择磁盘分组。
第二实施例:
图2为本发明第二实施例提供的分布式文件系统的示意图,由图2可知,在本实施例中,本发明提供的分布式文件系统包括多个磁盘22,这些磁盘属于不同的存储服务器,以及一个或多个位置寄存器21(图2仅示例性的给出了一个位置寄存器),具体的,
位置寄存器21用于将分布式文件系统的所有磁盘22分为多个磁盘分组;获取各磁盘分组的可服务性,根据各磁盘分组的可服务性将各磁盘分组分为健康组集合、亚健康组集合、坏组集合;在需要存储数据时,还用于从健康组集合中选择磁盘分组,从所选择的磁盘分组选择磁盘存储数据。
在一些实施例中,位置寄存器21用于根据各磁盘在其所属存储服务器内的槽位信息将所有磁盘分为多个磁盘分组。
在一些实施例中,位置寄存器21具体用于将所有存储服务器内具备一个或多个相同槽位信息的磁盘分为一个磁盘分组。
在一些实施例中,位置寄存器21用于获取各磁盘分组的可用卷数目,根据 存储策略及各磁盘分组的可用卷数目确定各磁盘分组的可服务性。
在一些实施例中,位置寄存器21还用于当无法从健康组集合中选择磁盘分组时,从亚健康组集合中选择磁盘分组,若无法从亚健康组集合中选择磁盘分组,则数据存储失败。
在一些实施例中,位置寄存器21具体用于根据健康组集合或亚健康组集合中各磁盘分组的可用空间的比例选择磁盘分组。
现结合具体应用实例对本发明做进一步的诠释说明。
第三实施例:
图3为本发明第三实施例提供的存储管理方法中磁盘分组步骤的流程图,由图3可知,在本实施例中,本发明提供的存储管理方法中磁盘分组步骤包括以下步骤:
S301:在物理层次对所有磁盘进行分组,将所有磁盘分为多个磁盘分组;
在分布式文件系统中,文件存储策略使用纠删码,以冗余比N:M=6:2为例,假设分布式文件系统由n台存储服务器S1,S2,…,Sn(n≥8),且每台存储服务器有d块磁盘,如常见高密度存储服务器有24块或者更多磁盘。
每台存储服务器的磁盘按照物理槽位编号s0,s1,……,sd-1,这些磁盘按照槽位被划分成多个磁盘分组,例如所有存储服务器中每个相同槽位上的磁盘组成一个磁盘分组,磁盘分组数g等于槽位数d;或者多个相同槽位的磁盘组成一个磁盘分组,磁盘分组数g小于槽位数d。
每个磁盘分组包含的磁盘数和容量可以不相同,为了系统读写性能,需要保证磁盘读写接口是均衡的。
S302:分布式文件系统上电,位置寄存器FLR初始化数据;
当在系统上电时,FLR初始化磁盘分组数据区,所有磁盘按照所属分组,分别加入到磁盘分组数据区中;当磁盘或节点故障,更新相应的磁盘分组的信息。磁盘分组的信息包含所有磁盘信息、分组总容量、分组可用容量、分组读写IO、分组可服务性状态等近似实时统计信息,这些数据被上报到文件位置寄存器FLR上,供其分配文件的CHUNK副本位置时决策。
S303:FLR计算各磁盘分组的卷权重之和;
FLR遍历每一个磁盘分组,对一个磁盘分组的所有磁盘,统计可用卷数目,并计算卷权重之和,计入磁盘分组中。
S304:FLR计算各磁盘分组的可服务性;
FLR遍历所有磁盘分组,按照一定规则,如可用卷数目、节点故障、网络故障、磁盘异常等条件,设置磁盘分组的可服务性,将其分别加入到健康组集合、亚健康组集合、坏组集合;其中分组可服务性状态指,磁盘分组是否能够被FLR使用,用来分配CHUNK副本位置,可包含3种状态:健康组、亚健康组、坏组。磁盘分组状态为健康组是指,可用卷数目大于等于N+M,并且满足存储单元节点失效保持可靠性、单元传输媒体面状态正常等条件;磁盘分组状态为亚健康是指:由于磁盘突然掉盘或者存储服务器掉电等因素导致,导致某个分组的可用卷减少。当某个分组可用卷数目/分组内配置卷数目小于阈值且大于等于N时,认为此分组可服务性降低,将磁盘分组状态设置为亚健康组;当某个分组可用卷小于N时,将磁盘分组状态设置为坏组。
S305:FLR分别遍历上述三个集合中的磁盘分组,将磁盘分组根据其可用卷数目进行映射。
图4为本发明第三实施例提供的存储管理方法中数据存储步骤的流程图,由图4可知,在本实施例中,本发明提供的存储管理方法中数据存储步骤包括以下步骤:
S401:客户端写文件时,分配数据块副本位置消息发送到FLR;
S402:FLR接收到消息后,选择健康组集合为当前集合;
S403:FLR获取随机数r,将r与健康组集合权重进行mod计算,得到关键字key;
S404:FLR根据key通过二分查找在当前集合中,查找目标磁盘分组;若查找到目标磁盘分组,则执行步骤S405,否则执行步骤S407;
S405:FLR在目标磁盘分组中,按照磁盘IO均衡、节点失效、多磁盘故障等情形下保持可靠性条件,选择副本位置;
若副本个数大于或等于N+M(由存储策略的参数确定,一般为6+2),则执行步骤S406,否则执行步骤S407;
S406:FLR确定副本位置,将数据写入对应磁盘;
S407:FLR选择亚健康组集合为当前集合;
S408:FLR获取随机数r,将r与亚健康组集合权重进行mod计算,得到关键字key;
S409:FLR根据key通过二分查找在当前集合中,查找目标磁盘分组;若查找到目标磁盘分组,则执行步骤S410,否则执行步骤S411;
S410:FLR在目标磁盘分组中,按照磁盘IO均衡、节点失效、多磁盘故障等情形下保持可靠性条件,选择副本位置;
若副本个数大于或等于N+M(由存储策略的参数确定,一般为6+2),则执行步骤S406,否则执行步骤S411;
S411:FLR分配磁盘失败,写文件失败,失败退出。
综上可知,通过本发明的实施,至少存在以下有益效果:
首先将所有磁盘分组管理,并且进一步区分磁盘分组的可服务性状态,在存储数据时,优先从健康组中分配副本位置,多块磁盘(大于M)出现故障时,只要这些磁盘不属于同一个磁盘分组,就不会造成文件内容丢失,可以提高系统整体可靠性。
以上仅是本发明的具体实施方式而已,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施方式所做的任意简单修改、等同变化、结合或修饰,均仍属于本发明技术方案的保护范围。