Ceph 灾难恢复场景
一个包含三个主机的非盈利 Ceph 和 OpenStack 集群突然失去连接,并且无法在 24 小时内恢复。相应的 OSD 被手动标记为不可用。用于此数据中心的 Ceph 池按预期变为不可用。然而,一个本应最多每个数据中心有一个副本的池,结果发现其 crush 规则集存在故障。因此,该池中的一些 放置组被卡住。
$ ceph -s ... health HEALTH_WARN 1 pgs degraded; 7 pgs down; 7 pgs peering; 7 pgs recovering; 7 pgs stuck inactive; 15 pgs stuck unclean; recovery 184/1141208 degraded (0.016%) ...

将磁盘从机架式机器中取出,并通过 USB 鞋子插入笔记本电脑。为了防止数据丢失,它们的内容通过以下方式复制到单个机器:
mount /dev/sdc1 /mnt/ rsync -aX /mnt/ /var/lib/ceph/osd/ceph-$(cat /mnt/whoami)/
其中 X 是复制 xattr。日志从专用分区复制,使用
rm /var/lib/ceph/osd/ceph-$(cat /mnt/whoami)/journal dd if=/mnt/journal of=/var/lib/ceph/osd/ceph-$(cat /mnt/whoami)/journal
其中第一个 rm 删除指向目标的符号链接,而 dd 实际复制日志的内容。
将 /etc/ceph/ceph.conf 从活动集群复制到临时主机 bm4202,并安装最新的 emperor 版本。OSD 一次启动一个,以观察其进度
$ start ceph-osd id=3 $ tail -f /var/log/ceph/ceph-osd.3.log 2014-07-04 16:55:12.217359 7fa264bb1800 0 ceph version 0.72.2 (a913ded2ff138aefb8cb84d347d72164099cfd60), process ceph-osd, pid 450 ... $ ceph osd tree ... -11 2.73 host bm4202 3 0.91 osd.3 up 0 4 0.91 osd.4 up 0 5 0.91 osd.5 up 0
一段时间后,从标记为 out 的 OSD 中恢复必要的信息,并且没有更多的放置组处于卡住状态。
$ ceph -s ... pgmap v12582933: 856 pgs: 856 active+clean ...