検索

10.2. コンテナー化環境での Ceph オブジェクトのトラブルシューティング

download PDF

OSD コンテナーは、レスキュー/メンテナンスモードで起動して、Ceph パッケージを OSD ノードにインストールせずに Red Hat Ceph Storage 4 の OSD を修復できます。

ceph-bluestore-tool を使用して fsck コマンドで整合性チェックを実行するか、repair コマンドで整合性チェックを実行し、エラーを修復できます。

重要

この手順は、コンテナー化されたデプロイメントのみを対象としています。ベアメタルデプロイメントの場合はこのセクションをスキップしてください。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph OSD ノードへのルートレベルのアクセス。
  • ceph-osd デーモンの停止。

手順

  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

  10. fsck および repair コマンドを実行します。

    Syntax

    ceph-bluestore-tool fsck --path /var/lib/ceph/osd/ceph-OSD_ID
    ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-OSD_ID

    [root@osd ~]# ceph-bluestore-tool fsck --path /var/lib/ceph/osd/ceph-0
    fsck success

    [root@osd ~]# ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-0
    repair success
  11. コンテナーを終了したら、/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

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

    [root@osd ~]# systemctl daemon-reload

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

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

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

    Syntax

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

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

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.