第7章 ボリュームスナップショットの使用
クラスター管理者は、ボリュームスナップショットを使用すると、サポート対象の MicroShift 論理ボリュームマネージャーストレージ (LVMS) Container Storage Interface (CSI) プロバイダーを使用してデータ損失を防ぐことができます。永続ボリューム に関する知識が必要です。
スナップショットは、特定の時点でのクラスター内のストレージボリュームの状態を表します。ボリュームスナップショットを使用して、新しいボリュームをプロビジョニングすることもできます。スナップショットは、元のデータと同じデバイス上にある読み取り専用の論理ボリューム (LV) として作成されます。
クラスター管理者は、CSI ボリュームスナップショットを使用して以下のタスクを実行できます。
- 既存の永続ボリューム要求 (PVC) のスナップショットを作成します。
- ボリュームスナップショットを安全な場所にバックアップします。
- ボリュームスナップショットを別の PVC として復元します。
- 既存のボリュームスナップショットを削除します。
MicroShift では、Logical Volume Manager Storage (LVMS) プラグイン CSI ドライバーのみがサポートされています。
7.1. LVM シンボリュームについて
ボリュームスナップショットの作成やボリュームクローン作成などの高度なストレージ機能を使用するには、以下のアクションを実行する必要があります。
- 論理ボリュームマネージャーストレージ (LVMS) プロバイダーとクラスターの両方を設定します。
- RHEL for Edge 上に論理ボリュームマネージャー (LVM) シンプールをプロビジョニングします。
- LVM シンプールをボリュームグループに接続します。
Container Storage Interface (CSI) スナップショットを作成するには、RHEL for Edge ホスト上でシンボリュームを設定する必要があります。CSI はボリュームの縮小をサポートしていません。
LVMS がシン論理ボリューム (LV) を管理するには、etc/lvmd.yaml
設定ファイルでシンプールの デバイスクラス
アレイを指定する必要があります。複数のシンプールデバイスクラスが許可されます。
追加のストレージプールがデバイスクラスで設定されている場合、ストレージプールをユーザーおよびワークロードに公開するには、追加のストレージクラスも存在する必要があります。シンプールで動的プロビジョニングを有効にするには、StorageClass
リソースがクラスター上に存在する必要があります。StorageClass
リソースは、topolvm.io/device-class
パラメーターでソース device-class
クラス配列を指定します。
シンプール用の単一のデバイスクラスを指定する lvmd.yaml
ファイルの例
socket-name: 1 device-classes: 2 - name: thin 3 default: true spare-gb: 0 4 thin-pool: name: thin overprovision-ratio: 10 5 type: thin 6 volume-group: ssd 7
- 1
- String。gRPC の UNIX ドメインソケットエンドポイント。デフォルトは
/run/lvmd/lvmd.socket
です。 - 2
- 各
device-class
の設定のマップのリスト。 - 3
- String。
device-class
の一意の名前。 - 4
- 未署名の 64 ビット整数ボリュームグループに未割り当てのままにする GB 単位のストレージ容量。デフォルトは
0
です。 - 5
- 同じプールを共有する複数のシンプロビジョニングされたデバイスがある場合に、これらのデバイスは過剰にプロビジョニングされる可能性があります。オーバープロビジョニングには、1 以上の浮動小数点値が必要です。
- 6
- ボリュームのスナップショットの作成には、シンプロビジョニングが必要です。
- 7
- String。
device-class
が論理ボリュームを作成するグループ。
複数の PVC が同時に作成されると、競合状態が原因で、LVMS は割り当てられた領域を正確に追跡してデバイスクラスのストレージ容量を保持できなくなります。個別のボリュームグループとデバイスクラスを使用して、非常に動的なワークロードのストレージを相互に保護します。
関連情報
- ホストにシンプールを作成するには、シンプロビジョニングされたボリュームの作成および管理を参照してください。
- シンプロビジョニングされた論理ボリュームの作成
- シンプロビジョニングされたボリュームの設定および管理
- ストレージクラス
- ストレージデバイスクラス
7.1.1. ストレージクラス
ストレージクラスは、デバイスクラスを選択するためのワークロード層インターフェイスを提供します。MicroShift では、次のストレージクラスパラメーターがサポートされています。
-
csi.storage.k8s.io/fstype
パラメーターは、ファイルシステムタイプを選択します。xfs
およびext4
の両方のファイルシステムタイプがサポートされています。 -
topolvm.io/device-class
パラメーターは、デバイスクラスの名前です。デバイスクラスが指定されていない場合は、デフォルトのデバイスクラスが使用されます。
複数のストレージクラスが同じデバイスクラスを参照できます。xfs
や ext4
バリアントなど、同じバッキングデバイスクラスに、さまざまなパラメーターセットを指定できます。
MicroShift のデフォルトのストレージクラスリソースの例
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" 1 name: topolvm-provisioner parameters: "csi.storage.k8s.io/fstype": "xfs" 2 provisioner: topolvm.io 3 reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer 4 allowVolumeExpansion: 5
- 1
- デフォルトのストレージクラスの例。PVC がストレージクラスを指定しない場合、このクラスが使用されます。クラスター内に存在できるデフォルトのストレージクラスは 1 つだけです。このアノテーションに値を割り当てないというオプションもサポートされています。
- 2
- ボリューム上にプロビジョニングするファイルシステムを指定します。オプションは "xfs" および "ext4" です。
- 3
- このクラスを管理するプロビジョナーを識別します。
- 4
- クライアント Pod が存在するか、または即時にボリュームをプロビジョニングするかどうかを指定します。オプションは
WaitForFirstConsumer
およびImmediate
です。スケジュール可能な Pod に対してのみストレージがプロビジョニングされるようにするには、WaitForFirstConsumer
を使用することを推奨します。 - 5
StorageClass
からプロビジョニングされる PVC で拡張を許可するかどうかを指定します。MicroShift の LVMS CSI プラグインはボリューム拡張をサポートしますが、この値がfalse
に設定されている場合、拡張はブロックされます。
関連情報