2.3. レプリカを 1 つ含まれるストレージクラス


アプリケーションで使用するレプリカが 1 つ含まれるストレージクラスを作成できます。これにより、冗長なデータコピーが回避され、アプリケーションレベルでの復元管理が可能になります。

警告

この機能を有効にすると、データレプリケーションのない単一のレプリカプールが作成され、アプリケーションに独自のレプリケーションがない場合は、データ損失、データ破損、および潜在的なシステム不安定のリスクが増加します。OSD が失われると、この機能を回復するのに長期間の停止を伴う手順が必要になります。すべてのアプリケーションのデータが失われる可能性があります。OSD に障害が発生した場合は、すべてのアプリケーションを再作成する必要があります。

手順

  1. 次のコマンドを使用して単一レプリカ機能を有効にします。

    $ oc patch storagecluster ocs-storagecluster -n openshift-storage --type json --patch '[{ "op": "replace", "path": "/spec/managedResources/cephNonResilientPools/enable", "value": true }]'
  2. storageclusterReady 状態であることを確認します。

    $ oc get storagecluster

    出力例:

    NAME                 AGE   PHASE   EXTERNAL   CREATED AT             VERSION
    ocs-storagecluster   10m   Ready              2024-02-05T13:56:15Z   4.15.0
  3. 各障害ドメインに新しい cephblockpool が作成されます。cephblockpoolsReady 状態であることを確認します。

    $ oc get cephblockpools

    出力例:

    NAME                                          PHASE
    ocs-storagecluster-cephblockpool              Ready
    ocs-storagecluster-cephblockpool-us-east-1a   Ready
    ocs-storagecluster-cephblockpool-us-east-1b   Ready
    ocs-storagecluster-cephblockpool-us-east-1c   Ready
  4. 新しいストレージクラスが作成されたことを確認します。

    $ oc get storageclass

    出力例:

    NAME                                        PROVISIONER                             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    gp2 (default)                               kubernetes.io/aws-ebs                   Delete          WaitForFirstConsumer   true                   104m
    gp2-csi                                     ebs.csi.aws.com                         Delete          WaitForFirstConsumer   true                   104m
    gp3-csi                                     ebs.csi.aws.com                         Delete          WaitForFirstConsumer   true                   104m
    ocs-storagecluster-ceph-non-resilient-rbd   openshift-storage.rbd.csi.ceph.com      Delete          WaitForFirstConsumer   true                   46m
    ocs-storagecluster-ceph-rbd                 openshift-storage.rbd.csi.ceph.com      Delete          Immediate              true                   52m
    ocs-storagecluster-cephfs                   openshift-storage.cephfs.csi.ceph.com   Delete          Immediate              true                   52m
    openshift-storage.noobaa.io                 openshift-storage.noobaa.io/obc         Delete          Immediate              false                  50m
  5. 新しい OSD Pod (3 つの osd-prepare Pod と 3 つの追加 Pod ) が作成されます。新しい OSD Pod が Running 状態であることを確認します。

    $ oc get pods | grep osd

    出力例:

    rook-ceph-osd-0-6dc76777bc-snhnm                                  2/2     Running     0               9m50s
    rook-ceph-osd-1-768bdfdc4-h5n7k                                   2/2     Running     0               9m48s
    rook-ceph-osd-2-69878645c4-bkdlq                                  2/2     Running     0               9m37s
    rook-ceph-osd-3-64c44d7d76-zfxq9                                  2/2     Running     0               5m23s
    rook-ceph-osd-4-654445b78f-nsgjb                                  2/2     Running     0               5m23s
    rook-ceph-osd-5-5775949f57-vz6jp                                  2/2     Running     0               5m22s
    rook-ceph-osd-prepare-ocs-deviceset-gp2-0-data-0x6t87-59swf       0/1     Completed   0               10m
    rook-ceph-osd-prepare-ocs-deviceset-gp2-1-data-0klwr7-bk45t       0/1     Completed   0               10m
    rook-ceph-osd-prepare-ocs-deviceset-gp2-2-data-0mk2cz-jx7zv       0/1     Completed   0               10m

2.3.1. 単一レプリカから OSD が失われた後の回復

レプリカ 1 (単一レプリカを持つストレージクラス) を使用する場合は、OSD が失われた場合に確実にデータが損失します。失われた OSD は障害状態になります。OSD 喪失後に回復するには、次の手順に従います。

手順

レプリカ 1 からデータが失われた後、アプリケーションを再び実行するには、次の回復手順に従います。まず、障害が発生している OSD があるドメインを特定する必要があります。

  1. 障害が発生している OSD がどの障害ドメインにあるかわかっている場合は、次のコマンドを実行して、次の手順に必要な正確な replica1-pool-name を取得します。障害が発生している OSD がどこにあるかわからない場合は、ステップ 2 に進みます。

    $ oc get cephblockpools

    出力例:

    NAME                                          PHASE
    ocs-storagecluster-cephblockpool              Ready
    ocs-storagecluster-cephblockpool-us-south-1   Ready
    ocs-storagecluster-cephblockpool-us-south-2   Ready
    ocs-storagecluster-cephblockpool-us-south-3   Ready

    次の手順で使用するために、該当する障害ドメイン名をコピーし、ステップ 4 に進みます。

  2. 障害が発生している OSD を見つけるには、Error 状態または CrashLoopBackOff 状態の OSD Pod を見つけます。

    $ oc get pods -n openshift-storage -l app=rook-ceph-osd  | grep 'CrashLoopBackOff\|Error'
  3. 障害が発生した OSD があった replica-1 プールを特定します。

    1. 障害が発生した OSD が実行されていたノードを特定します。

      failed_osd_id=0 #replace with the ID of the failed OSD
    2. 障害が発生した OSD が実行されていたノードの failureDomainLabel を特定します。

      failure_domain_label=$(oc get storageclass ocs-storagecluster-ceph-non-resilient-rbd -o yaml | grep domainLabel |head -1 |awk -F':' '{print $2}')
      failure_domain_value=$”(oc get pods $failed_osd_id -oyaml |grep topology-location-zone |awk ‘{print $2}’)”

      出力に、障害が発生している OSD がある replica-1 プール名が表示されます。次に例を示します。

      replica1-pool-name= "ocs-storagecluster-cephblockpool-$failure_domain_value”

      $failure_domain_value は failureDomainName です。

  4. replica-1 プールを削除します。

    1. toolbox Pod に接続します。

      toolbox=$(oc get pod -l app=rook-ceph-tools -n openshift-storage -o jsonpath='{.items[*].metadata.name}')
      
      oc rsh $toolbox -n openshift-storage
    2. replica-1 プールを削除します。コマンドで、replica-1 プール名を 2 回入力する必要があることに注意してください。次に例を示します。

      ceph osd pool rm <replica1-pool-name> <replica1-pool-name> --yes-i-really-really-mean-it

      replica1-pool-name は、先ほど特定した障害ドメイン名に置き換えます。

  5. デバイスの置き換え ガイドのプラットフォームに応じて、「動作するストレージデバイスまたは障害のあるストレージデバイスの置き換え」セクションの手順に従って、障害が発生している OSD をパージします。
  6. rook-ceph operator を再起動します。

    $ oc delete pod -l rook-ceph-operator -n openshift-storage
  7. 影響を受けるアプリケーションをそのアベイラビリティーゾーン内に再作成して、同じ名前の新しいプールの使用を開始します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.