検索

7.15. 仮想マシンディスク

download PDF

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

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

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

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

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

注記

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

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

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

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

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

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

前提条件

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

手順

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

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

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

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

7.15.1.2. コマンドラインを使用したディスクのホットプラグとホットアンプラグ

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

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

前提条件

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

手順

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

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

    $ virtctl removevolume <virtual-machine|virtual-machine-instance> \
      --volume-name=<datavolume|PVC>

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

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

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

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

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

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

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

手順

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

    $ oc edit pvc <pvc_name>
  2. ディスクサイズを更新します。

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

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

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

前提条件

  • 少なくとも 1 つの永続ボリュームが必要です。

手順

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

    DataVolume マニフェストの例

    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. 以下のコマンドを実行してデータボリュームを作成します。

    $ oc create -f <blank-image-datavolume>.yaml

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

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

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

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

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

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

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

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

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

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

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

前提条件

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

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

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

手順

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

    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 マニフェストファイルを保存して変更を適用します。

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

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

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

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

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

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

共有ボリュームの Windows フェイルオーバークラスタリングに必要な、iSCSi 接続と永続的な予約を持つ LUN ディスクの場合は、エラーポリシーを report に設定します。

前提条件

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

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

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

手順

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

    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 マニフェストファイルを保存して変更を適用します。
7.15.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 をクリックします。
7.15.3.2.2. LUN とコマンドラインを使用してディスク共有を設定する

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

手順

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

    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 マニフェストファイルを保存して変更を適用します。

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

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

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

前提条件

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

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

手順

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

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

手順

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

    $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv --type json -p \
    '[{"op":"replace","path":"/spec/featureGates/persistentReservation", "value": true}]'
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.