关于glusterfs的directory-layout-spread参数

    最近遇到了dht的directory-layout-spread参数,这是个什么东东?默认值为subvolume-count。按字面意思是说layout的分布个数,那具体效果是怎样的呢?我做了个实验:

    1)创建了一个distributed的服务(1 x 4, disk1, disk2,disk3,disk4)test,启动服务。修改fuse客户端对应的vol配置文件trusted-xxxxx-fuse.vol,在dht处添加“option directory-layout-spread 3”字段,将directory-layout-spread设置为3.

    注:目前只能通过手动修改配置文件方式设置该参数,无法通过gluster命令动态修改。

    2)mount客户端,在挂载点内创建a,b三个目录。1. 然后向目录a内copy大量小文件,查看后端brick上文件分布情况发现文件只分布在disk2,disk3,disk4上,而disk1上没有任何文件。2. 删除目录a内的所有文件,然后想目录b内copy大量小文件,查看后端brick上文件分布情况发现文件只分布在disk1,disk2,disk3上,disk4上没有任何文件。

    通过上述实验以及结合源代码分析:directory-layout-spread由用户设定,默认值为dht模块的subvolume-count,用于目录hash布局的子卷个数。即用户可以指定某个目录下的文件分布式到N个(具体是哪几个由hash算法决定)子卷上而不是分布到所有子卷上,根据hash算法,每个目录分配的不同的N个子卷,从而在存在大量目录和文件时,使文件的分布总体上达到均衡状态。

    引入此参数的好处有:

    1)由于目录的layout并不是分配到所有的子卷上,所以出现某子卷down掉时,不会导致所有的目录均出现文件丢失的情况。

    2)由于目录的layout并不是分配到所有的子卷上,所以某子卷引起layout修复时不会导致所有目录均需进行layout修复。

    3)rebalance时不需要所有的子卷都参与(此点尚未验证^-^)。

    后话:

    由glusterfs的directory-layout-spread参数,我想到了moosefs的lables功能(需moosefs 3.0以上),lables是给某个目录指定分配指定的chunkservers(storage server)。比如存储在A目录内的文件访问性能要求较高,我们可以将该目录的文件分配到装有SSD固态硬盘的chunkservers上,而B目录文件性能要求较低,我们可以将该目录的文件分别到普通HDD的chunkservers上。当然后续若有变动或业务需要,可进行SSD--->HDD或HDD---->SSD的动态迁移。

    上述理解以及描述存在不足之处,欢迎指正。【个人微博地址:http://weibo.com/773539293,欢迎喜欢或从事存储的朋友一起交流】

转载于:https://my.oschina.net/uvwxyz/blog/513658

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值