搜索

8.2. 低级对象操作故障排除

download PDF

作为存储管理员,您可以使用 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 守护进程。

流程

  1. 验证适当的 OSD 是否为 down:

    语法

    systemctl status ceph-FSID@osd.OSD_ID

    示例

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service

  2. 通过列出 OSD 或放置组(PG)的对象来查找对象。
  3. 登录到 OSD 容器:

    语法

    cephadm shell --name osd.OSD_ID

    示例

    [root@host01 ~]# cephadm shell --name osd.0

  4. 在对象中设置字节前,请进行备份和对象的工作副本:

    语法

    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

  5. 编辑工作复制对象文件,并相应地修改对象内容。
  6. 设置对象的字节:

    语法

    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 守护进程。

流程

  1. 登录到 OSD 容器:

    语法

    cephadm shell --name osd.OSD_ID

    示例

    [root@host01 ~]# cephadm shell --name osd.0

  2. 删除对象:

    语法

    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 守护进程。

流程

  1. 验证适当的 OSD 是否为 down:

    语法

    systemctl status ceph-osd@OSD_ID

    示例

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service

  2. 登录到 OSD 容器:

    语法

    cephadm shell --name osd.OSD_ID

    示例

    [root@host01 ~]# cephadm shell --name osd.0

  3. 列出对象映射:

    语法

    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 守护进程。

流程

  1. 验证适当的 OSD 是否为 down:

    语法

    systemctl status ceph-FSID@osd.OSD_ID

    示例

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service

  2. 登录到 OSD 容器:

    语法

    cephadm shell --name osd.OSD_ID

    示例

    [root@host01 ~]# cephadm shell --name osd.0

  3. 获取对象映射标头:

    语法

    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

  4. 设置对象映射标头:

    语法

    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 守护进程。

流程

  1. 登录到 OSD 容器:

    语法

    cephadm shell --name osd.OSD_ID

    示例

    [root@host01 ~]# cephadm shell --name osd.0

  2. 获取对象映射键:

    语法

    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

  3. 设置对象映射键:

    语法

    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

  4. 删除对象映射键:

    语法

    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 守护进程。

流程

  1. 验证适当的 OSD 是否为 down:

    语法

    systemctl status ceph-FSID@osd.OSD_ID

    示例

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service

  2. 登录到 OSD 容器:

    语法

    cephadm shell --name osd.OSD_ID

    示例

    [root@host01 ~]# cephadm shell --name osd.0

  3. 列出对象的属性:

    语法

    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 守护进程。

流程

  1. 验证适当的 OSD 是否为 down:

    语法

    systemctl status ceph-FSID@osd.OSD_ID

    示例

    [root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service

  2. 登录到 OSD 容器:

    语法

    cephadm shell --name osd.OSD_ID

    示例

    [root@host01 ~]# cephadm shell --name osd.0

  3. 获取对象的属性:

    语法

    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

  4. 设置对象的属性:

    语法

    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

  5. 删除对象的属性:

    语法

    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 logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.