11.2. ストレージプロファイルの設定
ストレージプロファイルは、関連付けられたストレージクラスに基づいて推奨されるストレージ設定を提供します。ストレージクラスごとにストレージクラスが割り当てられます。
Containerized Data Importer (CDI) は、ストレージプロバイダーの機能を識別し、対話するように設定されている場合はストレージプロバイダーを認識します。
認識されたストレージタイプの場合、CDI は PVC の作成を最適化する値を提供します。ストレージプロファイルをカスタマイズして、ストレージクラスの自動設定を行うこともできます。CDI がストレージプロバイダーを認識しない場合は、ユーザーがストレージプロファイルを設定する必要があります。
Red Hat OpenShift Data Foundation で OpenShift Virtualization を使用する場合は、仮想マシンディスクの作成時に RBD ブロックモードの永続ボリューム要求 (PVC) を指定します。RBD ブロックモードボリュームは、Ceph FS または RBD ファイルシステムモード PVC よりも効率が高く、優れたパフォーマンスを提供します。
RBD ブロックモードの PVC を指定するには、'ocs-storagecluster-ceph-rbd' ストレージクラスおよび VolumeMode: Block を使用します。
11.2.1. ストレージプロファイルのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
プロビジョナーのストレージクラスの StorageProfile オブジェクトを編集してデフォルトパラメーターを指定できます。これらのデフォルトパラメーターは、DataVolume オブジェクトで設定されていない場合にのみ永続ボリューム要求 (PVC) に適用されます。
ストレージクラスのパラメーターは変更できません。変更する必要がある場合は、ストレージクラスを削除して再作成します。その後、ストレージプロファイルに適用していたカスタマイズを再適用する必要があります。
ストレージプロファイルの空の status セクションは、ストレージプロビジョナーが Containerized Data Importer (CDI) によって認識されないことを示します。CDI で認識されないストレージプロビジョナーがある場合、ストレージプロファイルをカスタマイズする必要があります。この場合、管理者はストレージプロファイルに適切な値を設定し、割り当てが正常に実行されるようにします。
仮想マシンのスナップショットを作成する場合、ディスクのストレージクラスに複数の VolumeSnapshotClass が関連付けられていると警告が表示されます。その場合、ボリュームスナップショットクラスを 1 つ指定する必要があります。そうしないと、複数のボリュームスナップショットクラスを持つディスクはスナップショットリストから除外されます。
データボリュームを作成し、YAML 属性を省略し、これらの属性がストレージプロファイルで定義されていない場合は、要求されたストレージは割り当てられず、基礎となる永続ボリューム要求 (PVC) は作成されません。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - 計画した設定がストレージクラスとそのプロバイダーでサポートされていることを確認してください。ストレージプロファイルに互換性のない設定を指定すると、ボリュームのプロビジョニングに失敗します。
手順
ストレージプロファイルを編集します。この例では、プロビジョナーは CDI によって認識されません。
$ oc edit storageprofile <storage_class>ストレージプロファイルに設定する
accessModesおよびvolumeModeの値を指定します。以下に例を示します。ストレージプロファイルの例
apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: <unknown_provisioner_class> # ... spec: claimPropertySets: - accessModes: - ReadWriteOnce1 volumeMode: Filesystem2 status: provisioner: <unknown_provisioner> storageClass: <unknown_provisioner_class>
11.2.1.1. Web コンソールを使用してボリュームスナップショットクラスを指定する リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンのスナップショットを作成する場合、ディスクのストレージクラスに複数のボリュームスナップショットクラスが関連付けられていると警告が表示されます。その場合、ボリュームスナップショットクラスを 1 つ指定する必要があります。そうしないと、複数のボリュームスナップショットクラスを持つディスクはスナップショットリストから除外されます。
OpenShift Container Platform Web コンソールで、デフォルトのボリュームスナップショットクラスを指定できます。
手順
- Virtualization に重点を置いたビューから、Storage を選択します。
- VolumeSnapshotClasses をクリックします。
- リストからボリュームスナップショットクラスを選択します。
- Annotations の鉛筆アイコンをクリックします。
-
次の キー を入力します:
snapshot.storage.kubernetes.io/is-default-class。 -
次の 値 を入力します:
true。 - Save をクリックします。
11.2.1.2. CLI を使用してボリュームスナップショットクラスを指定する リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンのスナップショットを作成する場合、ディスクのストレージクラスに複数のボリュームスナップショットクラスが関連付けられていると警告が表示されます。その場合、ボリュームスナップショットクラスを 1 つ指定する必要があります。そうしないと、複数のボリュームスナップショットクラスを持つディスクはスナップショットリストから除外されます。
使用するボリュームスナップショットクラスは、次のいずれかの方法で選択できます。
-
ストレージプロファイルの
spec.snapshotClassを設定します。 - デフォルトのボリュームスナップショットクラスを設定します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。
手順
使用する
VolumeSnapshotClassを設定します。以下に例を示します。apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: ocs-storagecluster-ceph-rbd-virtualization spec: snapshotClass: ocs-storagecluster-rbdplugin-snapclassまたは、次のコマンドを実行して、デフォルトのボリュームスナップショットクラスを設定します。
# oc patch VolumeSnapshotClass ocs-storagecluster-cephfsplugin-snapclass --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'
11.2.1.3. 自動的に作成されたストレージプロファイルの表示 リンクのコピーリンクがクリップボードにコピーされました!
システムは、各ストレージクラスのストレージプロファイルを自動的に作成します。これらのストレージクラスのプロファイルは、oc コマンドを使用して表示できます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。
手順
ストレージプロファイルのリストを表示するには、次のコマンドを実行します。
$ oc get storageprofile特定のストレージプロファイルの詳細を取得するには、次のコマンドを実行します。
$ oc describe storageprofile <name>ストレージプロファイルの詳細の例:
Name: ocs-storagecluster-ceph-rbd-virtualization Namespace: Labels: app=containerized-data-importer app.kubernetes.io/component=storage app.kubernetes.io/managed-by=cdi-controller app.kubernetes.io/part-of=hyperconverged-cluster app.kubernetes.io/version=4.17.2 cdi.kubevirt.io= Annotations: <none> API Version: cdi.kubevirt.io/v1beta1 Kind: StorageProfile Metadata: Creation Timestamp: 2023-11-13T07:58:02Z Generation: 2 Owner References: API Version: cdi.kubevirt.io/v1beta1 Block Owner Deletion: true Controller: true Kind: CDI Name: cdi-kubevirt-hyperconverged UID: 2d6f169a-382c-4caf-b614-a640f2ef8abb Resource Version: 4186799537 UID: 14aef804-6688-4f2e-986b-0297fd3aaa68 Spec: Status: Claim Property Sets:1 accessModes: ReadWriteMany volumeMode: Block accessModes: ReadWriteOnce volumeMode: Block accessModes: ReadWriteOnce volumeMode: Filesystem Clone Strategy: csi-clone2 Data Import Cron Source Format: snapshot3 Provisioner: openshift-storage.rbd.csi.ceph.com Snapshot Class: ocs-storagecluster-rbdplugin-snapclass Storage Class: ocs-storagecluster-ceph-rbd-virtualization Events: <none>
11.2.1.4. ストレージプロファイルを使用してデフォルトのクローン作成ストラテジーを設定する リンクのコピーリンクがクリップボードにコピーされました!
ストレージプロファイルを使用してストレージクラスのデフォルトクローン作成メソッドを設定して、クローンストラテジーを作成できます。これは、たとえば、ストレージベンダーが特定のクローン作成方法のみをサポートしている場合に役立ちます。また、リソースの使用の制限やパフォーマンスの最大化を実現する手法を選択することもできます。
クローン作成ストラテジーは、ストレージプロファイルの cloneStrategy 属性を以下の値のいずれかに設定して指定できます。
-
snapshotが設定されている場合、デフォルトでスナップショットが使用されます。Containerized Data Importer (CDI) がストレージプロバイダーを認識し、プロバイダーが Container Storage Interface (CSI) スナップショットをサポートする場合、CDI はスナップショットメソッドを使用します。このクローン作成ストラテジーは、一時的なボリュームスナップショットを使用してボリュームのクローンを作成します。 -
copyは、ソース Pod とターゲット Pod を使用して、ソースボリュームからターゲットボリュームにデータをコピーします。ホスト支援型でのクローン作成は、最も効率的な方法です。 -
csi-cloneは、CSI クローン API を使用して、中間ボリュームスナップショットを使用せずに、既存のボリュームのクローンを効率的に作成します。ストレージプロファイルが定義されていない場合にデフォルトで使用されるsnapshotまたはcopyとは異なり、CSI ボリュームのクローンは、プロビジョナーのストレージクラスのStorageProfileオブジェクトに指定した場合にだけ使用されます。
YAML spec セクションのデフォルトの claimPropertySets を変更せずに、CLI でクローン作成ストラテジーを設定できます。
ストレージプロファイルの例:
apiVersion: cdi.kubevirt.io/v1beta1
kind: StorageProfile
metadata:
name: <provisioner_class>
# ...
spec:
claimPropertySets:
- accessModes:
- ReadWriteOnce
volumeMode: Filesystem
cloneStrategy: csi-clone
status:
provisioner: <provisioner>
storageClass: <provisioner_class>