首页> 中国专利> 基于键值key-value存储的分布式文件系统元数据管理方法

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

摘要

本发明公开了一种基于键值key-value存储的分布式文件系统元数据管理方法,主要涉及文件系统领域。该方法包括以下步骤:服务器存储文件和目录的元数据,并以位图的方式存储目录的子对象;对子对象的元数据进行修改操作;后台进程定期扫描所述操作日志,对超时操作进行垃圾回收。本发明的基于键值key-value存储的分布式文件系统元数据存储管理方法,具有比传统分布式文件系统更好的扩展性。同时,其采用日志记录和垃圾回收的管理模式,在对元数据修改过程中,保持了元数据的一致性。

著录项

  • 公开/公告号CN102110146A

    专利类型发明专利

  • 公开/公告日2011-06-29

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN201110039269.7

  • 发明设计人 杨广文;刘松彬;黄小猛;

    申请日2011-02-16

  • 分类号G06F17/30(20060101);

  • 代理机构11002 北京路浩知识产权代理有限公司;

  • 代理人王莹

  • 地址 100084 北京市海淀区清华园北京100084-82信箱

  • 入库时间 2023-12-18 02:43:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-11-14

    授权

    授权

  • 2011-08-10

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20110216

    实质审查的生效

  • 2011-06-29

    公开

    公开

说明书

技术领域

本发明涉及文件系统领域,特别涉及一种基于键值key-value存储的分布式文件系统元数据存储管理方法。

背景技术

文件系统的元数据包括目录和文件的元数据,以及目录结构等。文件的元数据包括:文件名,权限,时间,文件大小,以及数据块的分布等。目录的元数据包括:目录名、权限、时间等主要属性,以及它所包含的子文件和子目录等目录结构相关内容。文件系统元数据管理的一个难点是既要提供高效的元数据访问,又要为元数据的修改提供灵活的接口。

分布式文件系统因其海量存储的优势,在互联网领域正逐渐取代传统的本地文件系统。Ceph是典型的分布式文件系统,其采用基于对象的分布式存储集群(RADOS,Reliable Autonomic Distributed Object Storage)来存储文件系统的元数据;RADOS可以为Ceph提供可扩展、可靠的对象存储,但是Ceph把目录也作为一个单独的对象,目录的子对象的关联信息都存储在目录对象中;当很多进程并发地在Ceph的某个目录中创建大量子对象时,为了保证元数据的一致性,这些操作只能串行进行,造成系统性能瓶颈。

key-value存储可以为分布式文件系统元数据存储管理带来更好的扩展性,如果要处理的数据持续增加,多加机器就可以了,不存在系统瓶颈问题。但是基于key-value存储的分布式文件系统元数据存储管理会带来一些新的挑战:分布式文件系统元数据的操作一般涉及多个步骤,涉及多个key-value操作,而key-value存储不支持多个key-value的事务操作。因此如何保证在某个步骤中断后,能够通过一定的措施实现垃圾清理,保证元数据的一致性,是一个需要解决的技术问题。

发明内容

(一)要解决的技术问题

本发明要解决的技术问题是:如何提供一种基于键值key-value存储的分布式文件系统元数据管理方法,并且保证在对元数据的操作过程中,保持元数据的一致性。

(二)技术方案

为解决上述技术问题,本发明提供一种基于键值key-value存储的分布式文件系统元数据管理方法,该方法包括以下步骤:

S1:服务器存储文件和目录的元数据,并以位图的方式存储目录的子对象;所述子对象包括子文件和子目录;

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:删除子对象的基本属性记录;如果所述子对象为目录,解析得到其目录内容标识,删除其目录内容记录和第一关联;

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所示,该方法包括以下步骤:

S1:服务器存储文件和目录的元数据,并以位图的方式存储目录的子对象;所述子对象包括子文件和子目录。

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.tbl1和目表entry.tbl2。目录I、目录b和文件c的元数据的基本属性记录,以及目录I和目录b的元数据的目录内容记录存储在元表meta.tbl1中。目录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中StepC1;图3中元表meta.tbl 1增加记录<3,{DIR...}>。

创建目录b的目录内容记录和其第一关联;如表格1中StepC2和StepC3;对应图3中元表meta.tbl 1增加记录<4,{[0000...]}>,图3中目表entry.tbl 2增加记录<3+“$”,4>。

S2’.1.2:写操作日志;如表格1中StepC4;对应图3中日志表log.tbl3中增加记录<2+“^”+0,curTime>。

S2’.1.3:创建所述第三关联、第二关联,修改目录I的目录内容记录;如表格1中StepC5~StepC7;对应图3中目表entry.tbl 2增加记录<2+“#”+“b”,0>和<2+“@”+0,{3,“b”}>,元表meta.tbl1中修改记录<2,{[0000...]}>为<2,{[1000...]}>。

S2’.1.4:删除操作日志;如表格1中StepC8;对应图3中日志表log.tbl 3中删除记录<2+“^”+0,curTime>,恢复至创建操作前的状态。

表1创建子对象的元数据相关步骤

图4是本发明实施例所述删除子对象过程数据结构图,如图4所示,删除目录I的子对象目录b的元数据具体包括以下步骤:

S2’.2.1:写操作日志;如表格2中StepR0~StepR1;对应图4中日志表log.tbl 3中增加记录<2+“^”+0,curTime>。步骤StepR0用于根据目录I的目录内容标识dirhdl-ID即2与被删除子对象目录b的文件名为键key查询目表entry.tbl 2,以获得目录b的位图索引,其索引值为0。

S2’.2.2:修改所述目录I的目录内容记录,删除所述第二关联、第三关联;如表格2中StepR2StepR4;对应图4中目表entry.tbl 2删除记录<2+“#”+“b”,0>和<2+“@”+0,{3,“b”}>,元表meta.tbl1中修改记录<2,{[1000...]}>为<2,{[0000...]}>。

S2’.2.3:删除操作日志;如表格2中StepR5;对应图4中日志表log.tbl 3中删除记录<2+“^”+0,curTime>,恢复至删除操作前的状态。

S2’.2.4:删除目录b的基本属性记录、目录内容记录和第一关联;如表格2中StepR6StepR8;对应图3中目表entry.tbl 2删除记录<3+“$”,4>,图3中元表meta.tbl 1删除记录<4,{[0000...]}>和<3,{DIR...}>。

表2删除子对象的元数据相关步骤

图5是本发明实施例所述垃圾回收过程数据结构图,如图5所示,

假设创建目录I的子对象目录b过程超时,其垃圾回收过程具体包括以下步骤:

S3’.1.1:修改目录I的目录内容记录;如表格3中Step1;对应图5中元表meta.tbl 1中修改记录<2,{[1000...]}>为<2,{[0000...]}>。

S3’.1.2:解析操作日志中的键key,得到目录b的目录标识dir-ID即3和其名称“b”,删除所述第三关联、第二关联;如表格3中Step2~Step3;对应图5中目表entry.tbl 2删除记录<2+“#”+“b”,0>和<2+“@”+0,{3,“b”}>。

S3’.1.3:解析得到目录b的目录内容标识dirhdl-ID即4,删除目录b的目录内容记录,删除其第一关联和基本属性记录;如表格3中Step4~Step7;对应图5中元表meta.tbl 1中删除记录<4,{[0000...]}>和<3,{DIR...}>,目表entry.tbl 2中删除记录<3+“$”,4>。

S3’.1.4:从操作日志中删除超时记录;如表格3中Step8;对应图5中日志表log.tbl 3中删除记录<2+“^”+0,timestamp>。

表3垃圾回收过程相关步骤

优选地,所述步骤S2中,所述键key由第四分割字符“^”连接所述父目录的目录内容标识dirhdl-ID和所述子对象的位图索引构成。所述第四分割字符还可以为“*”、“@”、“$”等其他字符,但是其必须区分于本发明实施例的其他特殊字符。

优选地,所述步骤S3中,判断操作是否超时包括以下步骤:

S3.0.1:解析所述键key,得到操作时间opTime;

S3.0.2:用当前时间curTime减去所述操作时间opTime,判断其差值是否大于超时标准值timeout;如果大于,则操作超时;否则,操作未超时。

步骤S2中的日志记录和步骤S3中的垃圾回收,保证了在对元数据修改过程中,始终保持元数据的一致性。

以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号