5.4. Logical Volume Manager Storage を使用した永続ストレージ


論理ボリュームマネージャーストレージ (LVM ストレージ) は、TopoLVM CSI ドライバーを使用して、シングルノード OpenShift クラスターでローカルストレージを動的にプロビジョニングします。

LVM ストレージは、論理ボリュームマネージャーを使用してシンプロビジョニングボリュームを作成し、限られたリソースのシングルノード OpenShift クラスターでブロックストレージの動的プロビジョニングを提供します。

LVM Storage を使用すると、ボリュームグループ、永続ボリューム要求 (PVC)、ボリュームスナップショット、およびボリュームクローンを作成できます。

5.4.1. Logical Volume Manager Storage のインストール

単一ノードの OpenShift クラスターに論理ボリュームマネージャー(LVM)ストレージをインストールし、ワークロード用にストレージを動的にプロビジョニングするように設定できます。

OpenShift Container Platform CLI (oc)、OpenShift Container Platform Web コンソール、または Red Hat Advanced Cluster Management (RHACM)を使用して、シングルノード OpenShift クラスターに LVM ストレージをデプロイできます。

5.4.1.1. LVM Storage をインストールするための前提条件

LVM Storage をインストールするための前提条件は次のとおりです。

  • 最低でも 10 ミリの CPU と 100 MiB の RAM があることを確認してください。
  • すべてのマネージドクラスターに、ストレージのプロビジョニングに使用される専用のディスクがあることを確認してください。LVM Storage は、ファイルシステム署名が含まれていない空のディスクのみを使用します。確実にディスクが空で、ファイルシステム署名が含まれていないようにするには、使用する前にディスクを消去します。
  • 以前の LVM Storage のインストールで設定したストレージデバイスを再利用できるプライベート CI 環境に LVM Storage をインストールする前に、使用されていないディスクが消去されていることを確認してください。LVM Storage をインストールする前にディスクをワイプしないと、ディスクを再利用するのに手動による介入が必要になります。

    注記

    使用中のディスクは消去できません。

  • Red Hat Advanced Cluster Management (RHACM) を使用して LVM Storage をインストールする場合は、RHACM が OpenShift Container Platform クラスターにインストールされていることを確認してください。RHACM を使用した LVM Storage のインストール セクションを参照してください。

5.4.1.2. OpenShift Container Platform Web コンソールを使用した LVM ストレージのインストール

Red Hat OpenShift Container Platform OperatorHub を使用して LVM ストレージをインストールできます。

前提条件

  • シングルノード OpenShift クラスターにアクセスできます。
  • cluster-admin および Operator のインストール権限を持つアカウントを使用しています。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. Operators OperatorHub をクリックします。
  3. スクロールするか、LVM StorageFilter by keyword ボックスに入力して、LVM Storage を見つけます。
  4. Install をクリックします。
  5. Install Operator ページで、以下のオプションを設定します。

    1. stable-4.12 としての Update Channel
    2. クラスター上の特定の namespace としての Installation Mode
    3. Installed NamespaceOperator recommended namespace openshift-storage に設定します。openshift-storage namespace が存在しない場合は、Operator のインストール中に作成されます。
    4. Approval StrategyAutomatic または Manual に設定します。

      Automatic (自動) 更新を選択すると、Operator Lifecycle Manager (OLM) は介入なしに、Operator の実行中のインスタンスを自動的にアップグレードします。

      Manual 更新を選択すると、OLM は更新要求を作成します。クラスター管理者は、Operator を新しいバージョンに更新できるように更新要求を手動で承認する必要があります。

  6. Install をクリックします。

検証手順

  • インストールが成功したことを示す緑色のチェックマークが LVM ストレージに表示されていることを確認します。

5.4.1.3. RHACM を使用した LVM ストレージのインストール

LVM ストレージは、Red Hat Advanced Cluster Management (RHACM) を使用してシングルノード OpenShift クラスターにデプロイされます。RHACM に Policy オブジェクトを作成します。これは、PlacementRule リソースで指定されたセレクターに一致するマネージドクラスターに適用される際に Operator をデプロイおよび設定します。このポリシーは、後でインポートされ、配置ルールを満たすクラスターにも適用されます。

前提条件

  • cluster-admin および Operator インストール権限を持つアカウントを使用して、RHACM クラスターにアクセスします。
  • LVM ストレージによって使用される各シングルノード OpenShift クラスターの専用ディスク。
  • シングルノード OpenShift クラスターは、インポートまたは作成された RHACM によって管理される必要があります。

手順

  1. OpenShift Container Platform の認証情報を使用して RHACM CLI にログインします。
  2. ポリシーを作成する namespace を作成します。

    # oc create ns lvms-policy-ns
    Copy to Clipboard Toggle word wrap
  3. ポリシーを作成するには、次の YAML を policy-lvms-operator.yaml などの名前でファイルに保存します。

    apiVersion: apps.open-cluster-management.io/v1
    kind: PlacementRule
    metadata:
      name: placement-install-lvms
    spec:
      clusterConditions:
      - status: "True"
        type: ManagedClusterConditionAvailable
      clusterSelector: 
    1
    
        matchExpressions:
        - key: mykey
          operator: In
          values:
          - myvalue
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding-install-lvms
    placementRef:
      apiGroup: apps.open-cluster-management.io
      kind: PlacementRule
      name: placement-install-lvms
    subjects:
    - apiGroup: policy.open-cluster-management.io
      kind: Policy
      name: install-lvms
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      annotations:
        policy.open-cluster-management.io/categories: CM Configuration Management
        policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
        policy.open-cluster-management.io/standards: NIST SP 800-53
      name: install-lvms
    spec:
      disabled: false
      remediationAction: enforce
      policy-templates:
      - objectDefinition:
          apiVersion: policy.open-cluster-management.io/v1
          kind: ConfigurationPolicy
          metadata:
            name: install-lvms
          spec:
            object-templates:
            - complianceType: musthave
              objectDefinition:
                apiVersion: v1
                kind: Namespace
                metadata:
                  labels:
                    openshift.io/cluster-monitoring: "true"
                    pod-security.kubernetes.io/enforce: privileged
                    pod-security.kubernetes.io/audit: privileged
                    pod-security.kubernetes.io/warn: privileged
                  name: openshift-storage
            - complianceType: musthave
              objectDefinition:
                apiVersion: operators.coreos.com/v1
                kind: OperatorGroup
                metadata:
                  name: openshift-storage-operatorgroup
                  namespace: openshift-storage
                spec:
                  targetNamespaces:
                  - openshift-storage
            - complianceType: musthave
              objectDefinition:
                apiVersion: operators.coreos.com/v1alpha1
                kind: Subscription
                metadata:
                  name: lvms
                  namespace: openshift-storage
                spec:
                  installPlanApproval: Automatic
                  name: lvms-operator
                  source: redhat-operators
                  sourceNamespace: openshift-marketplace
            remediationAction: enforce
            severity: low
      - objectDefinition:
          apiVersion: policy.open-cluster-management.io/v1
          kind: ConfigurationPolicy
          metadata:
            name: lvms
          spec:
            object-templates:
               - complianceType: musthave
                 objectDefinition:
                   apiVersion: lvm.topolvm.io/v1alpha1
                   kind: LVMCluster
                   metadata:
                     name: my-lvmcluster
                     namespace: openshift-storage
                   spec:
                     storage:
                       deviceClasses:
                       - name: vg1
                         deviceSelector: 
    2
    
                           paths:
                           - /dev/disk/by-path/pci-0000:87:00.0-nvme-1
                           - /dev/disk/by-path/pci-0000:88:00.0-nvme-1
                         thinPoolConfig:
                           name: thin-pool-1
                           sizePercent: 90
                           overprovisionRatio: 10
                         nodeSelector: 
    3
    
                           nodeSelectorTerms:
                           - matchExpressions:
                               - key: app
                                 operator: In
                                 values:
                                 - test1
            remediationAction: enforce
            severity: low
    Copy to Clipboard Toggle word wrap
    1
    LVM ストレージをインストールするシングルノード OpenShift クラスターに設定されたラベルと一致するように、PlacementRule.spec.clusterSelector のキーと値を置き換えます。
    2
    ボリュームグループを優先ディスクに制御または制限するには、LVMCluster YAML の deviceSelector セクションでディスクのローカルパスを手動で指定します。
    3
    追加のワーカーノードのサブセットであるノードフィルターを追加するには、nodeSelector セクションに必要なフィルターを指定します。LVM Storage は、新しいノードが表示されると、追加のワーカーノードを検出して使用します。
    重要

    この nodeSelector ノードフィルターの一致は、Pod ラベルの一致と同じではありません。

  4. 次のコマンドを実行して、namespace にポリシーを作成します。

    # oc create -f policy-lvms-operator.yaml -n lvms-policy-ns 
    1
    Copy to Clipboard Toggle word wrap
    1
    policy-lvms-operator.yaml は、ポリシーが保存されるファイルの名前です。

    これにより、lvms-policy-ns namespace に PolicyPlacementRule、および PlacementBinding オブジェクトが作成されます。このポリシーは、配置ルールに一致するクラスター上に NamespaceOperatorGroupSubscription、および LVMCluster リソースを作成します。これにより、選択基準に一致するシングルノード OpenShift クラスターに Operator がデプロイされ、ストレージをプロビジョニングするために必要なリソースをセットアップするように設定されます。Operator は LVMCluster CR で指定されたすべてのディスクを使用します。ディスクが指定されていない場合、Operator はシングルノード OpenShift ノード上の未使用のディスクをすべて使用します。

    重要

    LVMCluster に追加されたデバイスは削除できません。

5.4.1.4. LVM Storage で使用するデバイスのサイズを設定する際の制限事項

LVM Storage を使用したストレージのプロビジョニングで使用できるデバイスのサイズを設定する際の制限は、次のとおりです。

  • プロビジョニングできる合計ストレージサイズは、基礎となる論理ボリュームマネージャー (LVM) シンプールのサイズとオーバープロビジョニング係数によって制限されます。
  • 論理ボリュームのサイズは、物理エクステント (PE) のサイズと論理エクステント (LE) のサイズによって異なります。

    • PE および LE のサイズは、物理デバイスおよび論理デバイスの作成時に定義できます。
    • デフォルトの PE および LE サイズは 4 MB です。
    • PE のサイズを大きくした場合、LVM の最大サイズは、カーネルの制限とディスク領域によって決定されます。
Expand
表5.1 デフォルトの PE および LE サイズを使用した各アーキテクチャーのサイズ制限
アーキテクチャーRHEL 6RHEL 7RHEL 8RHEL 9

32 ビット

16 TB

-

-

-

64 ビット

8 EB [1]

100 TB [2]

8 EB [1]

500 TB [2]

8 EB

8 EB

  1. 理論的サイズ。
  2. テスト済みサイズ。

5.4.2. LVM ストレージを使用したストレージのプロビジョニング

Operator のインストール中に作成されたストレージクラスを使用して、永続ボリューム要求 (PVC) をプロビジョニングできます。ブロックおよびファイル PVC をプロビジョニングできますが、ストレージは、PVC を使用する Pod が作成された場合にのみ割り当てられます。

注記

LVM Storage は、PVC を 1 GiB 単位でプロビジョニングします。要求されたストレージは、最も近い GiB に切り上げられます。

手順

  1. LVM Storage のデプロイ時に作成される StorageClass を特定します。

    StorageClass 名の形式は lvms-<device-class-name> です。device-class-name は、Policy YAML の LVMCluster で指定したデバイスクラスの名前です。たとえば、deviceClass の名前が vg1 の場合、storageClass の名前は lvms-vg1 です。

    ストレージクラスの volumeBindingModeWaitForFirstConsumer に設定されます。

  2. アプリケーションがストレージを必要とする PVC を作成するには、次の YAML を pvc.yaml などの名前でファイルに保存します。

    PVC を作成する YAML の例

    # block pvc
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: lvm-block-1
      namespace: default
    spec:
      accessModes:
        - ReadWriteOnce
      volumeMode: Block
      resources:
        requests:
          storage: 10Gi
      storageClassName: lvms-vg1
    ---
    # file pvc
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: lvm-file-1
      namespace: default
    spec:
      accessModes:
        - ReadWriteOnce
      volumeMode: Filesystem
      resources:
        requests:
          storage: 10Gi
      storageClassName: lvms-vg1
    Copy to Clipboard Toggle word wrap

  3. 以下のコマンドを実行して PVC を作成します。

    # oc create -f pvc.yaml -ns <application_namespace>
    Copy to Clipboard Toggle word wrap

    作成された PVC は、それらを使用する Pod をデプロイするまで pending 状態のままになります。

5.4.3. PVC の拡張

容量を追加した後、新しいストレージを活用するには、LVM Storage で既存の永続ボリューム要求 (PVC) を拡張できます。

前提条件

  • 動的プロビジョニングを使用している。
  • 制御する側の StorageClass オブジェクトには allowVolumeExpansiontrue に設定されている。

手順

  1. 次のコマンドを実行して、目的の PVC リソースの .spec.resources.requests.storage フィールドを新しいサイズに変更します。

    oc patch <pvc_name> -n <application_namespace> -p '{ "spec": { "resources": { "requests": { "storage": "<desired_size>" }}}}'
    Copy to Clipboard Toggle word wrap
  2. PVC の status.conditions フィールドを監視し、サイズ変更が完了したかどうかを確認します。OpenShift Container Platform は、拡張中に Resizing 条件を PVC に追加します。これは、拡張の完了後、削除されます。

5.4.4. シングルノード OpenShift クラスターでの LVM ストレージのアップグレード

現在、シングルノード OpenShift クラスターで、OpenShift Data Foundation Logical Volume Manager Operator 4.11 から LVM Storage 4.12 にアップグレードすることはできません。

重要

このプロセス中、データは保持されません。

手順

  1. 永続ボリューム要求 (PVC) で保持するデータをバックアップします。
  2. OpenShift Data Foundation Logical Volume Manager Operator とその Pod によってプロビジョニングされたすべての PVC を削除します。
  3. OpenShift Container Platform 4.12 に LVM ストレージを再インストールします。
  4. ワークロードを再作成します。
  5. 4.12 へのアップグレード後に作成された PVC にバックアップデータをコピーします。

5.4.5. シングルノード OpenShift のボリュームスナップショット

LVM ストレージによってプロビジョニングされた永続ボリューム (PV) のボリュームスナップショットを取得できます。クローン作成されたボリュームのボリュームスナップショットを作成することもできます。ボリュームスナップショットは、次のことを行うのに役立ちます。

  • アプリケーションデータをバックアップします。

    重要

    ボリュームスナップショットは元のデータと同じデバイスにあります。ボリュームスナップショットをバックアップとして使用するには、スナップショットをセキュアな場所に移動する必要があります。OpenShift API をデータ保護のバックアップおよび復元ソリューションに使用できます。

  • ボリュームスナップショットが作成された状態に戻します。

5.4.5.1. シングルノード OpenShift でのボリュームスナップショットの作成

シンプールの使用可能な容量とオーバープロビジョニングの制限に基づいて、ボリュームスナップショットを作成できます。LVM Storage は、lvms-<deviceclass-name> という名前で VolumeSnapshotClass を作成します。

前提条件

  • 永続ボリューム要求 (PVC) が Bound 状態であることを確認しました。これは、一貫性のあるスナップショットに必要です。
  • スナップショットを作成する前に、PVC へのすべての I/O を停止しました。

手順

  1. oc コマンドを実行する必要があるシングルノード OpenShift にログインします。
  2. 次の YAML を lvms-vol-snapshot.yaml などの名前でファイルに保存します。

    ボリュームスナップショットを作成する YAML の例

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
        name: lvm-block-1-snap
    spec:
        volumeSnapshotClassName: lvms-vg1
        source:
            persistentVolumeClaimName: lvm-block-1
    Copy to Clipboard Toggle word wrap

  3. PVC と同じ namespace で次のコマンドを実行して、スナップショットを作成します。

    # oc create -f lvms-vol-snapshot.yaml
    Copy to Clipboard Toggle word wrap

PVC の読み取り専用コピーがボリュームスナップショットとして作成されます。

5.4.5.2. シングルノード OpenShift でのボリュームスナップショットの復元

ボリュームスナップショットを復元すると、新しい永続ボリューム要求 (PVC) が作成されます。復元される PVC はボリュームスナップショットおよびソース PVC とは切り離されています。

前提条件

  • ストレージクラスは、ソース PVC のストレージクラスと同じである必要がある。
  • 要求された PVC のサイズは、スナップショットのソースボリュームのサイズと同じである必要がある。

    重要

    スナップショットは、スナップショットのソースボリュームと同じサイズの PVC に復元される必要があります。より大きな PVC が必要な場合は、スナップショットが正常に復元された後に PVC のサイズを変更できます。

手順

  1. ソース PVC のストレージクラス名とボリュームスナップショット名を特定します。
  2. 次の YAML を lvms-vol-restore.yaml などの名前でファイルに保存して、スナップショットを復元します。

    PVC を復元する YAML の例。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: lvm-block-1-restore
    spec:
      accessModes:
      - ReadWriteOnce
      volumeMode: Block
      Resources:
        Requests:
          storage: 2Gi
      storageClassName: lvms-vg1
      dataSource:
        name: lvm-block-1-snap
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io
    Copy to Clipboard Toggle word wrap

  3. スナップショットと同じ namespace で次のコマンドを実行して、ポリシーを作成します。

    # oc create -f lvms-vol-restore.yaml
    Copy to Clipboard Toggle word wrap

5.4.5.3. シングルノード OpenShift でのボリュームスナップショットの削除

ボリュームスナップショットリソースと永続ボリューム要求 (PVC) を削除できます。

手順

  1. 次のコマンドを実行して、ボリュームスナップショットリソースを削除します。

    # oc delete volumesnapshot <volume_snapshot_name> -n <namespace>
    Copy to Clipboard Toggle word wrap
    注記

    永続ボリューム要求 (PVC) を削除しても、PVC のスナップショットは削除されません。

  2. 復元されたボリュームスナップショットを削除するには、次のコマンドを実行して、ボリュームスナップショットを復元するために作成された PVC を削除します。

    # oc delete pvc <pvc_name> -n <namespace>
    Copy to Clipboard Toggle word wrap

5.4.6. シングルノード OpenShift のボリュームのクローン作成

クローンは、既存のストレージボリュームの複製であり、他の標準ボリュームと同じように使用できます。

5.4.6.1. シングルノード OpenShift でのボリュームクローンの作成

ボリュームのクローンを作成して、データのポイントインタイムコピーを作成します。永続ボリューム要求は別のサイズでクローンできません。

重要

クローン作成された PVC には書き込みアクセス権限があります。

前提条件

  • PVC が Bound 状態であることを確認しました。これは、一貫性のあるスナップショットに必要です。
  • StorageClass がソース PVC のものと同じであることを確認しました。

手順

  1. ソース PVC のストレージクラスを特定します。
  2. ボリュームクローンを作成するには、次の YAML を lvms-vol-clone.yaml などの名前でファイルに保存します。

    ボリュームをクローン作成する YAML の例

    apiVersion: v1
    kind: PersistentVolumeClaim
    Metadata:
      name: lvm-block-1-clone
    Spec:
      storageClassName: lvms-vg1
      dataSource:
        name: lvm-block-1
        kind: PersistentVolumeClaim
      accessModes:
       - ReadWriteOnce
      volumeMode: Block
      Resources:
        Requests:
          storage: 2Gi
    Copy to Clipboard Toggle word wrap

  3. 次のコマンドを実行して、ソース PVC と同じ namespace にポリシーを作成します。

    # oc create -f lvms-vol-clone.yaml
    Copy to Clipboard Toggle word wrap

5.4.6.2. シングルノード OpenShift でのクローンボリュームの削除

クローン作成されたボリュームを削除できます。

手順

  • クローン作成されたボリュームを削除するには、次のコマンドを実行して、クローン作成された PVC を削除します。

    # oc delete pvc <clone_pvc_name> -n <namespace>
    Copy to Clipboard Toggle word wrap

5.4.7. LVM Storage の監視

クラスターモニタリングを有効にするには、LVM Storage をインストールした namespace に次のラベルを追加する必要があります。

openshift.io/cluster-monitoring=true
Copy to Clipboard Toggle word wrap
重要

RHACM でクラスターモニタリングを有効にする方法は、可観測性 および カスタムメトリクスの追加 を参照してください。

5.4.7.1. メトリクス

メトリクスを表示することで、LVM Storage を監視できます。

次の表は、topolvm メトリクスを説明しています。

Expand
表5.2 topolvm メトリクス
アラート説明

topolvm_thinpool_data_percent

LVM シンプールで使用されているデータ領域の割合を示します。

topolvm_thinpool_metadata_percent

LVM シンプールで使用されているメタデータ領域の割合を示します。

topolvm_thinpool_size_bytes

LVM シンプールのサイズをバイト単位で示します。

topolvm_volumegroup_available_bytes

LVM ボリュームグループ内の利用可能な領域をバイト単位で示します。

topolvm_volumegroup_size_bytes

LVM ボリュームグループのサイズをバイト単位で示します。

topolvm_thinpool_overprovisioned_available

LVM シンプールの利用可能なオーバープロビジョニングサイズをバイト単位で示します。

注記

メトリクスは 10 分ごとに、または変更 (シンプールに新しい論理ボリュームが作成されるなど) があったときに更新されます。

5.4.7.2. アラート

シンプールとボリュームグループが最大ストレージ容量に達すると、それ以降の操作は失敗します。これにより、データ損失が発生する可能性があります。

LVM Storage は、シンプールとボリュームグループの使用量が特定の値を超えると、次のアラートを送信します。

Expand
表5.3 LVM Storage アラート
アラート説明

VolumeGroupUsageAtThresholdNearFull

このアラートは、ボリュームグループとシンプールの両方の使用量がノード上で 75% を超えるとトリガーされます。データの削除またはボリュームグループの拡張が必要です。

VolumeGroupUsageAtThresholdCritical

このアラートは、ボリュームグループとシンプールの両方の使用量がノード上で 85% を超えるとトリガーされます。この場合、ボリュームグループは、かなりいっぱいになっています。データの削除またはボリュームグループの拡張が必要です。

ThinPoolDataUsageAtThresholdNearFull

このアラートは、ボリュームグループ内のシンプールのデータ使用量がノード上で 75% を超えるとトリガーされます。データの削除またはシンプールの拡張が必要です。

ThinPoolDataUsageAtThresholdCritical

このアラートは、ボリュームグループ内のシンプールのデータ使用量がノード上で 85% を超えるとトリガーされます。データの削除またはシンプールの拡張が必要です。

ThinPoolMetaDataUsageAtThresholdNearFull

このアラートは、ボリュームグループ内のシンプールのメタデータ使用量がノード上で 75% を超えるとトリガーされます。データの削除またはシンプールの拡張が必要です。

ThinPoolMetaDataUsageAtThresholdCritical

このアラートは、ボリュームグループ内のシンプールのメタデータ使用量がノード上で 85% を超えるとトリガーされます。データの削除またはシンプールの拡張が必要です。

5.4.8. must-gather を使用したログファイルおよび診断情報のダウンロード

LVM Storage が問題を自動的に解決できない場合、must-gather ツールを使用してログファイルと診断情報を収集し、ユーザーまたは Red Hat サポートが問題を確認して解決策を決定できるようにします。

手順

  • LVM Storage クラスターに接続されているクライアントから must-gather コマンドを実行します。

    $ oc adm must-gather --image=registry.redhat.io/lvms4/lvms-must-gather-rhel9:v4.12 --dest-dir=<directory_name>
    Copy to Clipboard Toggle word wrap

5.4.8.1. 保留状態でスタックしている PVC を調査する

Persistent Volume Claim (PVC) は、さまざまな理由で Pending 状態になることがあります。以下に例を示します。

  • コンピューティングリソースが不十分
  • ネットワークの問題
  • ストレージクラスまたはノードセレクターが一致していない
  • 利用可能なボリュームがない
  • 永続ボリューム (PV) を持つノードは Not Ready 状態です

oc description コマンドを使用してスタック PVC の詳細を確認し、原因を特定します。

手順

  1. 次のコマンドを実行して、PVC のリストを取得します。

    $ oc get pvc
    Copy to Clipboard Toggle word wrap

    出力例

    NAME        STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    lvms-test   Pending                                      lvms-vg1       11s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、Pending 状態のままになっている PVC に関連するイベントを検査します。

    $ oc describe pvc <pvc_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <pvc_name> を PVC の名前に置き換えます。たとえば、lvms-vg1 です。

    出力例

    Type     Reason              Age               From                         Message
    ----     ------              ----              ----                         -------
    Warning  ProvisioningFailed  4s (x2 over 17s)  persistentvolume-controller  storageclass.storage.k8s.io "lvms-vg1" not found
    Copy to Clipboard Toggle word wrap

5.4.8.2. 不足している LVMS または Operator コンポーネントからの回復

ストレージクラスが「見つからない」エラーが発生した場合は、LVMCluster リソースをチェックし、すべての論理ボリュームマネージャーストレージ (LVMS) Pod が実行していることを確認してください。LVMCluster リソースが存在しない場合は作成できます。

手順

  1. 次のコマンドを実行して、LVMCluster リソースの存在を確認します。

    $ oc get lvmcluster -n openshift-storage
    Copy to Clipboard Toggle word wrap

    出力例

    NAME            AGE
    my-lvmcluster   65m
    Copy to Clipboard Toggle word wrap

  2. クラスターに LVMCluster リソースがない場合は、次のコマンドを実行して LVMCluster リソースを作成します。

    $ oc create -n openshift-storage -f <custom_resource> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <custom_resource> を、要件に合わせたカスタムリソース URL またはファイルに置き換えます。

    カスタムリソースの例

    apiVersion: lvm.topolvm.io/v1alpha1
    kind: LVMCluster
    metadata:
      name: my-lvmcluster
    spec:
      storage:
        deviceClasses:
        - name: vg1
          default: true
          thinPoolConfig:
            name: thin-pool-1
            sizePercent: 90
            overprovisionRatio: 10
    Copy to Clipboard Toggle word wrap

  3. 次のコマンドを実行して、LVMS のすべての Pod が openshift-storage namespace で Running 状態であることを確認します。

    $ oc get pods -n openshift-storage
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                  READY   STATUS    RESTARTS      AGE
    lvms-operator-7b9fb858cb-6nsml        3/3     Running   0             70m
    topolvm-controller-5dd9cf78b5-7wwr2   5/5     Running   0             66m
    topolvm-node-dr26h                    4/4     Running   0             66m
    vg-manager-r6zdv                      1/1     Running   0             66m
    Copy to Clipboard Toggle word wrap

    予期される出力は、lvms-operator および vg-manager の 1 つの実行インスタンスです。各ノードには、topolvm-controller および topolvm-node のインスタンスが 1 つ必要です。

    topolvm-nodeInit 状態でスタックしている場合は、LVMS が使用できるディスクを見つけることができません。トラブルシューティングに必要な情報を取得するには、次のコマンドを実行して vg-manager Pod のログを確認します。

    $ oc logs -l app.kubernetes.io/component=vg-manager -n openshift-storage
    Copy to Clipboard Toggle word wrap

5.4.8.4. ディスク障害からの回復

Persistent Volume Claim (PVC) に関連するイベントの検査中にエラーメッセージが表示された場合は、基になるボリュームまたはディスクに問題がある可能性があります。ディスクとボリュームのプロビジョニングの問題は、多くの場合、最初に Failed to provision volume with StorageClass <storage_class_name> などの一般的なエラーが発生します。通常、2 番目のより具体的なエラーメッセージが続きます。

手順

  1. 次のコマンドを実行して、PVC に関連付けられたイベントを検査します。

    $ oc describe pvc <pvc_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <pvc_name> を PVC の名前に置き換えます。ディスクまたはボリューム障害のエラーメッセージとその原因の例をいくつか示します。
    • ボリュームの存在を確認できない: ボリュームがすでに存在するかどうかの確認で問題が発生したことを示します。ボリューム検証の失敗は、ネットワーク接続の問題やその他の障害によって発生する可能性があります。
    • バインドボリュームへの失敗: 利用可能な永続ボリューム (PV) が PVC の要件と一致しない場合、ボリュームのバインドに失敗する可能性があります。
    • FailedMount または FailedUnMount: このエラーは、ボリュームをノードにマウントしようとしたとき、またはノードからボリュームをアンマウントしようとしたときの問題を示します。ディスクに障害が発生した場合、Pod が PVC を使用しようとしたときにこのエラーが表示されることがあります。
    • ボリュームはすでに 1 つのノードに排他的に接続されており、別のノードには接続できない: このエラーは、ReadWriteMany アクセスモードをサポートしていないストレージソリューションで発生する可能性があります。
  2. 問題が発生しているホストへの直接接続を確立します。
  3. ディスクの問題を解決します。

ディスクの問題を解決した後、エラーメッセージが続くか再発する場合は、強制クリーンアップ手順の実行が必要になる場合があります。

5.4.8.5. 強制クリーンアップの実行

トラブルシューティング手順を完了した後もディスクまたはノード関連の問題が解決しない場合は、強制クリーンアップ手順の実行が必要になる場合があります。強制クリーンアップは、永続的な問題に包括的に対処し、LVMS が適切に機能することを保証するために使用されます。

前提条件

  1. 論理ボリュームマネージャーストレージ (LVMS) ドライバーを使用して作成された永続ボリュームクレーム (PVC) はすべて削除されました。
  2. これらの PVC を使用する Pod は停止されました。

手順

  1. 次のコマンドを実行して、openshift-storage namespace に切り替えます。

    $ oc project openshift-storage
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、Logical Volume のカスタムリソース (CR) が残っていないことを確認します。

    $ oc get logicalvolume
    Copy to Clipboard Toggle word wrap

    出力例

    No resources found
    Copy to Clipboard Toggle word wrap

    1. LogicalVolume CR が残っている場合は、次のコマンドを実行してファイナライザーを削除します。

      $ oc patch logicalvolume <name> -p '{"metadata":{"finalizers":[]}}' --type=merge 
      1
      Copy to Clipboard Toggle word wrap
      1
      <name> を CR の名前に置き換えます。
    2. ファイナライザーを削除した後、次のコマンドを実行して CR を削除します。

      $ oc delete logicalvolume <name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <name> を CR の名前に置き換えます。
  3. 次のコマンドを実行して、LVMVolumeGroup CR が残っていないことを確認します。

    $ oc get lvmvolumegroup
    Copy to Clipboard Toggle word wrap

    出力例

    No resources found
    Copy to Clipboard Toggle word wrap

    1. LVMVolumeGroup CR が残っている場合は、次のコマンドを実行してファイナライザーを削除します。

      $ oc patch lvmvolumegroup <name> -p '{"metadata":{"finalizers":[]}}' --type=merge 
      1
      Copy to Clipboard Toggle word wrap
      1
      <name> を CR の名前に置き換えます。
    2. ファイナライザーを削除した後、次のコマンドを実行して CR を削除します。

      $ oc delete lvmvolumegroup <name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <name> を CR の名前に置き換えます。
  4. 次のコマンドを実行して、LVMVolumeGroupNodeStatus CR を削除します。

    $ oc delete lvmvolumegroupnodestatus --all
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、LVMCluster CR を削除します。

    $ oc delete lvmcluster --all
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat