GFS中的数据完整性校验

来源:互联网 发布:nginx 系统 日志 编辑:程序博客网 时间:2024/05/02 00:32

GFS chunk 64M  每个chunk 以64kb的块进行划分 ,每块对应一个32位的校验和,放到chunkserver的内存中。

每个chunkserver必须通过维护一个检验和来独立的验证它自己的拷贝的完整性。


为何64M?

1.减少master存储的元数据信息,因为元数据要放到内存以提供快速访问。例如,GFS系统中每个chunk大小为64MB,默认存储3份,每个chunk的元数据小于64字节。那么1PB数据的chunk元信息大小不超过1PB * 3 / 64MB * 64 = 3GB。

2.减少客户端与master的交互。

3.用户可能在一个块上执行操作,客户端与chunkserver保存较长的TCP连接,减少网络带宽。


64kb?

好计算,64M/64kb(这里不清楚)


文件读、 append的校验过程:

1.读文件

客户端向chunkserver发送读数据请求,chunkserver先通过其存储的校验和判断数据是否损坏,如果损坏,则向master报告,master将发出指令将其他节点的正确副本替换掉出错的副本;否则,chunkserver给用户返回正确的数据。

2.append

该操作主要存在数据覆盖的错误,所以在进行append时只增加最后一块的校验值。对于跨chunk边界的记录,边界前后的块都需要校验。

参考:

http://duanple.blog.163.com/blog/static/7097176720109151211526/


   

0 0
原创粉丝点击