关于gluster分布式哈希研究

 

1. 背景

GlusterFS使用DHT模块来聚合多台机器的物理存储空间,形成一个单一的全局命名空间,并使用卷(Volume)这一逻辑概念来表示这样的空间。每个卷可以包含一个或多个子卷(Subvolume),子卷也可称为DHT子卷,同样是一个逻辑概念,一个子卷可以是单个brick、一个副本卷(Replica)或一个EC(Erasure Coding)卷,而副本卷和EC卷自身又都是由一组brick构成。而brick则是GlusterFS中的最基本存储单元,表示为一个机器上的本地文件系统导出目录。

DHT模块使用基于32位哈希空间的一致性哈希算法(Davies-Meyer算法)计算文件的哈希值,并将文件存储到其中一个DHT子卷,而目录是GlusterFS中哈希分布(layout)的基本单位,会在所有DHT子卷中都创建,哈希范围保存在目录的扩展属性中。根据DHT算法原理,每一个DHT子卷的目录都会被分配一个哈希子空间,即32位哈希空间(十六进制表示为0x00000000~0xffffffff)中的一段哈希范围。

为了在集群内均衡地分布文件,GlusterFS在每个目录层次上重新划分一次哈希空间,并且子目录层和父目录层的哈希分布并无关联。而文件的实际存储位置,只由其父目录上的哈希范围决定,与其他目录层次无关。

2.hash分布说明

2.1hash的调用关系:

 

2.2 hash的核心算法

Hash本身不考虑容量的权重,单纯以传入的字串为因素,brick容量因素早在卷初建时已考虑进去,例如容量大的brick分配的hash范围就比小容量的brick范围大,因此保证hash算法可以得到均匀的分布落点,集群就可以做到均衡的数据分布。

参考算法:

  ...

        for (i = 0; i &

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值