9.8.4. 使用标记和替换方法从 FileStore 迁移到 BlueStore
从 FileStore 迁移到 BlueStore 最简单的方法是依次标记每个设备,等待数据在存储集群中复制,重新置备 OSD,然后再次将其标记为"in"。
前提条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
-
根访问节点。
流程
将下列变量 OSD_ID 替换为 ODS 标识号。
找到要替换的 FileStore OSD。
获取 OSD 标识号:
ceph osd tree
[root@ceph-client ~]# ceph osd treeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确定 OSD 是否使用 FileStore 还是 BlueStore:
语法
ceph osd metadata OSD_ID | grep osd_objectstore
ceph osd metadata OSD_ID | grep osd_objectstoreCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
ceph osd metadata 0 | grep osd_objectstore
[root@ceph-client ~]# ceph osd metadata 0 | grep osd_objectstore "osd_objectstore": "filestore",Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看 FileStore 设备与 BlueStore 设备的当前计数:
ceph osd count-metadata osd_objectstore
[root@ceph-client ~]# ceph osd count-metadata osd_objectstoreCopy to Clipboard Copied! Toggle word wrap Toggle overflow
将 FileStore OSD 标记为 out:
ceph osd out OSD_ID
ceph osd out OSD_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 等待数据从 OSD 迁出:
while ! ceph osd safe-to-destroy OSD_ID ; do sleep 60 ; done
while ! ceph osd safe-to-destroy OSD_ID ; do sleep 60 ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 停止 OSD:
systemctl stop ceph-osd@OSD_ID
systemctl stop ceph-osd@OSD_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 捕获此 OSD 正在使用的设备:
mount | grep /var/lib/ceph/osd/ceph-OSD_ID
mount | grep /var/lib/ceph/osd/ceph-OSD_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 卸载 OSD:
umount /var/lib/ceph/osd/ceph-OSD_ID
umount /var/lib/ceph/osd/ceph-OSD_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用第 5 步的值作为
DEVICE销毁 OSD 数据:ceph-volume lvm zap DEVICE
ceph-volume lvm zap DEVICECopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要成为 EXTREMELY CAREFUL,因为这会销毁设备的内容。在继续之前,不需要在该设备上使用这些数据,即存储集群处于健康状态。
注意如果 OSD 被加密,则卸载
osd-lockbox并在使用dmsetup 删除OSD 前删除加密。注意如果 OSD 包含逻辑卷,则在
ceph-volume lvm zap命令中使用--destroy选项。使存储集群知道 OSD 已销毁:
ceph osd destroy OSD_ID --yes-i-really-mean-it
[root@ceph-client ~]# ceph osd destroy OSD_ID --yes-i-really-mean-itCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DEVICE从第 5 步和相同的OSD_ID将 OSD 重新置备为 BlueStore OSD:ceph-volume lvm create --bluestore --data DEVICE --osd-id OSD_ID
[root@ceph-client ~]# ceph-volume lvm create --bluestore --data DEVICE --osd-id OSD_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重复此步骤。
注意只要您确保存储集群在销毁任何 OSD 之前存储集群为
HEALTH_OK,新的 BlueStore OSD 的重填操作可以与排空下一个 FileStore OSD 同时进行。如果不这样做,将降低数据的冗余,并增加风险,或者降低数据丢失。