8.2. ストレージプロファイルの設定
ストレージプロファイルは、関連付けられたストレージクラスに基づいて推奨されるストレージ設定を提供します。ストレージクラスごとにストレージクラスが割り当てられます。
Containerized Data Importer (CDI) は、ストレージプロバイダーの機能を識別し、対話するように設定されている場合はストレージプロバイダーを認識します。
認識されたストレージタイプの場合、CDI は PVC の作成を最適化する値を提供します。ストレージプロファイルをカスタマイズして、ストレージクラスの自動設定を行うこともできます。CDI がストレージプロバイダーを認識しない場合は、ユーザーがストレージプロファイルを設定する必要があります。
8.2.1. ストレージプロファイルのカスタマイズ
プロビジョナーのストレージクラスの StorageProfile
オブジェクトを編集してデフォルトパラメーターを指定できます。これらのデフォルトパラメーターは、DataVolume
オブジェクトで設定されていない場合にのみ永続ボリューム要求 (PVC) に適用されます。
ストレージクラスのパラメーターは変更できません。変更する必要がある場合は、ストレージクラスを削除して再作成します。その後、ストレージプロファイルに適用していたカスタマイズを再適用する必要があります。
ストレージプロファイルの空の status
セクションは、ストレージプロビジョナーが Containerized Data Interface (CDI) によって認識されないことを示します。CDI で認識されないストレージプロビジョナーがある場合、ストレージプロファイルをカスタマイズする必要があります。この場合、管理者はストレージプロファイルに適切な値を設定し、割り当てが正常に実行されるようにします。
データボリュームを作成し、YAML 属性を省略し、これらの属性がストレージプロファイルで定義されていない場合は、要求されたストレージは割り当てられず、基礎となる永続ボリューム要求 (PVC) は作成されません。
前提条件
- 計画した設定がストレージクラスとそのプロバイダーでサポートされていることを確認してください。ストレージプロファイルに互換性のない設定を指定すると、ボリュームのプロビジョニングに失敗します。
手順
ストレージプロファイルを編集します。この例では、プロビジョナーは CDI によって認識されません。
$ oc edit storageprofile <storage_class>
ストレージプロファイルの例
apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: <unknown_provisioner_class> # ... spec: {} status: provisioner: <unknown_provisioner> storageClass: <unknown_provisioner_class>
ストレージプロファイルに必要な属性値を指定します。
ストレージプロファイルの例
apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: <unknown_provisioner_class> # ... spec: claimPropertySets: - accessModes: - ReadWriteOnce 1 volumeMode: Filesystem 2 status: provisioner: <unknown_provisioner> storageClass: <unknown_provisioner_class>
変更を保存した後、選択した値がストレージプロファイルの
status
要素に表示されます。
8.2.1.1. ストレージプロファイルを使用したデフォルトのクローンストラテジーの設定
ストレージプロファイルを使用してストレージクラスのデフォルトクローンメソッドを設定し、クローンストラテジー を作成できます。ストレージベンダーが特定のクローン作成方法のみをサポートする場合などに、クローンストラテジーを設定すると便利です。また、リソースの使用の制限やパフォーマンスの最大化を実現する手法を選択することもできます。
クローン作成ストラテジーは、ストレージプロファイルの cloneStrategy
属性を以下の値のいずれかに設定して指定できます。
-
snapshot
が設定されている場合、デフォルトでスナップショットが使用されます。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 1 volumeMode: Filesystem 2 cloneStrategy: csi-clone 3 status: provisioner: <provisioner> storageClass: <provisioner_class>
ストレージプロバイダー | デフォルト動作 |
---|---|
rook-ceph.rbd.csi.ceph.com | スナップショット |
openshift-storage.rbd.csi.ceph.com | スナップショット |
csi-vxflexos.dellemc.com | CSI Clone |
csi-isilon.dellemc.com | CSI Clone |
csi-powermax.dellemc.com | CSI Clone |
csi-powerstore.dellemc.com | CSI Clone |
hspc.csi.hitachi.com | CSI Clone |
csi.hpe.com | CSI Clone |
spectrumscale.csi.ibm.com | CSI Clone |
rook-ceph.rbd.csi.ceph.com | CSI Clone |
openshift-storage.rbd.csi.ceph.com | CSI Clone |
cephfs.csi.ceph.com | CSI Clone |
openshift-storage.cephfs.csi.ceph.com | CSI Clone |