GlusterFS的分布卷(distribute)或者含distribute的复合卷用户场景下,很多人都会关心会不会把某些brick写满,其他brick比较空,那会怎么样呢?


GlusterFS提供了一个min-free-disk的option可以让用户配置剩余空闲空间的一个阈值。


当某一个brick的剩余空间少于min-free-disk的时候,新建文件如果落于这一个brick上面,那么会在这个brick上面建一个link(GlusterFS自有的,将实际文件的位置记录到扩展属性上) file指向实际文件所在brick,将实际文件内容放到所指向brick上面。


这样在文件lookup的时候,会去hash所在位置去lookup到一个link file。然后根据相应的xattr找到真实文件所在位置,后续操作都将到真实文件位置进行操作。


min-free-disk可以通过命令行方式给具体卷进行配置。配置值可以是百分数或者是绝对值。例如:

# gluster volume set volname min-free-disk 10%

或者

# gluster volume set volname min-free-disk 10GB


当然,正如前面所说的这个option只是对新文件起作用,旧文件仍然会在原来位置一直写。如果原来文件写太多也会将brick空间占满。


并且,如果所有brick都达到阈值了,这个时候仍然在原来的brick上面去写文件,也有可能将brick占满。