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. CLI を使用した LVM Storage のインストール リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、CLI を使用して Logical Volume Manager (LVM) ストレージをインストールできます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。
手順
LVM Storage Operator の namespace を作成します。
次の YAML を
lvms-namespace.yamlファイルに保存します。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-storageNamespaceCR を作成します。$ oc create -f lvms-namespace.yaml
LVM Storage Operator の Operator グループを作成します。
次の YAML を
lvms-operatorgroup.yamlファイルに保存します。apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-storage-operatorgroup namespace: openshift-storage spec: targetNamespaces: - openshift-storageOperatorGroupCR を作成します。$ oc create -f lvms-operatorgroup.yaml
LVM Storage Operator にサブスクライブします。
次の YAML を
lvms-sub.yamlファイルに保存します。apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: lvms namespace: openshift-storage spec: installPlanApproval: Automatic name: lvms-operator source: redhat-operators sourceNamespace: openshift-marketplaceSubscriptionCR を作成します。$ oc create -f lvms-sub.yaml
Operator がインストールされていることを確認するには、以下のコマンドを入力します。
$ oc get csv -n openshift-storage -o custom-columns=Name:.metadata.name,Phase:.status.phase出力例
Name Phase 4.13.0-202301261535 Succeeded
5.4.1.3. Web コンソールを使用した LVM Storage のインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Container Platform OperatorHub を使用して、Logical Volume Manager (LVM) Storage をインストールできます。
前提条件
- シングルノード OpenShift クラスターにアクセスできます。
-
cluster-adminおよび Operator のインストール権限を持つアカウントを使用しています。
手順
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
OperatorHub をクリックします。 -
スクロールするか、
LVM Storageを Filter by keyword ボックスに入力して、LVM Storage を見つけます。 - Install をクリックします。
Install Operator ページで、以下のオプションを設定します。
- Channel を stable-4.13 として更新します。
- Installation Mode を A specific namespace on the cluster に設定します。
-
Installed Namespace を Operator recommended namespace openshift-storage に設定します。
openshift-storagenamespace が存在しない場合は、Operator のインストール中に作成されます。 Approval Strategy を Automatic または Manual に設定します。
Automatic (自動) 更新を選択すると、Operator Lifecycle Manager (OLM) は介入なしに、Operator の実行中のインスタンスを自動的にアップグレードします。
Manual 更新を選択すると、OLM は更新要求を作成します。クラスター管理者は、Operator を新しいバージョンに更新できるように更新要求を手動で承認する必要があります。
- Install をクリックします。
検証手順
- インストールが成功したことを示す緑色のチェックマークが LVM Storage に表示されていることを確認します。
5.4.1.4. CLI を使用した LVM Storage のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc) を使用して LVM ストレージをアンインストールできます。
前提条件
-
cluster-admin権限を持つユーザーとしてocにログインしている。 - LVM Storage によってプロビジョニングされた永続ボリューム要求 (PVC)、ボリュームスナップショット、およびボリュームクローンが削除されている。これらのリソースを使用しているアプリケーションも削除されている。
-
LVMClusterカスタムリソース (CR) が削除されている。
手順
次のコマンドを実行して、LVM Storage Operator の
currentCSVの値を取得します。$ oc get subscription.operators.coreos.com lvms-operator -n <namespace> -o yaml | grep currentCSV出力例
currentCSV: lvms-operator.v4.15.3次のコマンドを実行してサブスクリプションを削除します。
$ oc delete subscription.operators.coreos.com lvms-operator -n <namespace>出力例
subscription.operators.coreos.com "lvms-operator" deleted次のコマンドを実行して、ターゲット namespace 内の LVM Storage Operator の CSV を削除します。
$ oc delete clusterserviceversion <currentCSV> -n <namespace>1 - 1
<currentCSV>は、LVM Storage Operator のcurrentCSV値に置き換えます。出力例
clusterserviceversion.operators.coreos.com "lvms-operator.v4.15.3" deleted
検証
LVM Storage Operator がアンインストールされたことを確認するには、次のコマンドを実行します。
$ oc get csv -n <namespace>LVM Storage Operator が正常にアンインストールされた場合、このコマンドの出力には表示されません。
5.4.1.5. OpenShift Web コンソールを使用してインストールされた LVM ストレージのアンインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Container Platform Web コンソールを使用して、LVM ストレージをアンインストールできます。
前提条件
- LVM Storage によってプロビジョニングされたストレージを使用しているクラスター上のすべてのアプリケーションを削除しました。
- LVM Storage を使用してプロビジョニングされた永続ボリューム要求 (PVC) と永続ボリューム (PV) を削除しました。
- LVM Storage によってプロビジョニングされたすべてのボリュームスナップショットを削除しました。
-
oc get logicalvolumeコマンドを使用して、論理ボリュームリソースが存在しないことを確認しました。 -
cluster-admin権限を持つアカウントを使用して、シングルノード OpenShift クラスターにアクセスできます。
手順
-
Operators
Installed Operators ページから、LVM Storage にスクロールするか、 LVM Storageを Filter by name に入力して検索し、クリックします。 - LVMCluster タブをクリックします。
- LVMCluster ページの右側で、Actions ドロップダウンメニューから Delete LVMCluster を選択します。
- Details タブをクリックします。
- Operator Details ページの右側で、Actions ドロップダウンメニューから Uninstall Operator を選択します。
- Remove を選択します。LVM Storage は実行を停止し、完全に削除されます。
5.4.1.6. 非接続環境での LVM ストレージのインストール リンクのコピーリンクがクリップボードにコピーされました!
非接続環境の OpenShift Container Platform 4.13 に LVM Storage をインストールできます。この手順で参照されているすべてのセクションは、追加リソース にリンクされています。
前提条件
- 非接続インストールミラーリングについて セクションを確認した。
- OpenShift Container Platform イメージリポジトリーにアクセスできる。
- ミラーレジストリーを作成した。
手順
イメージセット設定の作成 手順の手順に従います。LVM Storage の
ImageSetConfigurationリソースを作成するには、次のサンプル YAML ファイルを使用できます。LVM Storage 用の ImageSetConfiguration ファイルの例
kind: ImageSetConfiguration apiVersion: mirror.openshift.io/v1alpha2 archiveSize: 41 storageConfig:2 registry: imageURL: example.com/mirror/oc-mirror-metadata3 skipTLS: false mirror: platform: channels: - name: stable-4.134 type: ocp graph: true5 operators: - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.136 packages: - name: lvms-operator7 channels: - name: stable8 additionalImages: - name: registry.redhat.io/ubi9/ubi:latest9 helm: {}- 1
archiveSizeを追加して、イメージセット内の各ファイルの最大サイズを GiB 単位で設定します。- 2
- イメージセットのメタデータを保存するバックエンドの場所を設定します。この場所は、レジストリーまたはローカルディレクトリーにすることができます。Technology Preview OCI 機能を使用していない場合は、
storageConfig値を指定する必要があります。 - 3
- ストレージバックエンドのレジストリー URL を設定します。
- 4
- OpenShift Container Platform イメージを取得するためのチャネルを設定します。
- 5
graph: trueを追加して OpenShift Update Service (OSUS) グラフイメージを生成し、Web コンソールを使用する際のクラスター更新エクスペリエンスを向上させます。詳細については、OpenShift Update Service について を参照してください。- 6
- OpenShift Container Platform イメージを取得するための Operator カタログを設定します。
- 7
- イメージセットに含める特定の Operator パッケージのみを指定します。カタログ内のすべてのパッケージを取得するには、このフィールドを削除してください。
- 8
- イメージセットに含める Operator パッケージの特定のチャネルのみを指定します。そのチャネルでバンドルを使用しない場合も、常に Operator パッケージのデフォルトチャネルを含める必要があります。
oc mirror list operators --catalog=<catalog_name> --package=<package_name>コマンドを実行すると、デフォルトチャネルを見つけることができます。 - 9
- イメージセットに含める追加のイメージを指定します。
- Mirroring an image set to a mirror registry セクションの手順に従います。
- Configuring image registry repository mirroring セクションの手順に従います。
5.4.1.7. RHACM を使用した LVM Storage のインストール リンクのコピーリンクがクリップボードにコピーされました!
LVM ストレージは、Red Hat Advanced Cluster Management (RHACM) を使用してシングルノード OpenShift クラスターにデプロイされます。RHACM に Policy オブジェクトを作成します。これは、PlacementRule リソースで指定されたセレクターに一致するマネージドクラスターに適用される際に Operator をデプロイおよび設定します。このポリシーは、後でインポートされ、配置ルールを満たすクラスターにも適用されます。
前提条件
-
cluster-adminおよび Operator インストール権限を持つアカウントを使用して、RHACM クラスターにアクセスします。 - LVM ストレージによって使用される各シングルノード OpenShift クラスターの専用ディスク。
- シングルノード OpenShift クラスターは、インポートまたは作成された RHACM によって管理される必要があります。
手順
- OpenShift Container Platform の認証情報を使用して RHACM CLI にログインします。
ポリシーを作成する namespace を作成します。
# oc create ns lvms-policy-nsポリシーを作成するには、次の 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 default: true 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- 1
- LVM ストレージをインストールするシングルノード OpenShift クラスターに設定されたラベルと一致するように、
PlacementRule.spec.clusterSelectorのキーと値を置き換えます。 - 2
- ボリュームグループを優先ディスクに制御または制限するには、
LVMClusterYAML のdeviceSelectorセクションでディスクのローカルパスを手動で指定します。 - 3
- 追加のワーカーノードのサブセットであるノードフィルターを追加するには、
nodeSelectorセクションに必要なフィルターを指定します。LVM Storage は、新しいノードが表示されると、追加のワーカーノードを検出して使用します。重要この
nodeSelectorノードフィルターの一致は、Pod ラベルの一致と同じではありません。
次のコマンドを実行して、namespace にポリシーを作成します。
# oc create -f policy-lvms-operator.yaml -n lvms-policy-ns1 - 1
policy-lvms-operator.yamlは、ポリシーが保存されるファイルの名前です。
これにより、
lvms-policy-nsnamespace にPolicy、PlacementRule、およびPlacementBindingオブジェクトが作成されます。このポリシーは、配置ルールに一致するクラスター上にNamespace、OperatorGroup、Subscription、およびLVMClusterリソースを作成します。これにより、選択基準に一致するシングルノード OpenShift クラスターに Operator がデプロイされ、ストレージをプロビジョニングするために必要なリソースをセットアップするように設定されます。Operator はLVMClusterCR で指定されたすべてのディスクを使用します。ディスクが指定されていない場合、Operator はシングルノード OpenShift ノード上の未使用のディスクをすべて使用します。重要LVMClusterに追加されたデバイスは削除できません。
5.4.1.8. LVM Storage で使用するデバイスのサイズを設定する際の制限事項 リンクのコピーリンクがクリップボードにコピーされました!
LVM Storage を使用したストレージのプロビジョニングで使用できるデバイスのサイズを設定する際の制限は、次のとおりです。
- プロビジョニングできる合計ストレージサイズは、基礎となる論理ボリュームマネージャー (LVM) シンプールのサイズとオーバープロビジョニング係数によって制限されます。
論理ボリュームのサイズは、物理エクステント (PE) のサイズと論理エクステント (LE) のサイズによって異なります。
- PE および LE のサイズは、物理デバイスおよび論理デバイスの作成時に定義できます。
- デフォルトの PE および LE サイズは 4 MB です。
- PE のサイズを大きくした場合、LVM の最大サイズは、カーネルの制限とディスク領域によって決定されます。
| アーキテクチャー | RHEL 6 | RHEL 7 | RHEL 8 | RHEL 9 |
|---|---|---|---|---|
| 32 ビット | 16 TB | - | - | - |
| 64 ビット | 8 EB [1] 100 TB [2] | 8 EB [1] 500 TB [2] | 8 EB | 8 EB |
- 理論的サイズ。
- テスト済みサイズ。