第 8 章 Ceph 对象故障排除
作为存储管理员,您可以使用 ceph-objectstore-tool
程序执行高级别或低级对象操作。ceph-objectstore-tool
实用程序可帮助您排除与特定 OSD 或放置组中的对象相关的问题。
操作对象可能会导致无法恢复的数据丢失。在使用 ceph-objectstore-tool
实用程序前,请联系红帽支持。
先决条件
- 验证没有与网络相关的问题。
8.1. 高级对象操作故障排除
作为存储管理员,您可以使用 ceph-objectstore-tool
程序执行高级别对象操作。ceph-objectstore-tool
实用程序支持以下高级别对象操作:
- 列出对象
- 列出丢失的对象
- 修复丢失的对象
操作对象可能会导致无法恢复的数据丢失。在使用 ceph-objectstore-tool
实用程序前,请联系红帽支持。
先决条件
- 对 Ceph OSD 节点的 root 级别访问权限。
8.1.1. 列出对象
OSD 可以包含零个到多个 PG 的 PG,对放置组(PG)中的多个对象包含零。ceph-objectstore-tool
实用程序允许您列出 OSD 中存储的对象。
先决条件
- 对 Ceph OSD 节点的 root 级别访问权限。
-
停止
ceph-osd
守护进程。
流程
验证适当的 OSD 是否为 down:
语法
systemctl status ceph-FSID@osd.OSD_ID
示例
[root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
登录到 OSD 容器:
语法
cephadm shell --name osd.OSD_ID
示例
[root@host01 ~]# cephadm shell --name osd.0
识别 OSD 中的所有对象,而不考虑其放置组:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --op list
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list
识别放置组中的所有对象:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op list
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op list
识别对象所属的 PG:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --op list OBJECT_ID
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list default.region
8.1.2. 修复丢失的对象
您可以使用 ceph-objectstore-tool
实用程序列出和修复 Ceph OSD 中存储的 丢失和未找到 的对象。此流程只适用于旧的对象。
先决条件
- 对 Ceph OSD 节点的 root 级别访问权限。
-
停止
ceph-osd
守护进程。
流程
验证适当的 OSD 是否为 down:
语法
systemctl status ceph-FSID@osd.OSD_ID
示例
[root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
登录到 OSD 容器:
语法
cephadm shell --name osd.OSD_ID
示例
[root@host01 ~]# cephadm shell --name osd.0
列出所有丢失的传统对象:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost --dry-run
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost --dry-run
使用
ceph-objectstore-tool
实用程序修复 lost 和 unfound 对象。选择适当的情况:修复所有丢失的对象:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost
修复放置组中的所有丢失对象:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op fix-lost
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op fix-lost
按标识符修复丢失的对象:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost OBJECT_ID
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost default.region