基于键值key-value存储的分布式文件系统元数据管理方法

文档序号:6354568阅读:308来源:国知局
专利名称:基于键值key-value存储的分布式文件系统元数据管理方法
技术领域
本发明涉及文件系统领域,特别涉及一种基于键值key-value存储的分布式文件 系统元数据存储管理方法。
背景技术
文件系统的元数据包括目录和文件的元数据,以及目录结构等。文件的元数据包 括文件名,权限,时间,文件大小,以及数据块的分布等。目录的元数据包括目录名、权 限、时间等主要属性,以及它所包含的子文件和子目录等目录结构相关内容。文件系统元数 据管理的一个难点是既要提供高效的元数据访问,又要为元数据的修改提供灵活的接口。分布式文件系统因其海量存储的优势,在互联网领域正逐渐取代传统的本地文件 系统。Ceph是典型的分布式文件系统,其采用基于对象的分布式存储集群(RADOS,Reliable Autonomic Distributed Object Storage)来存储文件系统的元数据;RADOS可以为C印h 提供可扩展、可靠的对象存储,但是C^ph把目录也作为一个单独的对象,目录的子对象的 关联信息都存储在目录对象中;当很多进程并发地在Ceph的某个目录中创建大量子对象 时,为了保证元数据的一致性,这些操作只能串行进行,造成系统性能瓶颈。key-value存储可以为分布式文件系统元数据存储管理带来更好的扩展性,如果 要处理的数据持续增加,多加机器就可以了,不存在系统瓶颈问题。但是基于key-value存 储的分布式文件系统元数据存储管理会带来一些新的挑战分布式文件系统元数据的操作 一般涉及多个步骤,涉及多个key-value操作,而key-value存储不支持多个key-value的 事务操作。因此如何保证在某个步骤中断后,能够通过一定的措施实现垃圾清理,保证元数 据的一致性,是一个需要解决的技术问题。

发明内容
(一)要解决的技术问题本发明要解决的技术问题是如何提供一种基于键值key-value存储的分布式文 件系统元数据管理方法,并且保证在对元数据的操作过程中,保持元数据的一致性。( 二)技术方案为解决上述技术问题,本发明提供一种基于键值key-value存储的分布式文件系 统元数据管理方法,该方法包括以下步骤Sl 服务器存储文件和目录的元数据,并以位图的方式存储目录的子对象;所述 子对象包括子文件和子目录;S2 对子对象的元数据进行修改操作;在进行所述修改操作之前,以所述子对象 的父目录的目录内容标识dirhdl-ID和所述子对象的位图索引构造键key,以当前时间为 值value,记录到操作日志中;S3 后台进程定期扫描所述操作日志,对超时操作进行垃圾回收。
优选地,所述服务器中存储三个key-value表日志表log. tbl、元表meta.tbl和 目表 entry, tbl ;所述文件和目录的元数据的基本属性记录,以及所述目录的元数据的目录内容记 录存储在所述元表meta. tbl中;所述目录与其子对象的关联关系存储在所述目表entry, tbl中。优选地,所述文件的元数据的基本属性记录,以文件标识doc-ID为键key,以文件 的基本属性信息为值value ;所述目录的元数据的基本属性记录,以目录标识dir-ID为键key,以目录的基本 属性信息为值value ;所述目录的元数据的目录内容记录,以目录内容标识dirhdl-ID为键key,以目录 所包含的子对象的位图结构为值value。优选地,所述目录与其子对象的关联关系包括所述目录标识dir-ID与第一分割字符构成键key,所述目录内容标识dirhdl-ID 为值value,两者构成第一关联;所述目录内容标识dirhdl-ID通过第二分割字符连接所述子对象的位图索引构 成键key,子对象标识和子对象名构成值value,两者构成第二关联;所述目录内容标识dirhdl-ID通过第三分割字符连接所述子对象名构成键key, 子对象位图索引为值value,两者构成第三关联。优选地,所述步骤S2中,所述对子对象的元数据进行修改包括创建所述子对象 的元数据和删除所述子对象的元数据。优选地,创建所述子对象的元数据具体包括以下步骤S2. 1. 1 创建所述子对象的基本属性记录;如果所述子对象为目录,创建其目录 内容记录和第一关联;S2. 1.2 写操作日志;S2. 1.3:创建所述第三关联、第二关联,修改所述子对象的父目录的目录内容记 录;S2. 1.4 删除操作日志。优选地,删除所述子对象的元数据具体包括以下步骤S2. 2. 1 写操作日志;S2. 2. 2:修改所述子对象的父目录的目录内容记录,删除所述第三关联、第二关 联;S2. 2.3 删除操作日志;S2. 2. 4 删除所述子对象的基本属性记录;如果所述子对象为目录,删除其目录 内容记录和第一关联。优选地,所述步骤S3中,所述垃圾回收具体包括以下步骤S3. 1. 1 修改所述父目录的目录内容记录;S3. 1. 2 解析所述操作日志中的键key,得到所述子对象标识和所述子对象名,删
除所述第三关联、第二关联;S3. 1. 3 删除子对象的基本属性记录;如果所述子对象为目录,解析得到其目录
5内容标识,删除其目录内容记录和第一关联;S3. 1. 4 从操作日志中删除超时记录。优选地,所述步骤S2中,所述键key由第四分割字符连接所述父目录的目录内容 标识dirhdl-ID和所述子对象的位图索引构成。优选地,所述步骤S3中,判断操作是否超时包括以下步骤S3. 0. 1 解析所述键key,得到操作时间opTime ;S3. 0. 2 用当前时间curTime减去所述操作时间opTime,判断其差值是否大于超 时标准值timeout ;如果大于,则操作超时;否则,操作未超时。(三)有益效果本发明提供了一种基于键值key-value存储的分布式文件系统元数据存储管理 方法,其采用键值key-value存储对分布式文件系统的元数据进行管理,具有比传统分布 式文件系统更好的扩展性。同时,其采用日志记录和垃圾回收的管理模式,在对元数据修改 过程中,保持了元数据的一致性。


图1是本发明实施例所述基于键值key-value存储的分布式文件系统元数据存储 管理方法流程图;图2是本发明实施例所述基于键值key-value存储的分布式文件系统元数据存储 结构图;图3是本发明实施例所述创建子对象过程数据结构图;图4是本发明实施例所述删除子对象过程数据结构图;图5是本发明实施例所述垃圾回收过程数据结构图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施 例用于说明本发明,但不用来限制本发明的范围。图1是本发明实施例所述基于键值key-value存储的分布式文件系统元数据管理 方法流程图,如图1所示,该方法包括以下步骤Sl 服务器存储文件和目录的元数据,并以位图的方式存储目录的子对象;所述 子对象包括子文件和子目录。S2 对子对象的元数据进行修改操作;在进行所述修改操作之前,以所述子对象 的父目录的目录内容标识dirhdl-ID和所述子对象的位图索引构造键key,以当前时间为 值value,记录到操作日志中。所述键key和值value作为日志记录存储在所述服务器的日 志表log. tbl中。S3 后台进程定期扫描所述操作日志,对超时操作进行垃圾回收。本发明实施例的方法采用键值key-value存储,对分布式文件系统的元数据进行 管理,其具有比传统分布式文件系统更好的扩展性。同时,步骤S2中的日志记录和步骤S3 中的垃圾回收,保证了在对元数据修改过程中,始终保持元数据的一致性。图2是本发明实施例所述基于键值key-value存储的分布式文件系统元数据存储结构图,如图2所示,其表示目录I包括目录b和文件c。所述服务器中存储三个key-value 表日志表log. tbl、元表meta. tbll和目表entry. tbl2。目录I、目录b和文件c的元数据 的基本属性记录,以及目录I和目录b的元数据的目录内容记录存储在元表meta. tbll中。 目录I与目录b、文件c的关联关系存储在所述目表entry. tbl2中。文件c的元数据的基本属性记录中,键key为5,值value为文件c的基本属性信 息;所述文件的基本属性信息包括访问权限、创建时间、访问时间和内容分布等信息。目录I的元数据的基本属性记录,键key为1,值value为目录I的基本属性信息; 所述目录的基本属性信息包括访问权限、创建时间、访问时间等信息。目录I的元数据的目录内容记录,键key为2,值value为目录I所包含的子对象 的位图结构。图2中目录I的位图结构[1100...]中置位为1的两位分别对应目录b和文 件C。目录I与其子对象目录b和文件c的关联关系包括目录I的目录标识dir-ID即1与第一分割字符“$”构成键key,目录I的目录内 容标识dirhdl-ID即2为值value,两者构成第一关联,对应图2目表entry, tbl 2中记录 <1+ “$”,2>。所述第一分割字符还可以为“*”、“#”、“<§”等其他字符,但是其必须区分于本 发明实施例的其他特殊字符。目录I的目录内容标识dirhdl-ID即2通过第二分割字符连接所述子对象目 录b的位图索引即0构成键key,目录b的目录标识dir-ID即3和目录b的名称“b”构成 值value,两者构成第二关联,对应图2目表entry, tbl 2中记录<2+ +0,{3,“b”}>。 所述第二分割字符还可以为“*”、“#”、“$”等其他字符,但是其必须区分于本发明实施例的 其他特殊字符。目录I的目录内容标识dirhdl-ID即2通过第三分割字符“#”连接子对象目录b 的名称“b”构成键key,目录b的位图索引即0为值value,两者构成第三关联,对应图2目 表entry, tbl 2中记录<2+ “#,,+ “b”,0>。所述第三分割字符还可以为“*”、“<§”、“$”等其 他字符,但是其必须区分于本发明实施例的其他特殊字符。优选地,所述步骤S2中,所述对子对象的元数据进行修改包括创建所述子对象 的元数据和删除所述子对象的元数据。图3是本发明实施例所述创建子对象过程数据结构图,如图3所示,创建目录I的 子对象目录b的元数据具体包括以下步骤S2,· 1. 1 创建目录b的基本属性记录;如表格1中StepCl ;图3中元表meta. tbl 1 增加记录 <3,{DIR. . . }>0创建目录b的目录内容记录和其第一关联;如表格1中乂印02和乂印03 ;对应 图3中元表meta. tbl 1增加记录<4,ROOOO. ..]}>,图3中目表entry, tbl 2增加记录 <3+ “$”,4>。S2,· 1. 2 写操作日志;如表格1中St印C4 ;对应图3中日志表log. tbl3中增加 记录 <2+ “"”+0,curTime〉。S2’. 1. 3 创建所述第三关联、第二关联,修改目录I的目录内容记录;如表格1中 St印C5 St印C7 ;对应图 3 中目表 entry, tbl 2 增加记录 <2+“#”+“b”,0> 和 <2+“@,,+0, {3,“b”}>,元表 meta. tbll 中修改记录 <2,{
}> 为 <2,{[1000. ··]}>。
S2,· 1. 4 删除操作日志;如表格1中St印C8 ;对应图3中日志表log. tbl 3中删 除记录<2+ “~”+0,curTime〉,恢复至创建操作前的状态。表1创建子对象的元数据相关步骤
StepCl put(3, Attrs) in meta.tbl; StepC2: put(4,
) in meta. tbl; StepC3: put(3+ "$ ", 4) in entry, tbl;
StepC4: put(2+ "A"+0, curTime) in log. tbl;
StepC5: put(2+ "# "+/name, 0) in entry, tbl; //fname = "b “ StepC6: put(2+ "@ "+ 0, {3, fname}) in entry, tbl; StepC7: put(2,[1000...]) in meta. tbl;
StepC8: remove(2+ "A"+0) in log. tbl;图4是本发明实施例所述删除子对象过程数据结构图,如图4所示,删除目录I的 子对象目录b的元数据具体包括以下步骤S2,. 2. 1 写操作日志;如表格2中乂印1 0 乂印附;对应图4中日志表log. tbl 3中增加记录<2+ “~,,+0,curTime〉。步骤用于根据目录I的目录内容标识 dirhdl-ID即2与被删除子对象目录b的文件名为键key查询目表entry, tbl 2,以获得目 录b的位图索弓丨,其索引值为0。S2’. 2. 2 修改所述目录I的目录内容记录,删除所述第二关联、第三关联;如表格 2中St印R2M印R4 ;对应图4中目表entry, tbl 2删除记录<2+“#”+“b”,0>和<2+“@”+0, {3,“b”}>,元表 meta. tbll 中修改记录 <2,{[1000. · · ]}> 为 <2,{
}>。S2,· 2. 3 删除操作日志;如表格2中St印R5 ;对应图4中日志表log. tbl 3中删 除记录<2+ “~”+0,curTime〉,恢复至删除操作前的状态。S2’ .2. 4:删除目录b的基本属性记录、目录内容记录和第一关联;如表格2中 StepR6StepR8 ;对应图 3 中目表 entry, tbl 2 删除记录 <3+ “$”,4>,图 3 中元表 meta. tbl 1 删除记录 <4,_00···]}> 和 <3,{DIR.··}〉。表2删除子对象的元数据相关步骤StepRO idx= get(2+ "# "+fname) in entry.tbl; #idx==0; StepRl: put(2+ "Λ"+0, curTime) in log.tbl;
StepR2: put(2,
) in meta.tbl
StepR3: remove(2+ ”# ” +fname) in entry, tbl; //fname = “b “ StepR4: remove(2+ "@"+0) in entry.tbl
StepR5: remove(2+ ”Λ ”+0) in log. tbl
StepR6: remove(3+,$,) in entry.tbl; StepR7: remove(4) in meta.tbl; StepR8: remove⑶ in meta.tbl;图5是本发明实施例所述垃圾回收过程数据结构图,如图5所示,假设创建目录I的子对象目录b过程超时,其垃圾回收过程具体包括以下步骤S3,· 1. 1 修改目录I的目录内容记录;如表格3中Stepl ;对应图5中元表meta. tbl 1 中修改记录 <2,{[1000. · · ]}> 为 <2,{
}>。S3’. 1. 2 解析操作日志中的键key,得到目录b的目录标识dir-ID即3和其名称 “b”,删除所述第三关联、第二关联;如表格3中乂印2 乂印3 ;对应图5中目表entry, tbl 2 删除记录 <2+ “#,,+ “b”,0> 和 <2+ “@”+0,{3,“b”}>。S3' . 1.3 解析得到目录b的目录内容标识dirhdl-ID即4,删除目录b的目录 内容记录,删除其第一关联和基本属性记录;如表格3中St印4 乂印7 ;对应图5中元表 meta. tbl 1 中删除记录 <4,{
}> 和 <3,{DIR. . . }>,目表 entry, tbl 2 中删除记录 <3+ “$”,4>。S3,· 1.4 从操作日志中删除超时记录;如表格3中乂印8 ;对应图5中日志表log. tbl 3 中删除记录 <2+ “"”+0,timestamp〉。表3垃圾回收过程相关步骤
权利要求
1.一种基于键值key-value存储的分布式文件系统元数据管理方法,其特征在于,所 述方法包括以下步骤51服务器存储文件和目录的元数据,并以位图的方式存储目录的子对象;所述子对 象包括子文件和子目录;52对子对象的元数据进行修改操作;在进行所述修改操作之前,以所述子对象的父 目录的目录内容标识dirhdl-ID和所述子对象的位图索引构造键key,以当前时间为值 value,记录到操作日志中;53后台进程定期扫描所述操作日志,对超时操作进行垃圾回收。
2.如权利要求1所述的基于key-value存储的分布式文件系统元数据管理方法,其特 征在于,所述服务器中存储三个key-value表日志表log. tbl、元表meta. tbl和目表entry.tbl ;所述文件和目录的元数据的基本属性记录,以及所述目录的元数据的目录内容记录存 储在所述元表meta. tbl中;所述目录与其子对象的关联关系存储在所述目表entry, tbl中。
3.如权利要求2所述的基于键值key-value存储的分布式文件系统元数据管理方法, 其特征在于,所述文件的元数据的基本属性记录,以文件标识doc-ID为键key,以文件的基本属性 信息为值value ;所述目录的元数据的基本属性记录,以目录标识dir-ID为键key,以目录的基本属性 信息为值value ;所述目录的元数据的目录内容记录,以目录内容标识dirhdl-ID为键key,以目录所包 含的子对象的位图结构为值value。
4.如权利要求2所述的基于键值key-value存储的分布式文件系统元数据管理方法, 其特征在于,所述目录与其子对象的关联关系包括所述目录标识dir-ID与第一分割字符构成键key,所述目录内容标识dirhdl-ID为值 value,两者构成第一关联;所述目录内容标识dirhdl-ID通过第二分割字符连接所述子对象的位图索引构成键 key,子对象标识和子对象名构成值value,两者构成第二关联;所述目录内容标识dirhdl-ID通过第三分割字符连接所述子对象名构成键key,子对 象位图索引为值value,两者构成第三关联。
5.如权利要求4所述的基于键值key-value存储的分布式文件系统元数据管理方法, 其特征在于,所述步骤S2中,所述对子对象的元数据进行修改包括创建所述子对象的元数据和删除所述子对象的 元数据。
6.如权利要求5所述的基于键值key-value存储的分布式文件系统元数据管理方法, 其特征在于,创建所述子对象的元数据具体包括以下步骤S2. 1. 1 创建所述子对象的基本属性记录;如果所述子对象为目录,创建其目录内容 记录和第一关联;S2. 1. 2 写操作日志;S2. 1. 3 创建所述第三关联、第二关联,修改所述子对象的父目录的目录内容记录;S2. 1.4 删除操作日志。
7.如权利要求5所述的基于键值key-value存储的分布式文件系统元数据管理方法, 其特征在于,删除所述子对象的元数据具体包括以下步骤S2. 2. 1 写操作日志;S2. 2. 2 修改所述子对象的父目录的目录内容记录,删除所述第三关联、第二关联;S2. 2. 3 删除操作日志;52.2. 4 删除所述子对象的基本属性记录;如果所述子对象为目录,删除其目录内容 记录和第一关联。
8.如权利要求5所述的基于键值key-value存储的分布式文件系统元数据管理方法, 其特征在于,所述步骤S3中,所述垃圾回收具体包括以下步骤53.1. 1 修改所述父目录的目录内容记录;S3. 1.2 解析所述操作日志中的键key,得到所述子对象标识和所述子对象名,删除所 述第三关联、第二关联;S3. 1. 3 删除子对象的基本属性记录;如果所述子对象为目录,解析得到其目录内容 标识,删除其目录内容记录和第一关联;S3. 1.4:从操作日志中删除超时记录。
9.如权利要求1所述的基于键值key-value存储的分布式文件系统元数据管理方法, 其特征在于,所述步骤S2中,所述键key由第四分割字符连接所述父目录的目录内容标识 dirhdl-ID和所述子对象的位图索引构成。
10.如权利要求1所述的基于键值key-value存储的分布式文件系统元数据管理方法, 其特征在于,所述步骤S3中,判断操作是否超时包括以下步骤S3. 0. 1 解析所述键key,得到操作时间opTime ;S3. 0. 2 用当前时间curTime减去所述操作时间opTime,判断其差值是否大于超时标 准值timeout ;如果大于,则操作超时;否则,操作未超时。
全文摘要
本发明公开了一种基于键值key-value存储的分布式文件系统元数据管理方法,主要涉及文件系统领域。该方法包括以下步骤服务器存储文件和目录的元数据,并以位图的方式存储目录的子对象;对子对象的元数据进行修改操作;后台进程定期扫描所述操作日志,对超时操作进行垃圾回收。本发明的基于键值key-value存储的分布式文件系统元数据存储管理方法,具有比传统分布式文件系统更好的扩展性。同时,其采用日志记录和垃圾回收的管理模式,在对元数据修改过程中,保持了元数据的一致性。
文档编号G06F17/30GK102110146SQ201110039269
公开日2011年6月29日 申请日期2011年2月16日 优先权日2011年2月16日
发明者刘松彬, 杨广文, 黄小猛 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1