我有一个使用 Ceph 作为主要 VM 存储后端的 5 节点 Proxmox 集群。Ceph 池当前配置size
为 5(每个 OSD 每个节点 1 个数据副本)和min_size
1。由于size
设置较高,池中的大部分可用空间被用于存储不必要的副本(Proxmox 5-node集群可以同时支持不超过 2 个节点故障),因此我的目标是size
通过更改池本身的设置将参数减少到 3,从而增加可用池空间。
我浏览了 Proxmox 和 Ceph 文档,但找不到有关减少size
实时池参数的信息。我确实找到了设置size
参数的命令,但不确定我可能遇到的任何潜在问题,或者是否可以减少size
实时池上的参数。不幸的是,我也无法运行任何测试,因为该池正在生产中运行。
我已经考虑过简单地创建一个具有适当参数的新池,但如果可以的话,我宁愿节省将数据从一个池迁移到另一个池的时间。
提前致谢。
编辑:
root@node1:~# ceph osd pool ls detail
pool 4 'ceph-5' replicated size 5 min_size 1 crush_rule 0 object_hash rjenkins pg_num 512 pgp_num 512 autoscale_mode warn last_change 42673 flags hashpspool,selfmanaged_snaps stripe_width 0 application rbd
在纠删码池中,您无法减小池的大小,这仅适用于复制池。由于您提到 min_size 1 您可能有一个复制池。您可以通过添加
ceph osd pool ls detail
问题来确认吗?如有必要,屏蔽任何敏感数据。更改池的大小不应该太具有侵略性,但当然很大程度上取决于实际负载和性能,因为它会导致一些数据移动。顺便说一句,不要使用 min_size 1 而是使用 2,即使 size 为 3。如果某些磁盘/服务器发生故障并且您只剩下 1 个副本但客户端仍然能够写入集群,则您可能会面临数据丢失的风险。当 min_size 为 2 时,只要只剩下 1 个副本,I/O 就会停止,直到您恢复。但数据丢失的风险降低了。