每个节点都是用 zfs 建的存储池。 然后用 gfs 集群做了分布卷,挂载给主应用使用。
现在节点有 a 和 b, 由于 zfs 特性,最好是保留 10%的剩余空间,不然性能急剧下降。 那么 a 和 b 都塞的差不多了。比如 85%。
我想增加 c 节点到 gfs 卷里。 那么新数据会怎么分布存储呢?
a 和 b 尽量少量存储?优先 c 节点? 还是可以设置 a 和 b 只读(不可能,数据删除咋办?),只能存 ab 以外的节点?比如 c,比如后面又增加了 d 。
现在只是虚拟机上模拟环境搭建,还没实际遇到,想提前打个预防学习一下。求教。
1
catror 2021-01-11 00:41:55 +08:00 via Android
加入节点 c 后,节点 a 和 b 的数据会做迁移。文件分布是用的一致性哈希,具体你可以看看 DHT 模块的文档或代码。
|
2
mushokumunou OP @catror 这么贴心?那通过增加节点,我既能解决扩容问题,又能解决 zfs 性能问题了。
|
3
msg7086 2021-01-11 01:42:21 +08:00
说实话如果用上了 GlusterFS 的话,我宁愿去使用更加传统的文件系统。
ZFS 本身有些隐藏痛点(包括你说的 10%剩余空间问题),如果用 GlusterFS 的话我还是比较倾向单盘 JBOD 然后让 GlusterFS 自己来保证冗余。 当然以上都是我纸上谈兵。 |