我有一个 5 节点 Proxmox 集群,使用 Ceph 作为主 VM 存储后端。Ceph 池当前配置为size
5(每个节点每个 OSD 1 个数据副本)和min_size
1。由于size
设置较高,池中的大部分可用空间都用于存储不必要的副本(Proxmox 5 节点集群最多可承受 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
答案1
在纠删码池中,您无法减少池的大小,这仅适用于复制池。由于您提到 min_size 1,因此您可能有一个复制池。您可以通过添加ceph osd pool ls detail
问题来确认吗?如有必要,请屏蔽任何敏感数据。
更改池的大小不应过于复杂,但当然在很大程度上取决于实际负载和性能,因为它会导致一些数据移动。顺便说一句,不要使用 min_size 1,而要使用 2,即使大小为 3。如果某些磁盘/服务器发生故障,并且只剩下 1 个副本,但客户端仍能写入集群,则存在数据丢失的风险。如果 min_size 为 2,则只要只剩下 1 个副本,I/O 就会停止,直到您恢复。但数据丢失的风险会降低。