![永久扩展/增加 OCFS2](https://linux22.com/image/664375/%E6%B0%B8%E4%B9%85%E6%89%A9%E5%B1%95%2F%E5%A2%9E%E5%8A%A0%20OCFS2.png)
我有一个 kvm 环境,其中一个共享磁盘由 2 个 VM 通过 rbd ceph 挂载。我想知道将来如何扩展我计划在其上使用的 OCFS2 文件系统:
LVM2 不是一个选项:
“截至撰写本文时,OCFS2 尚未与任何卷管理器集成或支持。扩展现有 OCFS2 存储库的过程仅从一个 Oracle VM 服务器池成员 (dom0) 手动完成。”
“需要注意的是,不支持在逻辑卷 (LVM) 上创建 OCFS2 卷。这是因为逻辑卷不具备集群感知能力,并且可能会损坏 OCFS2 文件系统。”
在其他情况下,当其中一些 KVM 机器需要更多磁盘时,我可以动态地向它们添加更多磁盘(例如:vdb、vdc、vdd),然后将它们 pvadd 到 LVM,然后只需增加我的逻辑卷,但如果 OCFS2 无法做到这一点,那么解决方案是什么?(最好我永远不必关闭 VM 或为其卸载文件系统)。
谢谢
答案1
我手头上目前没有 Ceph 集群可以玩,但根据我的记忆,你可以扩展现有的 RBD 卷。因此,不需要 LVM。不过,你可能很难让虚拟机在不重启的情况下识别更大的 RBD 卷——KVM 将底层块设备更改传递到虚拟机的能力充其量是参差不齐的(无论如何,测试会很快为你解答)。不过,OCFS2 文档关于 LVM 不具备集群感知的说法是错误的——你只需要使用 clvm 而不是常规的本地 LVM。(Oracle 正在错误的什么事?说不是这样!)
另一个选择是,如果你正在使用 RBD,并且它使用稀疏分配,那么你可以最初使 RBD 卷“变得非常巨大”(尽可能大),然后在存储更多数据时添加更多 OSD 来存储额外数据。如果您经常删除文件,此解决方案就会失败(除非整个堆栈都支持 TRIM,我认为 OCFS2 极不可能出现这种情况)。但是,如果您只添加文件,这种方法可能会非常有效。
不过,我强烈建议不要采用这种“一个巨型文件系统”的方法。文件系统大小存在“最佳点”,超出这个点往往会引发问题。例如,如果您遇到文件系统损坏,尝试恢复多 PB 文件系统可能需要很长时间。在某个时候,您可能最好直接使用 RADOS(或使用 radosgw 等接口层,并使用 S3 或 SWIFT 协议)将文件存储为单个对象,并完全跳过文件系统层。