9.13. 仮想マシンディスク


9.13.1. 仮想マシンディスクのホットプラグ

仮想マシン (VM) または仮想マシンインスタンス (VMI) を停止することなく、仮想ディスクを追加または削除できます。

データボリュームおよび永続ボリューム要求 (PVC) のみをホットプラグおよびホットアンプラグできます。コンテナーディスクのホットプラグおよびホットアンプラグはできません。

ホットプラグされたディスクは、再起動後も仮想マシンに接続されたままになります。仮想マシンからディスクを削除するには、ディスクを切断する必要があります。

ホットプラグされたディスクを永続的に作成して、仮想マシンに永続的にマウントできます。

注記

各仮想マシンには virtio-scsi コントローラーがあり、ホットプラグされたディスクが SCSI バスを使用できるようになります。virtio-scsi コントローラーは、パフォーマンス上の利点を維持しながら、virtio の制限を克服します。スケーラビリティーが高く、400 万台を超えるディスクのホットプラグをサポートします。

通常の virtio はスケーラブルではないため、ホットプラグされたディスクには使用できません。各 virtio ディスクは、仮想マシン内の限られた PCI Express (PCIe) スロットの 1 つを使用します。PCIe スロットは他のデバイスでも使用されるため、事前に予約する必要があります。したがって、スロットはオンデマンドで利用できない場合があります。

9.13.1.1. Web コンソールを使用したディスクのホットプラグとホットアンプラグ

OpenShift Container Platform Web コンソールを使用して、仮想マシンの実行中にディスクを仮想マシンに接続することで、ディスクをホットプラグできます。

ホットプラグされたディスクは、プラグを抜くまで仮想マシンに接続されたままになります。

ホットプラグされたディスクを永続的に作成して、仮想マシンに永続的にマウントできます。

前提条件

  • ホットプラグに使用できるデータボリュームまたは永続ボリュームクレーム (PVC) が必要です。

手順

  1. Web コンソールで Virtualization VirtualMachines に移動します。
  2. 実行中の仮想マシンを選択して、その詳細を表示します。
  3. VirtualMachine details ページで、Configuration Disks をクリックします。
  4. ホットプラグされたディスクを追加します。

    1. Add disk をクリックします。
    2. Add disk (hot plugged) ウィンドウで、Source リストからディスクを選択し、Save をクリックします。
  5. オプション: ホットプラグされたディスクを取り外します。

    1. ディスクの横にある Options メニュー kebab をクリックし、Detach を選択します。
    2. Detach をクリックします。
  6. オプション: ホットプラグされたディスクを永続的にします。

    1. ディスクの横にある Options メニュー kebab をクリックし、Make persistent を選択します。
    2. 仮想マシンを再起動して変更を適用します。

9.13.1.2. CLI を使用したディスクのホットプラグとホットアンプラグ

コマンドラインを使用して、仮想マシンの実行中にディスクのホットプラグおよびホットアンプラグを行うことができます。

ホットプラグされたディスクを永続的に作成して、仮想マシンに永続的にマウントできます。

前提条件

  • ホットプラグ用に 1 つ以上のデータボリュームまたは永続ボリューム要求 (PVC) が利用可能である必要があります。

手順

  • 次のコマンドを実行して、ディスクをホットプラグします。

    Copy to Clipboard Toggle word wrap
    $ virtctl addvolume <virtual-machine|virtual-machine-instance> \
      --volume-name=<datavolume|PVC> \
      [--persist] [--serial=<label-name>]
    • オプションの --persist フラグを使用して、ホットプラグされたディスクを、永続的にマウントされた仮想ディスクとして仮想マシン仕様に追加します。仮想ディスクを永続的にマウントするために、仮想マシンを停止、再開または再起動します。--persist フラグを指定しても、仮想ディスクをホットプラグしたり、ホットアンプラグしたりできなくなります。--persist フラグは仮想マシンに適用され、仮想マシンインスタンスには適用されません。
    • オプションの --serial フラグを使用すると、選択した英数字の文字列ラベルを追加できます。これは、ゲスト仮想マシンでホットプラグされたディスクを特定するのに役立ちます。このオプションを指定しない場合、ラベルはデフォルトでホットプラグされたデータボリュームまたは PVC の名前に設定されます。
  • 次のコマンドを実行して、ディスクをホットアンプラグします。

    Copy to Clipboard Toggle word wrap
    $ virtctl removevolume <virtual-machine|virtual-machine-instance> \
      --volume-name=<datavolume|PVC>

9.13.2. 仮想マシンディスクの拡張

ディスクの永続ボリューム要求 (PVC) を拡張することで、仮想マシンディスクのサイズを増やすことができます。

ストレージプロバイダーがボリューム拡張をサポートしていない場合は、空のデータボリュームを追加することで、仮想マシンの利用可能な仮想ストレージを拡張できます。

仮想マシンディスクのサイズを減らすことはできません。

9.13.2.1. ディスクの PVC を拡張して仮想マシンディスクサイズを増やす

ディスクの永続ボリューム要求 (PVC) を拡張することで、仮想マシンディスクのサイズを増やすことができます。増加した PVC ボリュームを指定するには、仮想マシンを実行した状態で Web コンソールを使用できます。または、CLI で PVC マニフェストを編集することもできます。

注記

PVC がファイルシステムボリュームモードを使用する場合、ディスクイメージファイルは、ファイルシステムのオーバーヘッド用にスペースを確保しながら、利用可能なサイズまで拡張されます。

9.13.2.1.1. Web コンソールで仮想マシンディスク PVC を拡張する

VirtualMachines ページを離れずに仮想マシンを実行している状態でも、Web コンソールで仮想マシンディスク PVC のサイズを増やすことができます。

手順

  1. Administrator または Virtualization パースペクティブで、VirtualMachines ページを開きます。
  2. 実行中の仮想マシンを選択して、Details ページを開きます。
  3. Configuration タブを選択し、Storage をクリックします。
  4. 拡張したいディスクの横にあるオプションメニュー kebab をクリックします。Edit オプションを選択します。

    Edit disk ダイアログが開きます。

  5. PersistentVolumeClaim size フィールドに、希望のサイズを入力します。
  6. Save をクリックします。
注記

現在の値より大きい任意の値を入力できます。ただし、新しい値が使用可能なサイズを超える場合は、エラーが表示されます。

9.13.2.1.2. マニフェストを編集して仮想マシンディスク PVC を拡張する

前提条件

  • OpenShift CLI (oc) がインストールされている。

手順

  1. 拡張する必要のある仮想マシンディスクの PersistentVolumeClaim マニフェストを編集します。

    Copy to Clipboard Toggle word wrap
    $ oc edit pvc <pvc_name>
  2. ディスクサイズを更新します。

    Copy to Clipboard Toggle word wrap
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
       name: vm-disk-expand
    spec:
      accessModes:
         - ReadWriteMany
      resources:
        requests:
           storage: 3Gi 
    1
    
    # ...
    1
    新しいディスクサイズを指定します。

9.13.2.2. 空のデータボリュームを追加して利用可能な仮想ストレージを拡張する

空のデータボリュームを追加することで、仮想マシンの利用可能なストレージを拡張できます。

前提条件

  • 少なくとも 1 つの永続ボリュームが必要です。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. 次の例に示すように、DataVolume マニフェストを作成します。

    DataVolume マニフェストの例

    Copy to Clipboard Toggle word wrap
    apiVersion: cdi.kubevirt.io/v1beta1
    kind: DataVolume
    metadata:
      name: blank-image-datavolume
    spec:
      source:
        blank: {}
      storage:
        resources:
          requests:
            storage: <2Gi> 
    1
    
      storageClassName: "<storage_class>" 
    2

    1
    データボリュームに要求される利用可能なスペースの量を指定します。
    2
    オプション: ストレージクラスを指定しない場合は、デフォルトのストレージクラスが適用されます。
  2. 以下のコマンドを実行してデータボリュームを作成します。

    Copy to Clipboard Toggle word wrap
    $ oc create -f <blank-image-datavolume>.yaml

9.13.3. 仮想マシンの共有ボリュームの設定

共有ディスクを設定して、複数の仮想マシン (VM) が同じ基礎となるストレージを共有できるようにすることができます。共有ディスクのボリュームは、ブロックモードである必要があります。

ディスク共有を設定するには、ストレージを次のいずれかのタイプとして公開します。

  • 通常の仮想マシンディスク
  • 共有ボリュームの Windows フェイルオーバークラスタリングに必要な、SCSI 接続と RAW デバイスマッピングを備えた論理ユニット番号 (LUN) ディスク

ディスク共有を設定するだけでなく、通常の仮想マシンディスクまたは LUN ディスクごとにエラーポリシーを設定することもできます。エラーポリシーは、ディスクの読み取りまたは書き込み時に入出力エラーが発生した場合のハイパーバイザーの動作を制御します。

9.13.3.1. 仮想マシンディスクを使用してディスク共有を設定する

複数の仮想マシン (VM) がストレージを共有できるようにブロックボリュームを設定できます。

ゲストオペレーティングシステムで実行されているアプリケーションに応じて、仮想マシンに設定する必要があるストレージオプションが決まります。disk タイプのディスクは、ボリュームを通常のディスクとして仮想マシンに公開します。

ディスクごとにエラーポリシーを設定できます。エラーポリシーは、ディスクの書き込み中または読み取り中に入出力エラーが発生した場合のハイパーバイザーの動作を制御します。デフォルトの動作では、仮想マシンが停止され、Kubernetes イベントが生成されます。

デフォルトの動作を受け入れることも、エラーポリシーを次のいずれかのオプションに設定することもできます。

  • report、ゲスト内のエラーを報告します。
  • ignore、エラーを無視します。読み取りまたは書き込みの障害は検出されません。
  • enospace、ディスク容量が不足していることを示すエラーを生成します。

前提条件

  • ディスクを共有している仮想マシンが異なるノードで稼働している場合、ボリュームアクセスモードは ReadWriteMany (RWX) である必要があります。

    ディスクを共有している仮想マシンが同じノード上で稼働している場合、ボリュームアクセスモードは ReadWriteOnce (RWO) で問題ありません。

  • ストレージプロバイダーは、必要な Container Storage Interface (CSI) ドライバーをサポートする必要があります。

手順

  1. 次の例のように、仮想マシンの VirtualMachine マニフェストを作成して必要な値を設定します。

    Copy to Clipboard Toggle word wrap
    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: <vm_name>
    spec:
      template:
    # ...
        spec:
          domain:
            devices:
              disks:
              - disk:
                  bus: virtio
                name: rootdisk
                errorPolicy: report 
    1
    
                disk1: disk_one 
    2
    
              - disk:
                  bus: virtio
                name: cloudinitdisk
                disk2: disk_two
                shareable: true 
    3
    
              interfaces:
              - masquerade: {}
                name: default
    1
    エラーポリシーを識別します。
    2
    デバイスをディスクとして識別します。
    3
    共有ディスクを識別します。
  2. VirtualMachine マニフェストファイルを保存して変更を適用します。

9.13.3.2. LUN を使用してディスク共有を設定する

仮想マシン上のデータを外部からのアクセスから保護するには、SCSI 永続予約を有効にし、LUN でバックアップされた仮想マシンディスクを複数の仮想マシン間で共有するように設定します。共有オプションを有効にすると、Windows フェイルオーバークラスタリング実装に必要なコマンドなどの高度な SCSI コマンドを使用して、基盤となるストレージを管理できます。

ストレージボリュームが LUN ディスクタイプとして設定されていると、仮想マシンはボリュームを論理ユニット番号 (LUN) デバイスとして使用できます。その結果、仮想マシンは SCSI コマンドを使用してディスクをデプロイおよび管理できるようになります。

SCSI 永続予約オプションを使用して LUN を予約します。予約を有効にするには、以下を行います。

  1. フィーチャーゲートオプションを設定する。
  2. LUN ディスク上のフィーチャーゲートオプションをアクティブにして、仮想マシンに必要な SCSI デバイス固有の入出力制御 (IOCTL) を発行する。

各 LUN ディスクに対してエラーポリシーを設定できます。エラーポリシーは、ディスクの読み取りまたは書き込み時に入出力エラーが発生した場合のハイパーバイザーの動作を制御します。デフォルトの動作では、ゲストが停止され、Kubernetes イベントが生成されます。

共有ボリュームの Windows Failover Clustering に必要な、SCSi 接続と永続的な予約を持つ LUN ディスクの場合は、エラーポリシーを report に設定します。

重要

OpenShift Virtualization は現在、マルチパスストレージ上で SCSI-3 Persistent Reservations (SCSI-3 PR) をサポートしていません。回避策として、マルチパスを無効にするか、Windows Server Failover Clustering (WSFC) 共有ディスクがマルチパスの一部ではなく単一デバイスから設定されていることを確認してください。

前提条件

  • フィーチャーゲートオプションの設定に必要なクラスター管理者権限がある。
  • ディスクを共有している仮想マシンが異なるノードで稼働している場合、ボリュームアクセスモードは ReadWriteMany (RWX) である必要があります。

    ディスクを共有している仮想マシンが同じノード上で稼働している場合、ボリュームアクセスモードは ReadWriteOnce (RWO) で問題ありません。

  • ストレージプロバイダーは、Fibre Channel (FC)、Fibre Channel over Ethernet (FCoE)、または iSCSI ストレージプロトコルを使用する Container Storage Interface (CSI) ドライバーをサポートする必要があります。
  • クラスター管理者が LUN を使用してディスク共有を設定する場合は、HyperConverged カスタムリソース (CR) でクラスターのフィーチャーゲートを有効にする必要があります。
  • 共有するディスクはブロックモードである必要があります。

手順

  1. 次の例のように、仮想マシンの VirtualMachine マニフェストを編集または作成して、必要な値を設定します。

    Copy to Clipboard Toggle word wrap
    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-0
    spec:
      template:
        spec:
          domain:
            devices:
              disks:
              - disk:
                  bus: sata
                name: rootdisk
              - errorPolicy: report 
    1
    
                lun: 
    2
    
                  bus: scsi
                  reservation: true 
    3
    
                name: na-shared
                serial: shared1234
          volumes:
          - dataVolume:
              name: vm-0
            name: rootdisk
          - name: na-shared
            persistentVolumeClaim:
              claimName: pvc-na-share
    1
    エラーポリシーを識別します。
    2
    LUN ディスクを識別します。
    3
    永続予約が有効であることを識別します。
  2. VirtualMachine マニフェストファイルを保存して変更を適用します。
9.13.3.2.1. LUN と Web コンソールを使用してディスク共有を設定する

OpenShift Container Platform Web コンソールで、LUN を使用してディスク共有を設定できます。

前提条件

  • クラスター管理者は、persistentreservation フィーチャーゲート設定を有効にする必要があります。

手順

  1. Web コンソールで、Virtualization VirtualMachines をクリックします。
  2. 仮想マシンを選択して、VirtualMachine details ページを開きます。
  3. Storage を展開します。
  4. Disks タブで、Add disk をクリックします。
  5. NameSourceSizeInterfaceStorage Class を指定します。
  6. Type として LUN を選択します。
  7. Access Mode として Shared access (RWX) を選択します。
  8. Volume Mode として Block を選択します。
  9. Advanced Settings を展開し、両方のチェックボックスをオンにします。
  10. Save をクリックします。
9.13.3.2.2. LUN と CLI を使用したディスク共有の設定

コマンドラインで LUN を使用してディスク共有を設定できます。

手順

  1. 次の例のように、仮想マシンの VirtualMachine マニフェストを編集または作成して、必要な値を設定します。

    Copy to Clipboard Toggle word wrap
    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-0
    spec:
      template:
        spec:
          domain:
            devices:
              disks:
              - disk:
                  bus: sata
                name: rootdisk
              - errorPolicy: report
                lun: 
    1
    
                  bus: scsi
                  reservation: true 
    2
    
                name: na-shared
                serial: shared1234
          volumes:
          - dataVolume:
              name: vm-0
            name: rootdisk
          - name: na-shared
            persistentVolumeClaim:
              claimName: pvc-na-share
    1
    LUN ディスクを識別します。
    2
    永続予約が有効であることを識別します。
  2. VirtualMachine マニフェストファイルを保存して変更を適用します。

9.13.3.3. PersistentReservation フィーチャーゲートの有効化

SCSI persistentReservation フィーチャーゲートを有効にして、LUN バックアップのブロックモードの仮想マシン (VM) ディスクを、複数の仮想マシン間で共有できます。

デフォルトで、persistentReservation フィーチャーゲートは無効になっています。Web コンソールまたはコマンドラインを使用して、persistentReservation フィーチャーゲートを有効にできます。

前提条件

  • クラスター管理者権限が必要です。
  • ディスクを共有している仮想マシンが異なるノードで稼働している場合、ボリュームアクセスモードは ReadWriteMany (RWX) である必要があります。ディスクを共有している仮想マシンが同じノード上で稼働している場合、ボリュームアクセスモードは ReadWriteOnce (RWO) で問題ありません。
  • ストレージプロバイダーは、Fibre Channel (FC)、Fibre Channel over Ethernet (FCoE)、または iSCSI ストレージプロトコルを使用する Container Storage Interface (CSI) ドライバーをサポートする必要があります。
9.13.3.3.1. Web コンソールを使用した PersistentReservation フィーチャーゲートの有効化

LUN バックアップのブロックモード仮想マシンディスクを複数の仮想マシン間で共有できるようにするには、PersistentReservation フィーチャーゲートを有効にする必要があります。フィーチャーゲートを有効にするには、クラスター管理者権限が必要です。

手順

  1. Web コンソールで Virtualization Overview をクリックします。
  2. Settings タブをクリックします。
  3. Cluster を選択します。
  4. SCSI persistent reservation を展開し、Enable persistent reservation をオンに設定します。
9.13.3.3.2. CLI を使用した PersistentReservation フィーチャーゲートの有効化

コマンドラインを使用して、persistentReservation フィーチャーゲートを有効にできます。フィーチャーゲートを有効にするには、クラスター管理者権限が必要です。

前提条件

  • OpenShift CLI (oc) がインストールされている。

手順

  1. 次のコマンドを実行して、persistentReservation フィーチャーゲートを有効にします。

    Copy to Clipboard Toggle word wrap
    $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv --type json -p \
    '[{"op":"replace","path":"/spec/featureGates/persistentReservation", "value": true}]'

9.13.4. 仮想マシンディスクを別のストレージクラスに移行する

仮想マシン (VM) または仮想マシンインスタンス (VMI) を停止せずに、1 つ以上の仮想ディスクを別のストレージクラスに移行できます。

9.13.4.1. Web コンソールを使用して仮想マシンディスクを別のストレージクラスに移行する

OpenShift Container Platform Web コンソールを使用して、仮想マシン (VM) にアタッチされている 1 つ以上のディスクを別のストレージクラスに移行できます。実行中の仮想マシンでこのアクションを実行すると、仮想マシンの操作は中断されず、移行されたディスク上のデータに引き続きアクセスできます。

注記

OpenShift Virtualization Operator では、一度に 1 つの仮想マシンのストレージクラスの移行のみを開始でき、その仮想マシンは実行中である必要があります。一度に複数の仮想マシンを移行する必要がある場合、または実行中の仮想マシンと停止中の仮想マシンを混在して移行する必要がある場合は、Migration Toolkit for Containers (MTC) の使用を検討してください。

Migration Toolkit for Containers は OpenShift Virtualization には含まれていないため、別途インストールする必要があります。

重要

ストレージクラスの移行は、テクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

前提条件

  • ストレージクラスの移行には、データボリュームまたは永続ボリューム要求 (PVC) が使用可能である必要がある。
  • クラスターにはライブマイグレーションに使用できるノードが必要である。ストレージクラスの移行の一環として、仮想マシンが別のノードにライブマイグレーションされている。
  • 仮想マシンが実行されている必要がある。

手順

  1. Web コンソールで Virtualization VirtualMachines に移動します。
  2. 仮想マシンの横にあるオプションメニュー kebab をクリックし、Migration Storage を選択します。

    このオプションには、VirtualMachine details ページで Actions Migration Storage を選択してアクセスすることもできます。

  3. Migration details ページで、仮想マシンストレージ全体を移行するか、選択したボリュームのみを移行するかを選択します。Selected volumes をクリックする場合は、移行するディスクを選択します。Next をクリックして先に進みます。
  4. Destination StorageClass ページの利用可能なオプションのリストから、移行先のストレージクラスを選択します。Next をクリックして先に進みます。
  5. Review ページで、影響を受けるディスクのリストとターゲットストレージクラスを確認します。移行を開始するには、Migrate VirtualMachine storage をクリックします。
  6. Migrate VirtualMachine storage ページに留まり、進行状況を監視し、移行が正常に完了したことの確認を待ちます。

検証

  1. VirtualMachine details ページから、Configuration Storage に移動します。
  2. すべてのディスクに Storage class 列にリストされている必要なストレージクラスがあることを確認します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.