第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 はボリュームの縮小をサポートしていません。
シンプロビジョニングを使用する場合は、ストレージプールを監視して、使用可能な物理スペースが不足したときに容量を追加することが重要です。ボリュームグループ(VG)内に使用可能な領域がある場合、ストレージプールを自動拡張するように設定できます。シンプロビジョニングされた論理ボリュームの作成
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: 1 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
- シンプールで使用可能なストレージに基づいて追加のストレージをプロビジョニングするのに使用する係数を指定します。たとえば、このフィールドが 10 に設定されている場合、シンプールで使用可能なストレージの量の最大 10 倍をプロビジョニングできます。オーバープロビジョニングを無効にするには、このフィールドを 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
に設定されている場合、拡張はブロックされます。
関連情報