検索

2.2. ディスクの失敗

download PDF

Ceph は耐障害性を確保できるように設計されているため、Ceph はデータを損失せずに動作が degraded の状態になっています。Ceph は、データストレージドライブに障害が発生してもも引き続き動作します。degraded 状態は、他の OSD に保存されるデータの追加コピーがストレージクラスター内の他の OSD に自動的にバックフィルされることを意味します。OSD が down としてマークされる場合は、ドライブに障害が発生したことを意味します。

ドライブに障害が発生すると、最初に OSD ステータスは down になりますが、ストレージクラスター内 (in) に残ります。ネットワークの問題は、実際に起動 (up) していても OSD をダウン (down) としてマークすることもできます。まず、環境内のネットワークの問題を確認します。ネットワークが問題がないことを確認する場合は、OSD ドライブが失敗した可能性があります。

最新のサーバーは通常、ホットスワップ可能なドライブでデプロイして、障害が発生したドライブをプルし、ノードを停止せずに新しいドライブに置き換えます。ただし、Ceph では、OSD のソフトウェア定義部分を削除する必要もあります。

2.2.1. 障害のある OSD ディスクの置き換え

OSD を置き換える一般的な手順には、OSD をストレージクラスターから削除し、ドライブを置き換えてから OSD を再作成する必要があります。

重要

BlueStore OSD のデータベースパーティションが含まれる BlueStore の block.db ディスクを置き換える場合、Red Hat は Ansible を使用したすべての OSD の再デプロイのみをサポートします。破損した block.db ファイルは、その block.db ファイルに含まれるすべての OSD に影響を与えます。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • 障害の発生したディスク。

手順

  1. ストレージクラスターの正常性を確認します。

    # ceph health
  2. CRUSH 階層で OSD の場所を特定します。

    # ceph osd tree | grep -i down
  3. OSD ノードで、OSD の起動を試行します。

    # systemctl start ceph-osd@$OSD_ID

    コマンドが OSD がすでに実行されていることを示す場合、ハートビートまたはネットワークの問題がある可能性があります。OSD を再起動できない場合は、ドライブが失敗する可能性があります。

    注記

    OSD が down すると、OSD は最終的に out とマークされます。Ceph Storage では、これは通常の動作です。OSD が out とマークすると、失敗した OSD のデータのコピーが含まれる他の OSD がバックフィルを開始し、必要な数のコピーがストレージクラスター内に存在していることを確認します。ストレージクラスターがバックフィル状態である間、クラスターの状態は degraded になります。

  4. Ceph のコンテナー化されたデプロイメントでは、OSD に関連付けられたドライブを参照し、OSD コンテナーを起動します。

    # systemctl start ceph-osd@$OSD_DRIVE

    コマンドが OSD がすでに実行されていることを示す場合、ハートビートまたはネットワークの問題がある可能性があります。OSD を再起動できない場合は、ドライブが失敗する可能性があります。

    注記

    OSD に関連付けられたドライブは、コンテナー OSD ID をドライブにマッピングして判断できます。

  5. 失敗した OSD のマウントポイントを確認します。

    注記

    Ceph のコンテナー化されたデプロイメントでは、OSD がダウンし、OSD ドライブのマウントが解除されるため、df を実行してマウントポイントを確認することはできません。別の方法を使用して、OSD ドライブが失敗したかどうかを判別します。たとえば、コンテナーノードからドライブで smartctl を実行します。

    # df -h

    OSD を再起動できない場合は、マウントポイントを確認できます。マウントポイントが表示されない場合は、OSD ドライブを再マウントして OSD を再起動することができます。マウントポイントを復元できない場合は、OSD ドライブが失敗している可能性があります。

    smartctl ユーティリティー cab を使用して、ドライブが正常かどうかを確認します。以下に例を示します。

    # yum install smartmontools
    # smartctl -H /dev/$DRIVE

    ドライブに障害が発生した場合は、それを置き換えなければならない場合があります。

  6. OSD プロセスを停止します。

    # systemctl stop ceph-osd@$OSD_ID
    1. FileStore を使用している場合は、ジャーナルをディスクにフラッシュします。

      # ceph osd -i $$OSD_ID --flush-journal
  7. Ceph のコンテナー化されたデプロイメントの場合には、OSD に関連付けられたドライブを参照して、OSD コンテナーを停止します。

    # systemctl stop ceph-osd@$OSD_DRIVE
  8. ストレージクラスターから OSD を削除します。

    # ceph osd out $OSD_ID
  9. 失敗した OSD がバックフィルされていることを確認します。

    # ceph -w
  10. CRUSH マップから OSD を削除します。

    # ceph osd crush remove osd.$OSD_ID
    注記

    この手順は、OSD を永続的に削除し、再デプロイしない場合にのみ必要になります。

  11. OSD の認証キーを削除します。

    # ceph auth del osd.$OSD_ID
  12. OSD のキーが一覧表示されていないことを確認します。

    # ceph auth list
  13. ストレージクラスターから OSD を削除します。

    # ceph osd rm osd.$OSD_ID
  14. 障害が発生したドライブパスのマウントを解除します。

    注記

    Ceph のコンテナー化されたデプロイメントでは、OSD がコンテナーがダウンし、OSD ドライブのマウントが解除されます。この場合、マウント解除するものがないため、この手順はスキップできます。

    # umount /var/lib/ceph/osd/$CLUSTER_NAME-$OSD_ID
  15. 物理ドライブを置き換えます。ノードのハードウェアベンダーのドキュメントを参照してください。ドライブのホットスワップが可能である場合は、障害が発生したドライブを新しいドライブに置き換えます。ドライブがホットスワップできず、ノードに複数の OSD が含まれている場合は、物理ドライブを交換するためにノードを停止する必要がある場合があります。ノードを一時的に停止する必要がある場合は、バックフィルを防ぐためにクラスターを noout に設定できます。

    # ceph osd set noout

    ドライブを置き換えて、ノードとその OSD をオンラインに戻したら、noout 設定を削除します。

    # ceph osd unset noout

    新しいドライブを /dev/ ディレクトリーの下に表示されるように、ドライブパスを書き留めて作業を続行します。

  16. OSD ドライブを特定し、ディスクをフォーマットします。
  17. OSD を再作成します。

  18. CRUSH 階層をチェックして、これが正確であることを確認します。

    # ceph osd tree

    CRUSH 階層の OSD の場所が適切でない場合は、move コマンドを使用して移動できます。

    # ceph osd crush move $BUCKET_TO_MOVE $BUCKET_TYPE=$PARENT_BUCKET
  19. OSD がオンラインであることを確認します。

2.2.2. OSD ID の保持中に OSD ドライブの置き換え

障害のある OSD ドライブを置き換える場合は、元の OSD ID および CRUSH マップエントリーを保持できます。

注記

ceph-volume lvm コマンドのデフォルトは、OSD 用の BlueStore です。FileStore OSD を使用するには、--filestore--data、および --journal オプションを使用します。

詳細は、OSD データおよびジャーナルドライブの準備 セクションを参照してください。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • 障害の発生したディスク。

手順

  1. OSD を破棄します。

    ceph osd destroy $OSD_ID --yes-i-really-mean-it

    $ ceph osd destroy 1 --yes-i-really-mean-it

  2. 必要に応じて、交換ディスクを以前使用していた場合は、ディスクを ザッピングする 必要があります。

    ceph-volume lvm zap $DEVICE

    $ ceph-volume lvm zap /dev/sdb

  3. 既存の OSD ID で新規 OSD を作成します。

    ceph-volume lvm create --osd-id $OSD_ID --data $DEVICE

    $ ceph-volume lvm create --osd-id 1 --data /dev/sdb

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.