一种分布式文件系统的文件读写方法及装置的制造方法_2

文档序号:9249235阅读:来源:国知局
据块存储在数据节点信息指示的存储位置,其中,将每个数据块分为多个数据片,每个数据块中的数据片分别对应一个数据服务器进行存储;或者,
[0056]根据文件的期望大小信息确定文件的期望大小小于设定阈值时,将文件的源文件和源文件的多个副本文件存储在数据节点信息指示的存储位置,其中,源文件和源文件的多个副本文件分别对应一个数据服务器进行存储。
[0057]通过这种可能的实施方式,增强了数据存储的自适应性,分别针对文件的期望大小大于等于设定阈值的文件和文件的期望大小小于设定阈值的文件,采用不同的方式存储,有效提高了文件读写的效率。
[0058]较佳的,读写单元,还用于:
[0059]根据文件的期望大小信息确定文件的期望大小大于等于设定阈值时,向数据服务器请求读写数据片,若数据片被损坏,接收数据服务器返回的数据片在其他位置的恢复信息,根据恢复信息访问在其他位置的数据片;或者,
[0060]根据文件的期望大小信息确定文件的期望大小小于设定阈值时,向数据服务器请求读写源文件或副本文件,若源文件或副本文件被损坏,接收数据服务器返回的源文件或副本文件在其他位置的恢复信息,根据恢复信息访问在其他位置的源文件或副本文件。
[0061]通过这种可能的实施方式,利用受损数据及时恢复数据节点信息来解决数据损坏带来的文件数据分布漂移的问题。
[0062]较佳的,读写单元,还用于:
[0063]在接收到多个通过字符串文件名发起的元数据信息修改请求时,将各个字符串文件名按照预设的编码规则反编码为对应的文件ID,并令元数据服务器根据文件ID中携带的文件族信息判断采用何种方式处理各个元数据信息修改请求,其中,元数据服务器采用并发方式处理文件族信息不同的文件的元数据信息修改请求,以及采用顺序方式处理文件族信息相同的文件的元数据信息修改请求。
[0064]通过这种可能的实施方式,将一把全局文件锁分割为多个文件族锁,增加元数据服务器并发处理修改文件元数据信息的能力,降低了全局文件锁的并发度,提高了海量文件并发访问的能力。
【附图说明】
[0065]图1为现有技术中的分布式文件读写的流程图;
[0066]图2为本发明实施例中的分布式文件系统架构图;
[0067]图3为本发明实施例中的分布式文件系统的文件读写方法的流程图;
[0068]图4为本发明实施例中的文件ID组成示意图;
[0069]图5为本发明实施例中的文件存储方式示意图;
[0070]图6为本发明实施例中的读取损坏文件的流程图;
[0071]图7为本发明实施例中的分布式文件系统的文件读写方法的详细流程图;
[0072]图8为本发明实施例中的分布式文件系统的文件读写装置的结构图。
【具体实施方式】
[0073]为了给出提高元数据服务器的处理效率的实现方案,本发明实施例提供了一种分布式文件系统的文件读写方法及装置,有效降低了元数据服务器的处理负荷,提高了元数据服务器的并发处理能力,提高了文件访问的安全性、提高了大文件访问的效率。以下结合说明书附图对本发明的优选实施例进行说明。
[0074]参阅图2所示,本发明采用的分布式文件系统架构中,元数据服务器通过高可用性群集(High Available,HA)进行主备切换,提高系统可靠性,其中,HA是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的任务不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务,从而实现业务的不中断或短暂中断。该分布式文件系统对用户以客户端呈现,文件存储在与客户端相连的服务器端。
[0075]参阅图3所示,本发明中的分布式文件系统的文件ID的生成方法的步骤如下:
[0076]步骤300:客户端向元数据服务器发起文件创建请求,并接收元数据服务器根据文件创建请求返回的文件ID,文件ID中至少携带有数据节点信息。
[0077]具体的,用户向客户端发起文件创建请求时,客户端将文件创建请求发送至元数据服务器,请求创建文件。元数据服务器将文件的相关信息编码成该文件的文件ID返回给客户端,该文件ID中至少携带有数据节点信息,该数据节点信息指示文件被存储在哪个数据服务器中。
[0078]步骤310:客户端根据预设的编码规则将文件ID转换为字符串文件名。
[0079]具体的,客户端接收到文件ID后,根据预设的编码规则再将文件ID转换为用户通常用来读写文件的字符串文件名。若用户之后要访问该文件,可以通过该字符串文件名进行访问。
[0080]步骤320:客户端接收到用户通过字符串文件名发起的文件读写请求后,将字符串文件名按照预设的编码规则反编码为文件ID。
[0081]具体的,创建文件完毕后,若客户端接收到用户通过该字符串文件名发起的文件读写请求,则客户端将该字符串文件名按照预设的编码规则反编码为文件ID。
[0082]步骤330:客户端根据文件ID读写数据节点信息指示的数据服务器中的文件。
[0083]具体的,客户端通过识别反编码后的文件ID便可解析出该文件的数据节点信息,进而得知该文件被存储于哪个数据服务器中,客户端便可以通过该数据节点信息在存放文件的数据服务器中读写该文件。
[0084]通过上述步骤,用户在读写文件时,不需要再向元数据服务器获取文件的数据节点信息,而是直接通过文件ID得知文件的数据节点信息,省去了向元数据服务器请求数据节点信息的步骤,进而降低了元数据服务器的访问压力。
[0085]参阅图4所示,上述至少携带数据节点信息的文件ID,主要包括如下几个区域:第一区域、第二区域、第三区域、第四区域、第五区域和第六区域,进一步的,还可以包括第七区域。
[0086]具体的,第一区域,用于存储文件系统信息,文件系统信息用于指示文件存储的文件系统。
[0087]第一区域占用4个字节,标识文件存储的文件系统,用户将文件拷贝至文件系统A时,客户端将反编码字符串文件名得到的文件ID中的4字节的文件系统信息与文件系统A设定的4字节文件系统标识进行比对,若第一区域数据相同,则客户端可以进一步读取该文件,如此可以保证客户端只能读写文件ID的文件系统信息与文件系统A的文件系统标识相同的文件,即客户端只能读写归属于文件系统A的文件,提高了客户端访问文件系统A的安全性。
[0088]第二区域,用于存储文件大小类型信息,文件大小类型信息用于指示文件的期望大小是否大于设定阈值。
[0089]第二区域占用I个字节,文件的期望大小大于等于设定阈值的文件,第二区域的值用I表示,小于设定阈值的文件,第二区域的值用O表示。通过该I个字节区分文件的期望大小,对于文件的期望大小大于等于设定阈值的文件采用将该文件分割成多个数据块,将多个数据块在各个数据服务器分割为数据片的形式进行存储;对于文件的期望大小小于设定阈值的文件以副本的方式进行存储。具体如下:
[0090]根据文件的期望大小信息确定文件的期望大小大于等于设定阈值时,将文件分为多个数据块,并将数据块存储在数据节点信息指示的存储位置,其中,将每个数据块分为多个数据片,每个数据块中的数据片分别对应一个数据服务器进行存储;或者,
[0091]根据文件的期望大小信息确定文件的期望大小小于设定阈值时,将文件的源文件和源文件的多个副本文件存储在数据节点信息指示的存储位置,其中,源文件和源文件的多个副本文件分别对应一个数据服务器进行存储。
[0092]通过I字节的文件大小类型信息使得文件系统可以分别处理文件的期望大小大于等于设定阈值的文件和文件的期望大小小于设定阈值的文件,解决了其他文件系统只能针对文件的期望大小小于设定阈值的文件进行存储的应用场景或者只能针对文件的期望大小大于等于设定阈值的文件进行存储的应用场景的局限性。
[0093]参阅图5所示,若文件的期望大小大于等于设定阈值,则按照设定大小将文件分为两个数据块,分别为数据块I和数据块2,将数据块I分成多个数据片,将数据块I的第一个数据片命名为1.1存储在数据服务器I中,将数据块I的第二个数据片命名为1.2存储在数据服务器2中,以此类推,对于数据块2也做相同的操作进行存储。
[0094]若文件的期望大小小于设定阈值,则将文件的源文件存储在其中一个数据服务器,以存储在数据服务器I为例,将文件的第一个副本文件命名为
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1