10.3. 高级对象操作故障排除
作为存储管理员,您可以使用 ceph-objectstore-tool
实用程序来执行高级别对象操作。ceph-objectstore-tool
实用程序支持以下高级对象操作:
- 列出对象
- 列出丢失的对象
- 修复丢失的对象
操作对象可能会导致无法恢复的数据丢失。在使用 ceph-objectstore-tool
实用程序前,请联络红帽支持。
10.3.1. 先决条件 复制链接链接已复制到粘贴板!
- 对 Ceph OSD 节点的根级别访问权限.
10.3.2. 列出对象 复制链接链接已复制到粘贴板!
OSD 可以包含零个到多个 PG 的 PG,对放置组(PG)中的多个对象包含零。ceph-objectstore-tool
实用程序允许您列出 OSD 中存储的对象。
先决条件
- Ceph OSD 节点的根级别访问权限.
-
停止
ceph-osd
守护进程.
流程
验证适当的 OSD 是否停机:
systemctl status ceph-osd@OSD_NUMBER
[root@osd ~]# systemctl status ceph-osd@OSD_NUMBER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl status ceph-osd@1
[root@osd ~]# systemctl status ceph-osd@1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于容器化部署,要访问 bluestore 工具,请按照以下步骤执行:
在集群中设置
noout
标志。示例
ceph osd set noout
[root@mon ~]# ceph osd set noout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 登录托管 OSD 容器的节点。
将
/etc/systemd/system/ceph-osd@.service
单元文件备份到/root
目录。示例
cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/run/ceph-osd@OSD_ID.service-cid
文件移到/root
。示例
mv /run/ceph-osd@0.service-cid /root
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/systemd/system/ceph-osd@.service
单元文件,并在 podman 命令中添加-it --entrypoint /bin/bash
选项。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载
systemd
管理器配置。示例
systemctl daemon-reload
[root@osd ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动与
OSD_ID
关联的 OSD 服务。语法
systemctl restart ceph-osd@OSD_ID.service
systemctl restart ceph-osd@OSD_ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
OSD_ID
替换为 OSD 的 ID。示例
systemctl restart ceph-osd@0.service
[root@osd ~]# systemctl restart ceph-osd@0.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录与
OSD_ID
关联的容器。语法
podman exec -it ceph-osd-OSD_ID /bin/bash
podman exec -it ceph-osd-OSD_ID /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
podman exec -it ceph-osd-0 /bin/bash
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取
osd fsid
并激活 OSD 以挂载 OSD 的逻辑卷(LV)。语法
ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid" ceph-volume lvm activate --bluestore OSD_ID OSD_FSID
ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid" ceph-volume lvm activate --bluestore OSD_ID OSD_FSID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
识别 OSD 内的所有对象,而不考虑 PG:
ceph-objectstore-tool --data-path PATH_TO_OSD --op list
[root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list
[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别 PG 中的所有对象:
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op list
[root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op list
[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别对象所属的 PG:
ceph-objectstore-tool --data-path PATH_TO_OSD --op list OBJECT_ID
[root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list OBJECT_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list default.region
[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list default.region
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于容器化部署,要恢复更改,请按照以下步骤执行:
退出容器后,从
/root
目录中复制/etc/systemd/system/ceph-osd@.service
单元文件。示例
cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.modified cp /root/ceph-osd@.service.backup /etc/systemd/system/ceph-osd@.service
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.modified [root@osd ~]# cp /root/ceph-osd@.service.backup /etc/systemd/system/ceph-osd@.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载
systemd
管理器配置。示例
systemctl daemon-reload
[root@osd ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/run/ceph-osd@OSD_ID.service-cid
文件移到/tmp
。示例
mv /run/ceph-osd@0.service-cid /tmp
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动与
OSD_ID
关联的 OSD 服务。语法
systemctl restart ceph-osd@OSD_ID.service
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl restart ceph-osd@0.service
[root@osd ~]# systemctl restart ceph-osd@0.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.3. 列出丢失的对象 复制链接链接已复制到粘贴板!
OSD 可以将对象标记为 lost 或 unfound。您可以使用 ceph-objectstore-tool
列出 OSD 中存储的 lost 和 unfound 对象。
先决条件
- Ceph OSD 节点的根级别访问权限.
-
停止
ceph-osd
守护进程.
流程
验证适当的 OSD 是否停机:
systemctl status ceph-osd@OSD_NUMBER
[root@osd ~]# systemctl status ceph-osd@OSD_NUMBER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl status ceph-osd@1
[root@osd ~]# systemctl status ceph-osd@1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于容器化部署,要访问 bluestore 工具,请按照以下步骤执行:
在集群中设置
noout
标志。示例
ceph osd set noout
[root@mon ~]# ceph osd set noout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 登录托管 OSD 容器的节点。
将
/etc/systemd/system/ceph-osd@.service
单元文件备份到/root
目录。示例
cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/run/ceph-osd@OSD_ID.service-cid
文件移到/root
。示例
mv /run/ceph-osd@0.service-cid /root
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/systemd/system/ceph-osd@.service
单元文件,并在 podman 命令中添加-it --entrypoint /bin/bash
选项。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载
systemd
管理器配置。示例
systemctl daemon-reload
[root@osd ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动与
OSD_ID
关联的 OSD 服务。语法
systemctl restart ceph-osd@OSD_ID.service
systemctl restart ceph-osd@OSD_ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
OSD_ID
替换为 OSD 的 ID。示例
systemctl restart ceph-osd@0.service
[root@osd ~]# systemctl restart ceph-osd@0.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录与
OSD_ID
关联的容器。语法
podman exec -it ceph-osd-OSD_ID /bin/bash
podman exec -it ceph-osd-OSD_ID /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
podman exec -it ceph-osd-0 /bin/bash
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取
osd fsid
并激活 OSD 以挂载 OSD 的逻辑卷(LV)。语法
ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid" ceph-volume lvm activate --bluestore OSD_ID OSD_FSID
ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid" ceph-volume lvm activate --bluestore OSD_ID OSD_FSID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用
ceph-objectstore-tool
实用程序列出 lost 和 unfound 对象。选择适当的情况:列出所有丢失的对象:
ceph-objectstore-tool --data-path PATH_TO_OSD --op list-lost
[root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list-lost
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list-lost
[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list-lost
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出放置组中的所有丢失对象:
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op list-lost
[root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op list-lost
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op list-lost
[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op list-lost
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 按其标识符列出丢失的对象:
ceph-objectstore-tool --data-path PATH_TO_OSD --op list-lost OBJECT_ID
[root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list-lost OBJECT_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list-lost default.region
[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list-lost default.region
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对于容器化部署,要恢复更改,请按照以下步骤执行:
退出容器后,从
/root
目录中复制/etc/systemd/system/ceph-osd@.service
单元文件。示例
cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.modified cp /root/ceph-osd@.service.backup /etc/systemd/system/ceph-osd@.service
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.modified [root@osd ~]# cp /root/ceph-osd@.service.backup /etc/systemd/system/ceph-osd@.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载
systemd
管理器配置。示例
systemctl daemon-reload
[root@osd ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/run/ceph-osd@OSD_ID.service-cid
文件移到/tmp
。示例
mv /run/ceph-osd@0.service-cid /tmp
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动与
OSD_ID
关联的 OSD 服务。语法
systemctl restart ceph-osd@OSD_ID.service
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl restart ceph-osd@0.service
[root@osd ~]# systemctl restart ceph-osd@0.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3.4. 修复丢失的对象 复制链接链接已复制到粘贴板!
您可以使用 ceph-objectstore-tool
实用程序列出和修复 Ceph OSD 中存储的、未找到 的对象。这个过程只适用于旧对象。
先决条件
- Ceph OSD 节点的根级别访问权限.
-
停止
ceph-osd
守护进程.
流程
验证适当的 OSD 是否停机:
语法
systemctl status ceph-osd@OSD_NUMBER
[root@osd ~]# systemctl status ceph-osd@OSD_NUMBER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl status ceph-osd@1
[root@osd ~]# systemctl status ceph-osd@1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于容器化部署,要访问 bluestore 工具,请按照以下步骤执行:
在集群中设置
noout
标志。示例
ceph osd set noout
[root@mon ~]# ceph osd set noout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 登录托管 OSD 容器的节点。
将
/etc/systemd/system/ceph-osd@.service
单元文件备份到/root
目录。示例
cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/run/ceph-osd@OSD_ID.service-cid
文件移到/root
。示例
mv /run/ceph-osd@0.service-cid /root
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/systemd/system/ceph-osd@.service
单元文件,并在 podman 命令中添加-it --entrypoint /bin/bash
选项。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载
systemd
管理器配置。示例
systemctl daemon-reload
[root@osd ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动与
OSD_ID
关联的 OSD 服务。语法
systemctl restart ceph-osd@OSD_ID.service
systemctl restart ceph-osd@OSD_ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
OSD_ID
替换为 OSD 的 ID。示例
systemctl restart ceph-osd@0.service
[root@osd ~]# systemctl restart ceph-osd@0.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录与
OSD_ID
关联的容器。语法
podman exec -it ceph-osd-OSD_ID /bin/bash
podman exec -it ceph-osd-OSD_ID /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
podman exec -it ceph-osd-0 /bin/bash
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取
osd fsid
并激活 OSD 以挂载 OSD 的逻辑卷(LV)。语法
ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid" ceph-volume lvm activate --bluestore OSD_ID OSD_FSID
ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid" ceph-volume lvm activate --bluestore OSD_ID OSD_FSID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
列出所有丢失的旧对象:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost --dry-run
ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost --dry-run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost --dry-run
[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost --dry-run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
ceph-objectstore-tool
用户身份,使用 ceph-objectstore-tool 程序修复 丢失和未找到
的对象。选择适当的情况:修复所有丢失的对象:
语法
su - ceph -c 'ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost'
su - ceph -c 'ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost'
[root@osd ~]# su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修复 PG 中丢失的所有对象:
su - ceph -c 'ceph-objectstore-tool --data-path _PATH_TO_OSD_ --pgid _PG_ID_ --op fix-lost'
su - ceph -c 'ceph-objectstore-tool --data-path _PATH_TO_OSD_ --pgid _PG_ID_ --op fix-lost'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op fix-lost'
[root@osd ~]# su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op fix-lost'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用标识符修复丢失的对象:
语法
su - ceph -c 'ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost OBJECT_ID'
su - ceph -c 'ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost OBJECT_ID'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost default.region'
[root@osd ~]# su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost default.region'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对于容器化部署,要恢复更改,请按照以下步骤执行:
退出容器后,从
/root
目录中复制/etc/systemd/system/ceph-osd@.service
单元文件。示例
cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.modified cp /root/ceph-osd@.service.backup /etc/systemd/system/ceph-osd@.service
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.modified [root@osd ~]# cp /root/ceph-osd@.service.backup /etc/systemd/system/ceph-osd@.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新加载
systemd
管理器配置。示例
systemctl daemon-reload
[root@osd ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
/run/ceph-osd@OSD_ID.service-cid
文件移到/tmp
。示例
mv /run/ceph-osd@0.service-cid /tmp
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动与
OSD_ID
关联的 OSD 服务。语法
systemctl restart ceph-osd@OSD_ID.service
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
systemctl restart ceph-osd@0.service
[root@osd ~]# systemctl restart ceph-osd@0.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow