8.2. 低级对象操作故障排除
作为存储管理员,您可以使用 ceph-objectstore-tool
程序执行低级对象操作。ceph-objectstore-tool
实用程序支持以下低级别对象操作:
- 操作对象的内容
- 删除对象
- 列出对象映射(OMAP)
- 处理 OMAP 标头
- 操作 OMAP 密钥
- 列出对象的属性
- 操作对象的属性键
操作对象可能会导致无法恢复的数据丢失。在使用 ceph-objectstore-tool
实用程序前,请联系红帽支持。
先决条件
- 对 Ceph OSD 节点的 root 级别访问权限。
8.2.1. 操作对象的内容
使用 ceph-objectstore-tool
实用程序,您可以在对象上获取或设置字节。
在对象上设置字节可能会导致无法恢复的数据丢失。为防止数据丢失,请对对象进行备份副本。
先决条件
- 对 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 或放置组(PG)的对象来查找对象。
登录到 OSD 容器:
语法
cephadm shell --name osd.OSD_ID
示例
[root@host01 ~]# cephadm shell --name osd.0
在对象中设置字节前,请进行备份和对象的工作副本:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ get-bytes > OBJECT_FILE_NAME
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \ '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ get-bytes > zone_info.default.backup [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \ '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ get-bytes > zone_info.default.working-copy
- 编辑工作复制对象文件,并相应地修改对象内容。
设置对象的字节:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ set-bytes < OBJECT_FILE_NAME
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \ '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ set-bytes < zone_info.default.working-copy
8.2.2. 删除对象
使用 ceph-objectstore-tool
实用程序删除对象。通过移除对象,其内容和引用将从 PG 中删除。
对象被删除后,您就无法重新创建对象。
先决条件
- 对 Ceph OSD 节点的 root 级别访问权限。
-
停止
ceph-osd
守护进程。
流程
登录到 OSD 容器:
语法
cephadm shell --name osd.OSD_ID
示例
[root@host01 ~]# cephadm shell --name osd.0
删除对象:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ remove
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \ '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ remove
8.2.3. 列出对象映射
使用 ceph-objectstore-tool
实用程序列出对象映射(OMAP)的内容。输出为您提供了键列表。
先决条件
- 对 Ceph OSD 节点的 root 级别访问权限。
-
停止
ceph-osd
守护进程。
流程
验证适当的 OSD 是否为 down:
语法
systemctl status ceph-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 --pgid PG_ID \ OBJECT \ list-omap
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \ '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ list-omap
8.2.4. 操作对象映射标头
ceph-objectstore-tool
实用程序使用与对象键关联的值输出对象映射(OMAP)标头。
先决条件
- 对 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 \ --pgid PG_ID OBJECT \ get-omaphdr > OBJECT_MAP_FILE_NAME
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ get-omaphdr > zone_info.default.omaphdr.txt
设置对象映射标头:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ get-omaphdr < OBJECT_MAP_FILE_NAME
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ set-omaphdr < zone_info.default.omaphdr.txt
8.2.5. 操作对象映射键
使用 ceph-objectstore-tool
程序更改对象映射(OMAP)密钥。您需要提供数据路径、放置组标识符(PG ID)、对象和 OMAP 中的密钥。
先决条件
- 对 Ceph OSD 节点的 root 级别访问权限。
-
停止
ceph-osd
守护进程。
流程
登录到 OSD 容器:
语法
cephadm shell --name osd.OSD_ID
示例
[root@host01 ~]# cephadm shell --name osd.0
获取对象映射键:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ get-omap KEY > OBJECT_MAP_FILE_NAME
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ get-omap "" > zone_info.default.omap.txt
设置对象映射键:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ set-omap KEY < OBJECT_MAP_FILE_NAME
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ set-omap "" < zone_info.default.omap.txt
删除对象映射键:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ rm-omap KEY
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ rm-omap ""
8.2.6. 列出对象的属性
使用 ceph-objectstore-tool
实用程序列出对象的属性。输出为您提供对象的键和值。
先决条件
- 对 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 \ --pgid PG_ID OBJECT \ list-attrs
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ list-attrs
8.2.7. 操作对象属性键
使用 ceph-objectstore-tool
程序更改对象的属性。要操作对象的属性,您需要数据路径、放置组标识符(PG ID)、对象和对象属性中的键。
先决条件
- 对 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 \ --pgid PG_ID OBJECT \ get-attr KEY > OBJECT_ATTRS_FILE_NAME
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ get-attr "oid" > zone_info.default.attr.txt
设置对象的属性:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ set-attr KEY < OBJECT_ATTRS_FILE_NAME
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ set-attr "oid"<zone_info.default.attr.txt
删除对象的属性:
语法
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ rm-attr KEY
示例
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ rm-attr "oid"
其它资源
- 有关 Red Hat Ceph Storage 支持,请查看 红帽客户门户网站。