4003?1458378099

【任务】 基于glusterfs的高可靠数据迁移 正常


李立添加于 2016-12-13 23:27
基于glusterfs的高可靠数据迁移
    glusterfs存储数据库数据文件需要数据文件的完整性和可用性,对于数据文件需要频繁的在冷热区迁移,然而glusterfs并没有提供机制保证数据迁移的可靠性,通过POSIX通用操作接口做文件迁移不能保证迁移后的数据文件时完整有效的,并且迁移失败后数据文件夹的的完整性与可用性不可验证,所以必须有一套完整的机制保障系统可用性。
MD5 校验和(checksum)通过对接收的传输数据执行散列运算来检查数据的正确性[1]。一个散列函数,比如 MD5,是一个将任意长度的数据字符串转化成短的固定长度的值的单向操作。任意两个字符串不应有相同的散列值(即,有“很大可能”是不一样的,并且要人为地创造出来两个散列值相同的字符串应该是困难的)。一个 MD5 校验和(checksum)通过对接收的传输数据执行散列运算来检查数据的正确性。计算出的散列值拿来和随数据传输的散列值比较。如果两个值相同,说明传输的数据完整无误、没有被窜改过(前提是散列值没有被窜改)。
我们可以使用MD5保证数据的完整性和可用性。对迁移前后的数据做MD5校验,如果校验一致,则表示数据文件相同,迁移成功;如果校验不一致,则表示数据出错,迁移失败,删除迁移的数据。
1. 迁移后分别获取源文件和目的文件的MD5值
首先做文件的迁移,待迁移完成后再分别获取源文件和目的文件的MD5值,进行校验。过程如下:
1) 进行数据迁移,包括两个步骤:
a) 读取源文件数据;
b) 写入目的文件数据。
2) 判断数据迁移是否成功,如果失败,进行6,如果成功,进行3;
3) 获取源文件的MD5值:
a) 读取源文件字节;
b) 计算源文件字节MD5值;
4) 获取目的文件的MD5值:
a) 读取目的文件字节;
b) 计算目的文件字节MD5值;
5) 校验源文件MD5与目的文件MD5是否相同,如果相同,则结束;否则,进行6;
6) 删除目的文件。

 

测试文件大小

复制文件时间/ms

获取源文件MD5时间/ms

获取目的文件MD5时间/ms

总时间/ms

10KB

8.4

3.2

2.8

14.4

1MB

1.8

56.2

4.8

62.8

10MB

16.8

33.6

33.4

83.8

100MB

134.8

303

301.8

739.6

500MB

404

1483.8

1489.8

3377.6

1GB

863

3026

3041

6930

2GB

1659.6

6087.4

6105.8

13852.8

5GB

7109

15208.4

15262

37579.4



 

2. 迁移同时获取目的文件的MD5值
由上面的分析结果可知,花费的总时间由3部分组成,数据文件复制时间,获取源文件MD5和获取目的文件MD5,显然,获取源文件和目的文件Md5

测试文件大小

复制文件并获取目的MD5时间/ms

获取源文件MD5时间/ms

总时间/ms

10KB

10

3

13

1MB

57.4

4.8

62.2

10MB

43.2

35.2

78.4

100MB

351.2

308.6

659.8

500MB

1451.4

1497.4

2948.8

1GB

3016.8

3051.2

6068

2GB

5964

6076.4

12040.4

5GB

14855.6

15186.8

30042.4




统计图:
 


 


参考文献
[1] http://baike.baidu.com/link?url=aPFRGzg3ahwIVemHU8-VEHR2uWjmU2r8SUlGePPP4x6OE-lgDbUN_tTNcVpu2cF6sPC_yvhDKz_GwppgTk12KtVG1NsVlte_0DEgsu_h61K
[2] Fasfas

回复(6)
  • 5?1460204756
    尹刚 7年前
    5?1460204756
    尹刚 7年前

    很好!请再测试一下不同brick之间、不同机器之间、同一brick内部等不同情况的迁移md5效率

    4003?1458378099
    李立 7年前

    恩恩,好的,目前没有写环境,稍后加上环境的说明

    好的!

  • 4003?1458378099
    李立 7年前
    5?1460204756
    尹刚 7年前

    另外,除了md5,其他的hash算法有没有常用的?

    也有其他的校验算法,目前这个只是在提升MD5拷贝后校验的速度

  • 4003?1458378099
    李立 7年前

    按照尹老师的指导,目前先做了基于fuse轻量级的高可信数据迁移测试,这是测试结果,未完待续!@尹刚(jacknudt)‍ @王涛(wangtao)‍ 

0?1470885445
登录后可添加回复
  • 当前状态 新增
  • 选定优先级 正常
  • 指派给 尹刚
  • 里程碑 --
  • 开始日期 2016-12-13
  • 结束日期
  • 预计工时(H) 0.00 小时
  • 完成度 0%
  • 关联Commit

© Copyright 2007~2021 国防科技大学Trustie团队 & IntelliDE 湘ICP备 17009477号

问题和建议
还能输入50个字符 提交

加入QQ群

关注微信APP


×