glusterfs的directory-layout-spread参数怎么用
本篇内容主要讲解"glusterfs的directory-layout-spread参数怎么用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"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的动态迁移。
到此,相信大家对"glusterfs的directory-layout-spread参数怎么用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!