CN102821138B - 一种适用于云存储系统的元数据分布式存储方法 - Google Patents
一种适用于云存储系统的元数据分布式存储方法 Download PDFInfo
- Publication number
- CN102821138B CN102821138B CN201210236195.0A CN201210236195A CN102821138B CN 102821138 B CN102821138 B CN 102821138B CN 201210236195 A CN201210236195 A CN 201210236195A CN 102821138 B CN102821138 B CN 102821138B
- Authority
- CN
- China
- Prior art keywords
- data block
- metadata
- storage
- meta
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种适用于云存储系统的元数据分布式存储方法,该方法通过SHA-1算法对数据块进行签名运算,并对运算后的数据块进行分布式存储;再通过映射方法将数据块和元数据进行混合存储。本发明解决了传统元数据存储需要专门元数据服务器的问题,通过该方法可以直接把元数据的存储与块数据存储合并,不仅提高了元数据的安全性和可扩展性,也避免了因元数据单点失效而导致整个存储网络不能使用的问题。
Description
技术领域
本发明涉及网络数据存储领域,具体涉及一种适用于云存储系统的元数据分布式存储方法。
背景技术
现有GFS(Google File System)文件系统主要由元数据服务器和数据块服务器组成,其中元数据服务器是集中化存储,由于元数据的重要性,所以不得不对元数据服务器进行再集群或镜像。随着云存储技术的进步,无中心的分布式网络也被应用于持久存储,但是元数据的分布式存储成为了难题,在元数据集中化存储过程中存在以下技术问题:1)需要专门的元数据服务器;2)元数据本地存储不易于扩展:在海量数据存储环境下,本地的元数据容量会随着数据量的增长而膨胀,这时候,元数据服务器的整体性能、内存与硬盘空间就会成为瓶颈。3)为了防止单点失效而对元数据服务器进行集群。
发明内容
为了解决解决了元数据集中化存储所带来的以上技术问题:本发明涉及一种适用于云存储系统的元数据分布式存储方法。
本发明解决上述技术问题的技术方案是:提供的一种适用于云存储系统的元数据分布式存储方法,包括以下步骤:
(c1)对每个访问的客户端分配唯一的编号i;
(c2)设定该客户要访问一个对象表object的第j条记录;
(c3)根据编号i和对象表object的第j条记录构造出一个地址字符串meta.i.object.j;
(c4)将构造出的地址字符串进行SHA-1运算,得到一个指向混合数据块的摘要KEY;
(c5)将得到的摘要KEY通过映射方法f(key)→N找到相应服务器,并写入存储网络;
(c6)将存储网络中所写入的混合数据块的操作结果进行返回。
本发明所述的一种适用于云存储系统的元数据分布式存储方法中,所述步骤(c5)中,当写入数据块时,仅当数据块不存在时,才写入存储网络。
本发明所述的一种适用于云存储系统的元数据分布式存储方法中,所述步骤(c5)中,当写入元数据时,总是以覆盖的方式写入存储网络。
本发明所述的一种适用于云存储系统的元数据分布式存储方法中,所述步骤(c5)中,当数据块存在时,把数据块对应的摘要KEY的引用计数器加1。
本发明具有以下优点:
1、通过元数据的分布式存储,使得元数据与数据块可以同时混合存储,并具备与数据块有相同的冗余度,解决了元数据集中化存储带来的瓶颈问题,降低了元数据损坏的风险性;当增加更多存储服务器时,元数据可以与数据存储同步扩展。
2、该发明解决了传统元数据存储需要专门元数据服务器的问题,直接把元数据的存储与块数据存储合并,提高了元数据的安全性和可扩展性,即元数据的冗余度与扩展性保持与数据块存储一致,避免了因元数据单点失效而导致整个存储网络不能使用的问题。
说明书附图
图1为本发明中基于分布式哈希算法(DHT)的存储系统的流程图;
图2为本发明中元数据读取过程的流程图;
图3为本发明中元数据写入过程的流程图。
具体实施方式
参见图1-图3所示,本发明提供的一种适用于云存储系统的元数据分布式存储方法,通过元数据的分布式存储,使得元数据与数据块可以同时混合存储,并具备与数据块有相同的冗余度,解决了元数据集中化存储带来的瓶颈问题,降低了元数据损坏的风险性;当增加更多存储服务器时,元数据可以与数据存储同步扩展,本方法包括以下步骤:
步骤1:通过SHA-1算法对数据块进行签名运算,并对运算后的数据块进行存储,具体参见图1所示;
步骤2:通过映射方法将数据块和元数据进行混合存储。
参见图2与图3所示,实现上述步骤3还包括以下步骤:
第一步:对每个访问的客户端分配唯一的编号i;
第二步:设定该客户要访问一个对象表object的第j条记录;
第三步:根据编号i和对象表object的第j条记录构造出一个地址字符串meta.i.object.j;
第四步:将构造出的地址字符串进行SHA-1运算,并得到一个指向混合数据块的摘要KEY;
第五步:将得到的摘要KEY通过f(key)→N找到相应服务器,写入操作:仅当数据块不存在时,才写入存储网络;当写入元数据时,总是以覆盖的方式写入存储网络;当数据块存在时,把数据块对应的摘要KEY的引用计数器加1;前进到第六步。读取操作:直接读取混合数据块,前进到第七步。
第六步:将写入的的操作结果进行返回;
第七步:读取混合数据块的元数据部分。
参见图1所示,实现上述步骤1中基于分布式哈希算法(DHT)的存储系统,首先对一个数据块进行SHA-1签名运算,到一个签名(或摘要),本申请中称之为KEY,对一个数据块的操作分为三个基本操作:Put写入,Get读出,Del删除。然后通过寻址方法f,使得给定一个Key,就可以定位到用于存储该该数据块的服务器,表示为:f(KEY)→N;最简单的可以采用模运算。如现共有8台存储服务器,通过计算一个数据块的Key,它的值等于10,寻址过程就是10对8取模,即10除以8的余数为2,最后把该数据块存储于节点2上。
参见图2所示,该图为元数据的读取过程的流程图,其读取方法与普通数据块的读取过程一致,其区别是普通数据块读取时只考虑返回混合数据块的“数据块部分”,而元数据只考虑返回混合数据块的“元数据部分”。该方法中,通过映射方法实现元数据与数据块混合存储,并解决可能存在的冲突。具体为:首先为每个访问的客户端分配唯一的编号i,其次假定该客户要访问一个对象表(object)的第j条记录,然后构造出一个地址字符串:meta.i.object.j,最后对该字符串进行SHA-1运算,得到一个摘要KEY。其中构造出的地址字符串,实际为一个特殊的小数据块,因此,该小数据块有可能已经存在于存储网络中。当将KEY指向的内容当元数据存储时,另外一个用户却把这个KEY指向的内容当普通数据块,两个用户同时对此KEY进行读写操作时,就会产生不一致的情况,即冲突,后写入的一方就会把前面写入的内容覆盖。为了能够借用这个特定的地址来存储元数据,解决此冲突,具体操作流程中,仅当数据块不存在时,才写入存储网络;当写入元数据时,总是以覆盖的方式写入存储网络;当数据块存在时,把数据块对应的摘要KEY的引用计数器加1。
参见图3所示,该图中的“混合数据块”部分中可以看出元数据其实是借用了数据块的地址,然后把元数据附加在原来的数据块后面。所以,服务器上的数据块内容由“原始数据块”和“元数据”两部分组成。对于数据块的存取,只需要访问混合数据块的“数据块”部分,而对元数据的访问,则只要访问“元数据”部分。元数据在产生的时候,一并生成了两部分,数据块部分就是元数据地址字符串本身:meta.i.object.j。
为了更清楚地说明该元数据分布式存储方法,以下举例说明,编号为100的客户端,要写入对象表(object)的第5条记录的过程,具体步骤如下:
步骤1、构造元数据地址字符串:meta.100.object.5;
步骤2、对meta.100.object.5做SHA-1签名运算,即:
SHA1(“meta.100.object.5”)=41554EC52FAE35B9F5FDA5EF2ABE805916CB6EFB
步骤3、现在要写入一条对象(object)记录信息如下:
字段 | 值 |
ID | 5 |
NAME | 张三 |
TEL | 138xxxxxxxx |
步骤4、构造数据内容如下:
步骤5、按照生成的KEY:41554EC52FAE35B9F5FDA5EF2ABE805916CB6EFB,找到相应的存储节点,f(key)→N(比如映射到2号存储服务器)。
步骤6、向目标存储服务器以覆盖方式写入已构造好的混合数据块。
步骤7、完成存储。
本申请采用元数据分布式存储方法解决了传统元数据存储需要专门元数据服务器的问题,通过该方法可以直接把元数据的存储与块数据存储合并,提高了元数据的安全性和可扩展性,即元数据的冗余度与扩展性保持与数据块存储一致,避免了因元数据单点失效而导致整个存储网络不能使用的问题。也解决了无中心分布式云存储环境下元数据存储的难题。
Claims (3)
1.一种适用于云存储系统的元数据分布式存储方法,其特征在于:包括以下步骤:
(a)通过SHA-1算法对数据块进行签名运算;
(b)对运算后的数据块进行分布式存储;
(c)通过映射方法将数据块和元数据进行混合存储;
其中,所述步骤(c)包括:
(c1)对每个访问的客户端分配唯一的编号i;
(c2)设定该客户要访问一个对象表object的第j条记录;
(c3)根据编号i和对象表object的第j条记录构造出一个地址字符串meta.i.object.j;
(c4)将构造出的地址字符串进行SHA-1运算,得到一个指向混合数据块的摘要KEY;
(c5)将得到的摘要KEY通过映射方法f(key)→N找到相应服务器,并写入存储网络;
(c6)将存储网络中所写入的混合数据块的操作结果进行返回;
所述步骤(c5)中,当写入数据块时,仅当数据块不存在时,才写入存储网络。
2.根据权利要求1所述的一种适用于云存储系统的元数据分布式存储方法,其特征在于:所述步骤(c5)中,当写入元数据时,总是以覆盖的方式写入存储网络。
3.根据权利要求1所述的一种适用于云存储系统的元数据分布式存储方法,其特征在于:当数据块存在时,把数据块对应的摘要KEY的引用计数器加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210236195.0A CN102821138B (zh) | 2012-07-09 | 2012-07-09 | 一种适用于云存储系统的元数据分布式存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210236195.0A CN102821138B (zh) | 2012-07-09 | 2012-07-09 | 一种适用于云存储系统的元数据分布式存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102821138A CN102821138A (zh) | 2012-12-12 |
CN102821138B true CN102821138B (zh) | 2015-06-24 |
Family
ID=47304990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210236195.0A Active CN102821138B (zh) | 2012-07-09 | 2012-07-09 | 一种适用于云存储系统的元数据分布式存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102821138B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530387A (zh) * | 2013-10-22 | 2014-01-22 | 浪潮电子信息产业股份有限公司 | 一种hdfs针对小文件的改进方法 |
CN104765754A (zh) * | 2014-01-08 | 2015-07-08 | 北大方正集团有限公司 | 数据存储方法及装置 |
CN103795811B (zh) * | 2014-03-06 | 2015-05-06 | 焦点科技股份有限公司 | 一种基于元数据保存存储信息及统计管理数据的方法 |
CN104378431A (zh) * | 2014-11-14 | 2015-02-25 | 青岛龙泰天翔通信科技有限公司 | 一种适用于云存储系统的元数据分布式存储方法 |
CN104461817B (zh) * | 2014-11-26 | 2017-08-11 | 华为技术有限公司 | 一种检测键的方法和服务器 |
CN104536903B (zh) * | 2014-12-25 | 2018-02-23 | 华中科技大学 | 一种按数据属性分类存放的混合存储方法及系统 |
CN104503708B (zh) * | 2014-12-29 | 2018-05-22 | 成都极驰科技有限公司 | 数据散列存储的方法及装置 |
CN106294421B (zh) * | 2015-05-25 | 2020-02-04 | 阿里巴巴集团控股有限公司 | 一种数据写入、读取方法及装置 |
CN105260401A (zh) * | 2015-09-17 | 2016-01-20 | 国网北京市电力公司 | 电力数据查询存储方法及装置 |
CN107330097B (zh) * | 2017-07-05 | 2020-11-10 | 郑州云海信息技术有限公司 | 一种分布式重删装置、数据指纹存储、读取方法及系统 |
CN110221778A (zh) * | 2019-05-27 | 2019-09-10 | 携程计算机技术(上海)有限公司 | 酒店数据的处理方法、系统、存储介质以及电子设备 |
CN110413694A (zh) * | 2019-08-01 | 2019-11-05 | 重庆紫光华山智安科技有限公司 | 元数据管理方法及相关装置 |
US11295031B2 (en) | 2019-10-08 | 2022-04-05 | International Business Machines Corporation | Event log tamper resistance |
US11392348B2 (en) | 2020-02-13 | 2022-07-19 | International Business Machines Corporation | Ordering records for timed meta-data generation in a blocked record environment |
CN111309260B (zh) * | 2020-02-16 | 2021-04-09 | 西安奥卡云数据科技有限公司 | 一种数据存储节点选择方法 |
CN112148795B (zh) * | 2020-09-27 | 2021-06-15 | 上海依图网络科技有限公司 | 一种数据处理方法、装置、设备及介质 |
CN114153374B (zh) * | 2021-08-04 | 2022-06-28 | 北京天德科技有限公司 | 一种元数据与数据共同存储的分布式存储系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021868A (zh) * | 2007-03-06 | 2007-08-22 | 武汉大学 | 一种基于对象存储的地形数据存储方法 |
CN101692239A (zh) * | 2009-10-19 | 2010-04-07 | 浙江大学 | 一种分布式文件系统元数据分配方法 |
CN102402394A (zh) * | 2010-09-13 | 2012-04-04 | 腾讯科技(深圳)有限公司 | 一种基于哈希算法的数据存储方法及装置 |
-
2012
- 2012-07-09 CN CN201210236195.0A patent/CN102821138B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021868A (zh) * | 2007-03-06 | 2007-08-22 | 武汉大学 | 一种基于对象存储的地形数据存储方法 |
CN101692239A (zh) * | 2009-10-19 | 2010-04-07 | 浙江大学 | 一种分布式文件系统元数据分配方法 |
CN102402394A (zh) * | 2010-09-13 | 2012-04-04 | 腾讯科技(深圳)有限公司 | 一种基于哈希算法的数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102821138A (zh) | 2012-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102821138B (zh) | 一种适用于云存储系统的元数据分布式存储方法 | |
CN105453021B (zh) | 用于原子存储操作的系统和方法 | |
CN103327052B (zh) | 数据存储方法和系统以及数据访问方法和系统 | |
CN103080910B (zh) | 存储系统 | |
US8849759B2 (en) | Unified local storage supporting file and cloud object access | |
CN103002027B (zh) | 基于键值对系统实现树形目录结构的数据存储系统及方法 | |
US20140297603A1 (en) | Method and apparatus for deduplication of replicated file | |
US9547706B2 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
JP2012531675A5 (zh) | ||
US9405643B2 (en) | Multi-level lookup architecture to facilitate failure recovery | |
CN102915278A (zh) | 重复数据删除方法 | |
CN103544045A (zh) | 一种基于hdfs的虚拟机镜像存储系统及其构建方法 | |
US20160092125A1 (en) | Constructing an index to facilitate accessing a closed extent in an append-only storage system | |
CN104679665A (zh) | 一种实现分布式文件系统块存储的方法及系统 | |
CN102541985A (zh) | 一种分布式文件系统中客户端目录缓存的组织方法 | |
CN103186617B (zh) | 一种存储数据的方法和装置 | |
US20160147569A1 (en) | Distributed technique for allocating long-lived jobs among worker processes | |
US20170235493A1 (en) | Low-Cost Backup and Edge Caching Using Unused Disk Blocks | |
CN103970875A (zh) | 一种并行重复数据删除方法 | |
CN103905540A (zh) | 基于两级哈希的对象存储数据分布机制 | |
CN104054071A (zh) | 访问存储设备的方法和存储设备 | |
CN102682110A (zh) | 面向大规模空间信息的高性能缓存设计方法 | |
US20160092124A1 (en) | Append-only storage system supporting open and closed extents | |
CN109522283A (zh) | 一种重复数据删除方法及系统 | |
CN103425785A (zh) | 数据存储系统及其用户数据存储、读取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |