9.3. 低レベルのオブジェクト操作のトラブルシューティング

ストレージ管理者は、ceph-objectstore-tool ユーティリティーを使用して低レベルのオブジェクト操作を実行することができます。ceph-objectstore-tool ユーティリティーは、以下の低レベルのオブジェクト操作をサポートします。

  • オブジェクトの内容の操作
  • オブジェクトの削除
  • オブジェクトマップ (OMAP) のリスト表示
  • OMAP ヘッダーの操作
  • OMAP キーの操作
  • オブジェクトの属性のリスト表示
  • オブジェクトの属性キーの操作
重要

オブジェクトを操作すると、回復不能なデータ損失が発生する可能性があります。ceph-objectstore-tool ユーティリティーを使用する前に、Red Hat サポートにお問い合わせください。

9.3.1. 前提条件

  • Ceph OSD ノードへのルートレベルのアクセス。

9.3.2. オブジェクトの内容の操作

ceph-objectstore-tool ユーティリティーを使用すると、オブジェクトのバイトを取得または設定できます。

重要

オブジェクトにバイト数を設定すると、回復できないデータ損失が発生する可能性があります。データの損失を防ぐには、オブジェクトのバックアップコピーを作成します。

前提条件

  • Ceph OSD ノードへのルートレベルのアクセス。
  • ceph-osd デーモンの停止。

手順

  1. 適切な OSD がダウンしていることを確認します。

    構文

    systemctl status ceph-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

9.3.3. オブジェクトの削除

ceph-objectstore-tool ユーティリティーを使用してオブジェクトを削除します。オブジェクトを削除すると、そのコンテンツと参照は配置グループ (PG) から削除されます。

重要

オブジェクトが削除されると、再作成できません。

前提条件

  • Ceph OSD ノードへのルートレベルのアクセス。
  • 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

9.3.4. オブジェクトマップのリスト表示

ceph-objectstore-tool ユーティリティーを使用して、オブジェクトマップ (OMAP) の内容をリスト表示します。この出力では、キーのリストが表示されます。

前提条件

  • Ceph OSD ノードへのルートレベルのアクセス。
  • ceph-osd デーモンの停止。

手順

  1. 適切な OSD がダウンしていることを確認します。

    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

9.3.5. オブジェクトマップヘッダーの操作

ceph-objectstore-tool ユーティリティーは、オブジェクトのキーに関連付けられた値と共にオブジェクトマップ (OMAP) ヘッダーを出力します。

前提条件

  • Ceph OSD ノードへのルートレベルのアクセス。
  • ceph-osd デーモンの停止。

手順

  1. 適切な OSD がダウンしていることを確認します。

    構文

    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

9.3.6. オブジェクトマップキーの操作

ceph-objectstore-tool ユーティリティーを使用して、オブジェクトマップ (OMAP) キーを変更します。OMAP では、データパス、配置グループ識別子 (PG ID)、オブジェクト、およびキーを指定する必要があります。

前提条件

  • Ceph OSD ノードへのルートレベルのアクセス。
  • 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 ""

9.3.7. オブジェクトの属性のリスト表示

ceph-objectstore-tool ユーティリティーを使用して、オブジェクトの属性をリスト表示します。この出力には、オブジェクトのキーと値が表示されます。

前提条件

  • Ceph OSD ノードへのルートレベルのアクセス。
  • ceph-osd デーモンの停止。

手順

  1. 適切な OSD がダウンしていることを確認します。

    構文

    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

9.3.8. オブジェクト属性キーの操作

ceph-objectstore-tool ユーティリティーを使用してオブジェクトの属性を変更します。オブジェクトの属性を操作するには、オブジェクトの属性のデータパス、配置グループ識別子 (PG ID)、オブジェクト、およびキーが必要です。

前提条件

  • Ceph OSD ノードへのルートレベルのアクセス。
  • ceph-osd デーモンを停止します。

手順

  1. 適切な OSD がダウンしていることを確認します。

    構文

    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"