12.3. 从系统中删除旧磁盘并安装替换磁盘
在容器主机上,使用您要替换的 OSD,从系统中删除旧磁盘并安装替换磁盘。
先决条件:
- 验证设备 ID 是否已更改:更多信息请参阅 第 12.1 节 “确定是否存在设备名称更改”。
ceph-volume 命令存在于 Ceph 容器中,但没有安装到 overcloud 节点上。创建一个别名,使 ceph-volume 命令能够在 Ceph 容器内运行 ceph-volume 二进制文件。然后,使用 ceph-volume 命令清理新磁盘,并将它添加为 OSD。
流程
确保失败的 OSD 没有运行:
systemctl stop ceph-osd@27
systemctl stop ceph-osd@27Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别 ceph 容器镜像的镜像 ID,并将其存储在名为
IMG的环境变量中:IMG=$(podman images | grep ceph | awk {'print $3'})IMG=$(podman images | grep ceph | awk {'print $3'})Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
ceph-volume命令别名,使其在$IMGCeph 容器内运行,使用ceph-volume入口点和相关目录:alias ceph-volume="podman run --rm --privileged --net=host --ipc=host -v /run/lock/lvm:/run/lock/lvm:z -v /var/run/udev/:/var/run/udev/:z -v /dev:/dev -v /etc/ceph:/etc/ceph:z -v /var/lib/ceph/:/var/lib/ceph/:z -v /var/log/ceph/:/var/log/ceph/:z --entrypoint=ceph-volume $IMG --cluster ceph"
alias ceph-volume="podman run --rm --privileged --net=host --ipc=host -v /run/lock/lvm:/run/lock/lvm:z -v /var/run/udev/:/var/run/udev/:z -v /dev:/dev -v /etc/ceph:/etc/ceph:z -v /var/lib/ceph/:/var/lib/ceph/:z -v /var/log/ceph/:/var/log/ceph/:z --entrypoint=ceph-volume $IMG --cluster ceph"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 aliased 命令是否已成功运行:
ceph-volume lvm list
ceph-volume lvm listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查您的新 OSD 设备是否还没有作为 LVM 的一部分。使用
pvdisplay命令检查设备,并确保VG Name字段为空。将<NEW_DEVICE> 替换为新 OSD 设备的/devsections 路径:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
VG Name字段不为空,则设备将属于您必须删除的卷组。如果设备属于卷组,请使用
lvdisplay命令检查卷组中是否存在逻辑卷。将<VOLUME_GROUP> 替换为您从pvdisplay命令检索到的VG Name字段的值:lvdisplay | grep <VOLUME_GROUP>
[root@overcloud-computehci-2 ~]# lvdisplay | grep <VOLUME_GROUP> LV Path /dev/ceph-0fb0de13-fc8e-44c8-99ea-911e343191d2/osd-data-a0810722-7673-43c7-8511-2fd9db1dbbc6 VG Name ceph-0fb0de13-fc8e-44c8-99ea-911e343191d2 [root@overcloud-computehci-2 ~]#Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
LV Path字段不为空,则该设备会包含您必须删除的逻辑卷。如果新设备是逻辑卷或卷组的一部分,请删除逻辑卷、卷组和逻辑卷以及设备关联作为 LVM 系统中的物理卷。
-
将
<LV_PATH> 替换为LV Path字段的值。 -
将
<VOLUME_GROUP> 替换为VG Name字段的值。 将
<NEW_DEVICE> 替换为新 OSD 设备的/devsections 路径。lvremove --force <LV_PATH>
[root@overcloud-computehci-2 ~]# lvremove --force <LV_PATH> Logical volume "osd-data-a0810722-7673-43c7-8511-2fd9db1dbbc6" successfully removedCopy to Clipboard Copied! Toggle word wrap Toggle overflow vgremove --force <VOLUME_GROUP>
[root@overcloud-computehci-2 ~]# vgremove --force <VOLUME_GROUP> Volume group "ceph-0fb0de13-fc8e-44c8-99ea-911e343191d2" successfully removedCopy to Clipboard Copied! Toggle word wrap Toggle overflow pvremove <NEW_DEVICE>
[root@overcloud-computehci-2 ~]# pvremove <NEW_DEVICE> Labels on physical volume "/dev/sdj" successfully wiped.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
确保新 OSD 设备清理干净。在以下示例中,该设备为
/dev/sdj:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用新设备创建具有现有 OSD ID 的新 OSD,但传递
--no-systemd,以便ceph-volume不会尝试启动 OSD。这无法从容器中实现:ceph-volume lvm create --osd-id 27 --data /dev/sdj --no-systemd
ceph-volume lvm create --osd-id 27 --data /dev/sdj --no-systemdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动容器外的 OSD:
systemctl start ceph-osd@27
systemctl start ceph-osd@27Copy to Clipboard Copied! Toggle word wrap Toggle overflow