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

文档序号:9249235阅读:来源:国知局
副本1,存储在数据服务器2,将文件的第二个副本文件命名为副本2,存储在数据服务器3,以此类推。
[0095]若数据服务器中的文件损坏,根据文件ID读写数据节点信息指示的数据服务器中的文件,还包括:根据文件的期望大小信息确定文件的期望大小大于等于设定阈值时,向数据服务器请求读写数据片,若数据片被损坏,接收数据服务器返回的数据片在其他位置的恢复信息,根据恢复信息访问在其他位置的数据片;或者,
[0096]根据文件的期望大小信息确定文件的期望大小小于设定阈值时,向数据服务器请求读写源文件或副本文件,若源文件或副本文件被损坏,接收数据服务器返回的源文件或副本文件在其他位置的恢复信息,根据恢复信息访问在其他位置的源文件或副本文件。
[0097]参阅图6所示,文件一旦创建,和文件存储有关的文件相关信息就全部确认下来,特别是数据节点信息,那么在数据节点损坏或者数据节点内磁盘发生漂移等情况导致数据片或副本文件存储位置发生改变时,再按照原有的文件ID中提供的数据节点信息就无法访问到真实数据。本发明实施例中的分布式文件系统中,采用在数据节点实时记录数据片或副本文件存储位置信息,若一个数据服务器上的数据片或副本文件的位置发生变化时,则记录位置变化后的信息,当客户端向数据服务器请求读写文件的时候,通知客户端数据片或副本文件的存储位置已经发生变化,客户端根据数据服务器返回的恢复信息访问存储数据片或副本文件的数据服务器。以文件的期望大小大于等于设定阈值的文件为例,具体步骤如下:
[0098]步骤600:客户端请求访问数据片1.1 ;
[0099]步骤610:客户端接收数据服务器返回的数据片1.1已损坏的消息,以及数据片
1.1的恢复信息;
[0100]步骤620:客户端根据数据片1.1的恢复信息访问恢复完成的数据片1.1。
[0101]第三区域,用于存储集群信息,占用I个字节,集群信息用于指示文件归属的集群,主要用于区分不同集群中内容相同的文件。
[0102]第四区域,用于存储文件族信息,文件族信息用于指示文件归属的文件族,其中,每一个文件族内的文件共享一个文件锁。
[0103]第四区域占用I个字节,文件锁主要用来保证能够并发修改多个文件的元数据信息,方便元数据服务器管理。若元数据服务器只有I个全局文件锁,则只能串行修改每个文件的元数据信息。但通过文件族信息,可以将分布式文件系统中的一个全局文件锁分割成多个文件族锁,大大提高了分布式文件系统中多文件并发处理的性能,多个文件族锁保证了元数据服务器可以同时修改属于不同文件族中的文件的元数据信息,I个字节可以表示256个文件族,每个文件族都有一个文件族锁,即元数据服务器最多可以同时修改256个文件的元数据信息,若第四区域设置为2字节,则可以表示512个文件族,以此类推。
[0104]其中,通过文件锁读写文件的步骤如下:根据文件ID读写数据节点信息指示的数据服务器中的文件,还包括:若接收到多个通过字符串文件名发起的元数据信息修改请求,则将各个字符串文件名按照预设的编码规则反编码为对应的文件ID,并令元数据服务器根据文件ID中携带的文件族信息判断采用何种方式处理各个元数据信息修改请求,其中,元数据服务器采用并发方式处理文件族信息不同的文件的元数据信息修改请求,以及采用顺序方式处理文件族信息相同的文件的元数据信息修改请求。
[0105]第五区域,用于存储文件族内ID,占用8个字节,文件族内ID用于指示文件族内唯—标识。
[0106]第六区域,用于存储数据节点信息,占用4个字节,数据节点信息用于指示文件存储的数据服务器信息。
[0107]第六区域通过提供文件存储的数据节点信息,可以在请求读写文件时,降低元数据服务器的压力。客户端通过预设的反编码规则直接解析出文件存储的数据节点信息,得知文件存储的数据服务器信息,进而直接进行读写,不需要再次向元数据服务器请求文件的数据节点信息,减轻了元数据服务器的访问压力。
[0108]第七区域,是保留字节,占用I个字节,保留字节暂时不存储数据,用于后续拓展文件ID时,实现其他功能。
[0109]例如,参阅图7所示,以具体实施例介绍本发明中的分布式文件系统读写文件,降低元数据服务器的访问压力的方案,具体流程如下;
[0110]步骤700:用户向客户端发起创建文件请求;
[0111]步骤710:客户端向元数据服务器请求创建文件;
[0112]步骤720:元数据服务器根据客户端的请求,将文件的相关信息编码成20个字节的文件ID返回给客户端;
[0113]步骤730:客户端将文件ID编码成字符串文件名返回给用户;
[0114]步骤740:用户通过字符串文件名进行文件读写;
[0115]步骤750:客户端根据用户传入的字符串文件名反编码成20字节的文件ID,根据文件ID携带的数据节点信息读写数据服务器。
[0116]下面结合附图,用具体实施例对本发明提供的方法及装置和相应系统进行详细描述。
[0117]基于同一发明构思,根据本发明上述实施例提供的分布式文件系统的文件读写方法,相应地,本发明另一实施例还提供了一种分布式文件系统的文件读写装置,该装置的结构示意图如图8所示,具体包括:
[0118]接收单元800,用于向元数据服务器发起文件创建请求,并接收元数据服务器根据文件创建请求返回的文件ID,文件ID中至少携带有数据节点信息;
[0119]编码单元810,用于根据预设的编码规则将文件ID转换为字符串文件名;
[0120]反编码单元820,用于接收到用户通过字符串文件名发起的文件读写请求后,将字符串文件名按照预设的编码规则反编码为文件ID ;
[0121]读写单元830,用于根据文件ID读写数据节点信息指示的数据服务器中的文件。
[0122]其中,文件ID,包括:
[0123]第一区域、第二区域、第三区域、第四区域、第五区域和第六区域,其中,
[0124]第一区域,用于存储文件系统信息,文件系统信息用于指示文件存储的文件系统;
[0125]第二区域,用于存储文件大小类型信息,文件大小类型信息用于指示文件的期望大小是否大于等于设定阈值;
[0126]第三区域,用于存储集群信息,集群信息用于指示文件归属的集群;
[0127]第四区域,用于存储文件族信息,文件族信息用于指示文件归属的文件族,其中,每一个文件族内的文件共享一个文件锁;
[0128]第五区域,用于存储文件族内ID,文件族内ID用于指示文件族内唯一标识;
[0129]第六区域,用于存储数据节点信息,数据节点信息用于指示文件存储的数据服务器信息。
[0130]读写单元830,具体用于:根据文件的期望大小信息确定文件的期望大小大于等于设定阈值时,将文件分为多个数据块,并将数据块存储在数据节点信息指示的存储位置,其中,将每个数据块分为多个数据片,每个数据块中的数据片分别对应一个数据服务器进行存储;或者,
[0131]根据文件的期望大小信息确定文件的期望大小小于设定阈值时,将文件的源文件和源文件的多个副本文件存储在数据节点信息指示的存储位置,其中,源文件和源文件的多个副本文件分别对应一个数据服务器进行存储。
[0132]读写单元830,还用于:
[0133]根据文件的期望大小信息确定文件的期望大小大于等于设定阈值时,向数据服务器请求读写数据片,若数据片被损坏,接收数据服务器返回的数据片在其他位置的恢复信息,根据恢复信息访问在其他位置的数据片;或者,
[0134]根据文件的期望大小信息确定文件的期望大小小于设定阈值时,向数据服务器请求读写源文件或副本文件,若源文件或副本文件被损坏,接收数据服务器返回的源文件或副本文件在其他位置的恢复信息,根据恢复信息访问在其他位置的源文件或副本文件。
[0135]读写单元830,还用于:
[0136]在接收到多个通过字符串文件名发起的元数据信息修改请求时,将各个字符串文件名按照预设的编码规则反编码为对应的文件ID,并令元数据服务器根据文件ID中携带的文件族信息判断采用何种方式处理各个元数据信息修改请求,其中,元数据服务器采用并发方式处理文件族信息不同的文件的元数据信息修改请求,以及采用顺序方式处理文件族信息相同的文件的元数据信息修改请求。
[0137]综上所述,本发明实施例提供的方案,利用文件ID携带的文件的各种关键信息来简化分布式文件系统的处理流程,
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1