10.3. ハイレベルなオブジェクト操作のトラブルシューティング

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

  • オブジェクトのリスト表示
  • 失われたオブジェクトのリスト表示
  • 失われたオブジェクトの修正
重要

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

10.3.1. 前提条件

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

10.3.2. オブジェクトのリスト表示

OSD には、ゼロ対多の配置グループを含めることができ、1 つの配置グループ (PG) 内にゼロ対多のオブジェクトを含めることができます。ceph-objectstore-tool ユーティリティーでは、OSD に保存されているオブジェクトをリスト表示することができます。

前提条件

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

手順

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

    [root@osd ~]# systemctl status ceph-osd@OSD_NUMBER

    [root@osd ~]# systemctl status ceph-osd@1

  2. コンテナー化されたデプロイメントの場合、bluestore tool にアクセスするには、次の手順に従います。

    1. クラスターに noout フラグを設定します。

      [root@mon ~]# ceph osd set noout

    2. OSD コンテナーをホストするノードにログインします。
    3. /etc/systemd/system/ceph-osd@.service ユニットファイルを /root ディレクトリーにバックアップします。

      [root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup

    4. /run/ceph-osd@OSD_ID.service-cid ファイルを /root に移動します。

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /root

    5. /etc/systemd/system/ceph-osd@.service ユニットファイルを編集し、-it --entrypoint /bin/bash オプションを podman コマンドに追加します。

      # Please do not change this file directly since it is managed by Ansible and will be overwritten
      [Unit]
      Description=Ceph OSD
      After=network.target
      
      [Service]
      EnvironmentFile=-/etc/environment
      ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid
      ExecStartPre=-/usr/bin/podman rm -f ceph-osd-%i
      ExecStart=/usr/bin/podman run -it --entrypoint /bin/bash \
        -d --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \
        --rm \
        --net=host \
        --privileged=true \
        --pid=host \
        --ipc=host \
        --cpus=2 \
        -v /dev:/dev \
        -v /etc/localtime:/etc/localtime:ro \
        -v /var/lib/ceph:/var/lib/ceph:z \
        -v /etc/ceph:/etc/ceph:z \
        -v /var/run/ceph:/var/run/ceph:z \
        -v /var/run/udev/:/var/run/udev/ \
        -v /var/log/ceph:/var/log/ceph:z \
        -e OSD_BLUESTORE=1 -e OSD_FILESTORE=0 -e OSD_DMCRYPT=0 \
        -e CLUSTER=ceph \
        -v /run/lvm/:/run/lvm/ \
        -e CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \
        -e CONTAINER_IMAGE=registry.redhat.io/rhceph/rhceph-4-rhel8:latest \
        -e OSD_ID=%i \
        -e DEBUG=stayalive \
        --name=ceph-osd-%i \
         \
        registry.redhat.io/rhceph/rhceph-4-rhel8:latest
      ExecStop=-/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`"
      KillMode=none
      Restart=always
      RestartSec=10s
      TimeoutStartSec=120
      TimeoutStopSec=15
      Type=forking
      PIDFile=/%t/%n-pid
      
      [Install]
      WantedBy=multi-user.target

    6. systemd マネージャーの設定を再ロードします。

      [root@osd ~]# systemctl daemon-reload

    7. OSD_ID に関連付けられた OSD サービスを再起動します。

      Syntax

      systemctl restart ceph-osd@OSD_ID.service

      OSD_ID を OSD の ID に置き換えます。

      [root@osd ~]# systemctl restart ceph-osd@0.service

    8. OSD_ID に関連付けられたコンテナーにログインします。

      Syntax

      podman exec -it ceph-osd-OSD_ID /bin/bash

      [root@osd ~]# podman exec -it ceph-osd-0 /bin/bash

    9. osd fsid を取得し、OSD をアクティベートして OSD の論理ボリューム (LV) をマウントします。

      Syntax

      ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid"
      ceph-volume lvm activate --bluestore OSD_ID OSD_FSID

      [root@osd ~]# ceph-volume lvm list |grep -A15 "osd\.0"|grep "osd fsid"
                    osd fsid                  087eee15-6561-40a3-8fe4-9583ba64a4ff
      [root@osd ~]# ceph-volume lvm activate --bluestore 0 087eee15-6561-40a3-8fe4-9583ba64a4ff
      Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0
      Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
      Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc --path /var/lib/ceph/osd/ceph-0 --no-mon-config
      Running command: /usr/bin/ln -snf /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc /var/lib/ceph/osd/ceph-0/block
      Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block
      Running command: /usr/bin/chown -R ceph:ceph /dev/mapper/ceph--41c69f8f--30e2--4685--9c5c--c605898c5537-osd--data--d073e8b3--0b89--4271--af5b--83045fd000dc
      Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
      Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff
       stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff.service → /usr/lib/systemd/system/ceph-volume@.service.
      Running command: /usr/bin/systemctl enable --runtime ceph-osd@0
       stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph osd@0.service → /usr/lib/systemd/system/ceph-osd@.service.
      Running command: /usr/bin/systemctl start ceph-osd@0
       stderr: Running in chroot, ignoring request: start
      --> ceph-volume lvm activate successful for osd ID: 0

  3. 配置グループに関係なく、OSD 内のすべてのオブジェクトを特定します。

    [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list

    [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list

  4. 配置グループ内のすべてのオブジェクトを特定します。

    [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op list

    [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op list

  5. オブジェクトが属する PG を特定します。

    [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list OBJECT_ID

    [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list default.region

  6. コンテナー化されたデプロイメントの場合、変更を元に戻すには、次の手順に従います。

    1. コンテナーを終了したら、/root ディレクトリーから /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

    2. systemd マネージャーの設定を再ロードします。

      [root@osd ~]# systemctl daemon-reload

    3. /run/ceph-osd@OSD_ID.service-cid ファイルを /tmp に移動します。

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp

    4. OSD_ID に関連付けられた OSD サービスを再起動します。

      Syntax

      [root@osd ~]# systemctl restart ceph-osd@OSD_ID.service

      [root@osd ~]# systemctl restart ceph-osd@0.service

関連情報

10.3.3. 失われたオブジェクトのリスト表示

OSD は、オブジェクトを 失われた または 存在しない オブジェクトとしてマークできます。ceph-objectstore-tool を使用すると、OSD 内に保存されている 失われたオブジェクトおよび存在しないオブジェクト をリスト表示できます。

前提条件

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

手順

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

    [root@osd ~]# systemctl status ceph-osd@OSD_NUMBER

    [root@osd ~]# systemctl status ceph-osd@1

  2. コンテナー化されたデプロイメントの場合、bluestore tool にアクセスするには、次の手順に従います。

    1. クラスターに noout フラグを設定します。

      [root@mon ~]# ceph osd set noout

    2. OSD コンテナーをホストするノードにログインします。
    3. /etc/systemd/system/ceph-osd@.service ユニットファイルを /root ディレクトリーにバックアップします。

      [root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup

    4. /run/ceph-osd@OSD_ID.service-cid ファイルを /root に移動します。

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /root

    5. /etc/systemd/system/ceph-osd@.service ユニットファイルを編集し、-it --entrypoint /bin/bash オプションを podman コマンドに追加します。

      # Please do not change this file directly since it is managed by Ansible and will be overwritten
      [Unit]
      Description=Ceph OSD
      After=network.target
      
      [Service]
      EnvironmentFile=-/etc/environment
      ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid
      ExecStartPre=-/usr/bin/podman rm -f ceph-osd-%i
      ExecStart=/usr/bin/podman run -it --entrypoint /bin/bash \
        -d --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \
        --rm \
        --net=host \
        --privileged=true \
        --pid=host \
        --ipc=host \
        --cpus=2 \
        -v /dev:/dev \
        -v /etc/localtime:/etc/localtime:ro \
        -v /var/lib/ceph:/var/lib/ceph:z \
        -v /etc/ceph:/etc/ceph:z \
        -v /var/run/ceph:/var/run/ceph:z \
        -v /var/run/udev/:/var/run/udev/ \
        -v /var/log/ceph:/var/log/ceph:z \
        -e OSD_BLUESTORE=1 -e OSD_FILESTORE=0 -e OSD_DMCRYPT=0 \
        -e CLUSTER=ceph \
        -v /run/lvm/:/run/lvm/ \
        -e CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \
        -e CONTAINER_IMAGE=registry.redhat.io/rhceph/rhceph-4-rhel8:latest \
        -e OSD_ID=%i \
        -e DEBUG=stayalive \
        --name=ceph-osd-%i \
         \
        registry.redhat.io/rhceph/rhceph-4-rhel8:latest
      ExecStop=-/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`"
      KillMode=none
      Restart=always
      RestartSec=10s
      TimeoutStartSec=120
      TimeoutStopSec=15
      Type=forking
      PIDFile=/%t/%n-pid
      
      [Install]
      WantedBy=multi-user.target

    6. systemd マネージャーの設定を再ロードします。

      [root@osd ~]# systemctl daemon-reload

    7. OSD_ID に関連付けられた OSD サービスを再起動します。

      Syntax

      systemctl restart ceph-osd@OSD_ID.service

      OSD_ID を OSD の ID に置き換えます。

      [root@osd ~]# systemctl restart ceph-osd@0.service

    8. OSD_ID に関連付けられたコンテナーにログインします。

      Syntax

      podman exec -it ceph-osd-OSD_ID /bin/bash

      [root@osd ~]# podman exec -it ceph-osd-0 /bin/bash

    9. osd fsid を取得し、OSD をアクティベートして OSD の論理ボリューム (LV) をマウントします。

      Syntax

      ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid"
      ceph-volume lvm activate --bluestore OSD_ID OSD_FSID

      [root@osd ~]# ceph-volume lvm list |grep -A15 "osd\.0"|grep "osd fsid"
                    osd fsid                  087eee15-6561-40a3-8fe4-9583ba64a4ff
      [root@osd ~]# ceph-volume lvm activate --bluestore 0 087eee15-6561-40a3-8fe4-9583ba64a4ff
      Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0
      Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
      Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc --path /var/lib/ceph/osd/ceph-0 --no-mon-config
      Running command: /usr/bin/ln -snf /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc /var/lib/ceph/osd/ceph-0/block
      Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block
      Running command: /usr/bin/chown -R ceph:ceph /dev/mapper/ceph--41c69f8f--30e2--4685--9c5c--c605898c5537-osd--data--d073e8b3--0b89--4271--af5b--83045fd000dc
      Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
      Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff
       stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff.service → /usr/lib/systemd/system/ceph-volume@.service.
      Running command: /usr/bin/systemctl enable --runtime ceph-osd@0
       stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph osd@0.service → /usr/lib/systemd/system/ceph-osd@.service.
      Running command: /usr/bin/systemctl start ceph-osd@0
       stderr: Running in chroot, ignoring request: start
      --> ceph-volume lvm activate successful for osd ID: 0

  3. ceph-objectstore-tool ユーティリティーを使用して、失われたオブジェクトおよび存在しないオブジェクト のオブジェクトをリスト表示します。適切な状況を選択します。

    1. 失われたすべてのオブジェクトをリストします。

      [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list-lost

      [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list-lost

    2. 配置グループ内の失われたすべてのオブジェクトをリストします。

      [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op list-lost

      [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op list-lost

    3. 失われたオブジェクトをその識別子でリストします。

      [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list-lost OBJECT_ID

      [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list-lost default.region

  4. コンテナー化されたデプロイメントの場合、変更を元に戻すには、次の手順に従います。

    1. コンテナーを終了したら、/root ディレクトリーから /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

    2. systemd マネージャーの設定を再ロードします。

      [root@osd ~]# systemctl daemon-reload

    3. /run/ceph-osd@OSD_ID.service-cid ファイルを /tmp に移動します。

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp

    4. OSD_ID に関連付けられた OSD サービスを再起動します。

      Syntax

      [root@osd ~]# systemctl restart ceph-osd@OSD_ID.service

      [root@osd ~]# systemctl restart ceph-osd@0.service

関連情報

10.3.4. 失われたオブジェクトの修正

ceph-objectstore-tool ユーティリティーを使用して、Ceph OSD に保存されている 失われたオブジェクトおよび存在しないオブジェクト をリスト表示し、修正することができます。この手順は、レガシーオブジェクトにのみ適用されます。

前提条件

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

手順

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

    構文

    [root@osd ~]# systemctl status ceph-osd@OSD_NUMBER

    [root@osd ~]# systemctl status ceph-osd@1

  2. コンテナー化されたデプロイメントの場合、bluestore tool にアクセスするには、次の手順に従います。

    1. クラスターに noout フラグを設定します。

      [root@mon ~]# ceph osd set noout

    2. OSD コンテナーをホストするノードにログインします。
    3. /etc/systemd/system/ceph-osd@.service ユニットファイルを /root ディレクトリーにバックアップします。

      [root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup

    4. /run/ceph-osd@OSD_ID.service-cid ファイルを /root に移動します。

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /root

    5. /etc/systemd/system/ceph-osd@.service ユニットファイルを編集し、-it --entrypoint /bin/bash オプションを podman コマンドに追加します。

      # Please do not change this file directly since it is managed by Ansible and will be overwritten
      [Unit]
      Description=Ceph OSD
      After=network.target
      
      [Service]
      EnvironmentFile=-/etc/environment
      ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid
      ExecStartPre=-/usr/bin/podman rm -f ceph-osd-%i
      ExecStart=/usr/bin/podman run -it --entrypoint /bin/bash \
        -d --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \
        --rm \
        --net=host \
        --privileged=true \
        --pid=host \
        --ipc=host \
        --cpus=2 \
        -v /dev:/dev \
        -v /etc/localtime:/etc/localtime:ro \
        -v /var/lib/ceph:/var/lib/ceph:z \
        -v /etc/ceph:/etc/ceph:z \
        -v /var/run/ceph:/var/run/ceph:z \
        -v /var/run/udev/:/var/run/udev/ \
        -v /var/log/ceph:/var/log/ceph:z \
        -e OSD_BLUESTORE=1 -e OSD_FILESTORE=0 -e OSD_DMCRYPT=0 \
        -e CLUSTER=ceph \
        -v /run/lvm/:/run/lvm/ \
        -e CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \
        -e CONTAINER_IMAGE=registry.redhat.io/rhceph/rhceph-4-rhel8:latest \
        -e OSD_ID=%i \
        -e DEBUG=stayalive \
        --name=ceph-osd-%i \
         \
        registry.redhat.io/rhceph/rhceph-4-rhel8:latest
      ExecStop=-/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`"
      KillMode=none
      Restart=always
      RestartSec=10s
      TimeoutStartSec=120
      TimeoutStopSec=15
      Type=forking
      PIDFile=/%t/%n-pid
      
      [Install]
      WantedBy=multi-user.target

    6. systemd マネージャーの設定を再ロードします。

      [root@osd ~]# systemctl daemon-reload

    7. OSD_ID に関連付けられた OSD サービスを再起動します。

      Syntax

      systemctl restart ceph-osd@OSD_ID.service

      OSD_ID を OSD の ID に置き換えます。

      [root@osd ~]# systemctl restart ceph-osd@0.service

    8. OSD_ID に関連付けられたコンテナーにログインします。

      Syntax

      podman exec -it ceph-osd-OSD_ID /bin/bash

      [root@osd ~]# podman exec -it ceph-osd-0 /bin/bash

    9. osd fsid を取得し、OSD をアクティベートして OSD の論理ボリューム (LV) をマウントします。

      Syntax

      ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid"
      ceph-volume lvm activate --bluestore OSD_ID OSD_FSID

      [root@osd ~]# ceph-volume lvm list |grep -A15 "osd\.0"|grep "osd fsid"
                    osd fsid                  087eee15-6561-40a3-8fe4-9583ba64a4ff
      [root@osd ~]# ceph-volume lvm activate --bluestore 0 087eee15-6561-40a3-8fe4-9583ba64a4ff
      Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0
      Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
      Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc --path /var/lib/ceph/osd/ceph-0 --no-mon-config
      Running command: /usr/bin/ln -snf /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc /var/lib/ceph/osd/ceph-0/block
      Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block
      Running command: /usr/bin/chown -R ceph:ceph /dev/mapper/ceph--41c69f8f--30e2--4685--9c5c--c605898c5537-osd--data--d073e8b3--0b89--4271--af5b--83045fd000dc
      Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0
      Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff
       stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff.service → /usr/lib/systemd/system/ceph-volume@.service.
      Running command: /usr/bin/systemctl enable --runtime ceph-osd@0
       stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph osd@0.service → /usr/lib/systemd/system/ceph-osd@.service.
      Running command: /usr/bin/systemctl start ceph-osd@0
       stderr: Running in chroot, ignoring request: start
      --> ceph-volume lvm activate successful for osd ID: 0

  3. 失われたレガシーオブジェクトをすべてリスト表示します。

    構文

    ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost --dry-run

    [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost --dry-run

  4. ceph-objectstore-tool ユーティリティーを使用して、ceph ユーザーとして失われたオブジェクトおよび存在しないオブジェクト を修正します。適切な状況を選択します。

    • 失われたオブジェクトをすべて修正します。

      構文

      su - ceph -c 'ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost'

      [root@osd ~]# su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost'

    • 配置グループ内の失われたすべてのオブジェクトを修正します。

      su - ceph -c 'ceph-objectstore-tool --data-path _PATH_TO_OSD_ --pgid _PG_ID_ --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'

    • 失われたオブジェクトを識別子で修正します。

      構文

      su - ceph -c 'ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost OBJECT_ID'

      [root@osd ~]# su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost default.region'

  5. コンテナー化されたデプロイメントの場合、変更を元に戻すには、次の手順に従います。

    1. コンテナーを終了したら、/root ディレクトリーから /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

    2. systemd マネージャーの設定を再ロードします。

      [root@osd ~]# systemctl daemon-reload

    3. /run/ceph-osd@OSD_ID.service-cid ファイルを /tmp に移動します。

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp

    4. OSD_ID に関連付けられた OSD サービスを再起動します。

      Syntax

      [root@osd ~]# systemctl restart ceph-osd@OSD_ID.service

      [root@osd ~]# systemctl restart ceph-osd@0.service

関連情報