6.2. カスタムイメージからの仮想マシンの作成


6.2.1. カスタムイメージからの仮想マシン作成の概要

次のいずれかの方法を使用して、カスタムオペレーティングシステムイメージから仮想マシンを作成できます。

Containerized Data Importer (CDI) は、データボリュームを使用してイメージを PVC にインポートします。Red Hat OpenShift Service on AWS Web コンソールまたはコマンドラインを使用して、PVC を仮想マシンに追加します。

重要

Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。

Windows 仮想マシンにも VirtIO ドライバー をインストールする必要があります。

QEMU ゲストエージェントは Red Hat イメージに含まれています。

6.2.2. コンテナーディスクを使用した仮想マシンの作成

オペレーティングシステムイメージから構築されたコンテナーディスクを使用して、仮想マシンを作成できます。

コンテナーディスクの自動更新を有効にすることができます。詳細は、ブートソースの自動更新の管理 を参照してください。

重要

コンテナーディスクが大きい場合は、I/O トラフィックが増加し、ワーカーノードが使用できなくなる可能性があります。この問題を解決するには、DeploymentConfig オブジェクトを削除します。

次の手順を実行して、コンテナーディスクから仮想マシンを作成します。

  1. オペレーティングシステムイメージをコンテナーディスクに構築し、それをコンテナーレジストリーにアップロードします
  2. コンテナーレジストリーに TLS がない場合は、レジストリーの TLS を無効にするように環境を設定します
  3. Web コンソール または コマンドライン を使用して、コンテナーディスクをディスクソースとして使用する仮想マシンを作成します。
重要

Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。

6.2.2.1. コンテナーディスクの構築とアップロード

仮想マシンイメージをコンテナーディスクに構築し、レジストリーにアップロードできます。

コンテナーディスクのサイズは、コンテナーディスクがホストされているレジストリーの最大レイヤーサイズによって制限されます。

注記

Red Hat Quay の場合、Red Hat Quay の初回デプロイ時に作成される YAML 設定ファイルを編集して、最大レイヤーサイズを変更できます。

前提条件

  • podman がインストールされている必要があります。
  • QCOW2 または RAW イメージファイルが必要です。

手順

  1. Dockerfile を作成して、仮想マシンイメージをコンテナーイメージにビルドします。仮想マシンイメージは、UID 107 を持つ QEMU によって所有され、コンテナー内の /disk/ ディレクトリーに配置される必要があります。次に、/disk/ ディレクトリーのパーミッションは 0440 に設定する必要があります。

    以下の例では、Red Hat Universal Base Image (UBI) を使用して最初の段階でこれらの設定変更を処理し、2 番目の段階で最小の scratch イメージを使用して結果を保存します。

    $ cat > Dockerfile << EOF
    FROM registry.access.redhat.com/ubi8/ubi:latest AS builder
    ADD --chown=107:107 <vm_image>.qcow2 /disk/ 1
    RUN chmod 0440 /disk/*
    
    FROM scratch
    COPY --from=builder /disk/* /disk/
    EOF
    1
    <vm_image> は、QCOW2 または RAW 形式のイメージです。リモートイメージを使用する場合は、<vm_image>.qcow2 を完全な URL に置き換えます。
  2. コンテナーをビルドし、これにタグ付けします。

    $ podman build -t <registry>/<container_disk_name>:latest .
  3. コンテナーイメージをレジストリーにプッシュします。

    $ podman push <registry>/<container_disk_name>:latest

6.2.2.2. コンテナーレジストリーの TLS を無効にする

HyperConverged カスタムリソースの insecureRegistries フィールドを編集して、1 つ以上のコンテナーレジストリーの TLS(トランスポート層セキュリティー) を無効にできます。

前提条件

  1. 以下のコマンドを実行して、デフォルトのエディターで HyperConverged CR を開きます。

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
  2. セキュアでないレジストリーのリストを spec.storageImport.insecureRegistries フィールドに追加します。

    HyperConverged カスタムリソースの例

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
      namespace: openshift-cnv
    spec:
      storageImport:
        insecureRegistries: 1
          - "private-registry-example-1:5000"
          - "private-registry-example-2:5000"

    1
    このリストのサンプルを、有効なレジストリーホスト名に置き換えます。

6.2.2.3. Web コンソールを使用してコンテナーディスクから仮想マシンを作成する

Red Hat OpenShift Service on AWS Web コンソールを使用して、コンテナーレジストリーからコンテナーディスクをインポートすることで、仮想マシン (VM) を作成できます。

手順

  1. Web コンソールで Virtualization Catalog に移動します。
  2. 使用可能なブートソースのないテンプレートタイルをクリックします。
  3. Customize VirtualMachine をクリックします。
  4. Customize template parameters ページで、Storage を展開し、Disk source リストから Registry (creates PVC) を選択します。
  5. コンテナーイメージの URL を入力します。例: https://mirror.arizona.edu/fedora/linux/releases/38/Cloud/x86_64/images/Fedora-Cloud-Base-38-1.6.x86_64.qcow2
  6. ディスクサイズを設定します。
  7. Next をクリックします。
  8. Create VirtualMachine をクリックします。

6.2.2.4. コマンドラインを使用したコンテナーディスクからの仮想マシンの作成

コマンドラインを使用して、コンテナーディスクから仮想マシンを作成できます。

仮想マシンが作成されると、コンテナーディスクを含むデータボリュームが永続ストレージにインポートされます。

前提条件

  • コンテナーディスクを含むコンテナーレジストリーへのアクセス認証情報が必要です。

手順

  1. VirtualMachine マニフェストを編集し、vm-rhel-datavolume.yaml ファイルとして保存します。

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      creationTimestamp: null
      name: vm-rhel-datavolume 1
      labels:
        kubevirt.io/vm: vm-rhel-datavolume
    spec:
      dataVolumeTemplates:
      - metadata:
          creationTimestamp: null
          name: rhel-dv 2
        spec:
          sourceRef:
            kind: DataSource
            name: rhel9
            namespace: openshift-virtualization-os-images
          storage:
            resources:
              requests:
                storage: 10Gi 3
      instancetype:
        name: u1.small 4
      preference:
        inferFromVolume: datavolumedisk1
      runStrategy: Always
      template:
        metadata:
          creationTimestamp: null
          labels:
            kubevirt.io/vm: vm-rhel-datavolume
        spec:
          domain:
            devices: {}
            resources: {}
          terminationGracePeriodSeconds: 180
          volumes:
          - dataVolume:
              name: rhel-dv
            name: datavolumedisk1
    status: {}
    1
    仮想マシンの名前を指定します。
    2
    データボリュームの名前を指定します。
    3
    データボリュームに要求されるストレージのサイズを指定します。
    4
    オプション: 仮想マシンのリソースサイズを制御するために使用するインスタンスタイプを指定します。
  2. 次のコマンドを実行して VM を作成します。

    $ oc create -f vm-rhel-datavolume.yaml

    oc create コマンドは、データボリュームと仮想マシンを作成します。CDI コントローラーは適切なアノテーションを使用して基礎となる PVC を作成し、インポートプロセスが開始されます。インポートが完了すると、データボリュームのステータスが Succeeded に変わります。仮想マシンを起動できます。

    データボリュームのプロビジョニングはバックグランドで実行されるため、これをプロセスをモニターする必要はありません。

検証

  1. インポーター Pod は、指定された URL からコンテナーディスクをダウンロードし、プロビジョニングされた永続ボリュームに保存します。以下のコマンドを実行してインポーター Pod のステータスを確認します。

    $ oc get pods
  2. 次のコマンドを実行して、ステータスが Succeeded になるまでデータボリュームを監視します。

    $ oc describe dv rhel-dv 1
    1
    VirtualMachine マニフェストで定義したデータボリューム名を指定します。
  3. プロビジョニングが完了し、シリアルコンソールにアクセスして仮想マシンが起動したことを確認します。

    $ virtctl console vm-rhel-datavolume

6.2.3. Web ページからイメージをインポートして仮想マシンを作成する

Web ページからオペレーティングシステムイメージをインポートすることで、仮想マシンを作成できます。

重要

Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。

6.2.3.1. Web コンソールを使用して Web ページ上のイメージから仮想マシンを作成する

Red Hat OpenShift Service on AWS Web コンソールを使用して Web ページからイメージをインポートすることで、仮想マシン (VM) を作成できます。

前提条件

  • イメージを含む Web ページにアクセスできる。

手順

  1. Web コンソールで Virtualization Catalog に移動します。
  2. 使用可能なブートソースのないテンプレートタイルをクリックします。
  3. Customize VirtualMachine をクリックします。
  4. Customize template parameters ページで、Storage を展開し、Disk source リストから URL (creates PVC) を選択します。
  5. イメージの URL を入力します。例: https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.9/x86_64/product-software
  6. コンテナーイメージの URL を入力します。例: https://mirror.arizona.edu/fedora/linux/releases/38/Cloud/x86_64/images/Fedora-Cloud-Base-38-1.6.x86_64.qcow2
  7. ディスクサイズを設定します。
  8. Next をクリックします。
  9. Create VirtualMachine をクリックします。

6.2.3.2. コマンドラインを使用して Web ページ上のイメージから仮想マシンを作成する

コマンドラインを使用して、Web ページ上のイメージから仮想マシンを作成できます。

仮想マシンが作成されると、イメージを含むデータボリュームが永続ストレージにインポートされます。

前提条件

  • イメージを含む Web ページへのアクセス認証情報が必要です。

手順

  1. VirtualMachine マニフェストを編集し、vm-rhel-datavolume.yaml ファイルとして保存します。

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      creationTimestamp: null
      name: vm-rhel-datavolume 1
      labels:
        kubevirt.io/vm: vm-rhel-datavolume
    spec:
      dataVolumeTemplates:
      - metadata:
          creationTimestamp: null
          name: rhel-dv 2
        spec:
          sourceRef:
            kind: DataSource
            name: rhel9
            namespace: openshift-virtualization-os-images
          storage:
            resources:
              requests:
                storage: 10Gi 3
      instancetype:
        name: u1.small 4
      preference:
        inferFromVolume: datavolumedisk1
      runStrategy: Always
      template:
        metadata:
          creationTimestamp: null
          labels:
            kubevirt.io/vm: vm-rhel-datavolume
        spec:
          domain:
            devices: {}
            resources: {}
          terminationGracePeriodSeconds: 180
          volumes:
          - dataVolume:
              name: rhel-dv
            name: datavolumedisk1
    status: {}
    1
    仮想マシンの名前を指定します。
    2
    データボリュームの名前を指定します。
    3
    データボリュームに要求されるストレージのサイズを指定します。
    4
    オプション: 仮想マシンのリソースサイズを制御するために使用するインスタンスタイプを指定します。
  2. 次のコマンドを実行して VM を作成します。

    $ oc create -f vm-rhel-datavolume.yaml

    oc create コマンドは、データボリュームと仮想マシンを作成します。CDI コントローラーは適切なアノテーションを使用して基礎となる PVC を作成し、インポートプロセスが開始されます。インポートが完了すると、データボリュームのステータスが Succeeded に変わります。仮想マシンを起動できます。

    データボリュームのプロビジョニングはバックグランドで実行されるため、これをプロセスをモニターする必要はありません。

検証

  1. インポーター Pod は、指定された URL からイメージをダウンロードし、プロビジョニングされた永続ボリュームに保存します。以下のコマンドを実行してインポーター Pod のステータスを確認します。

    $ oc get pods
  2. 次のコマンドを実行して、ステータスが Succeeded になるまでデータボリュームを監視します。

    $ oc describe dv rhel-dv 1
    1
    VirtualMachine マニフェストで定義したデータボリューム名を指定します。
  3. プロビジョニングが完了し、シリアルコンソールにアクセスして仮想マシンが起動したことを確認します。

    $ virtctl console vm-rhel-datavolume

6.2.4. イメージをアップロードして仮想マシンを作成する

ローカルマシンからオペレーティングシステムイメージをアップロードすることで、仮想マシンを作成できます。

Windows イメージを PVC にアップロードすることで、Windows 仮想マシンを作成できます。次に、仮想マシンの作成時に PVC のクローンを作成します。

重要

Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。

Windows 仮想マシンにも VirtIO ドライバー をインストールする必要があります。

6.2.4.1. Web コンソールを使用して、アップロードされたイメージから仮想マシンを作成する

Red Hat OpenShift Service on AWS Web コンソールを使用して、アップロードされたオペレーティングシステムイメージから仮想マシン (VM) を作成できます。

前提条件

  • IMGISO、または QCOW2 イメージファイルが必要です。

手順

  1. Web コンソールで Virtualization Catalog に移動します。
  2. 使用可能なブートソースのないテンプレートタイルをクリックします。
  3. Customize VirtualMachine をクリックします。
  4. Customize template parameters ページで、Storage を展開し、Disk source リストから Upload (Upload a new file to a PVC) を選択します。
  5. ローカルマシン上のイメージを参照し、ディスクサイズを設定します。
  6. Customize VirtualMachine をクリックします。
  7. Create VirtualMachine をクリックします。
6.2.4.1.1. 仮想マシンイメージの一般化

システム固有の設定データをすべて削除して Red Hat Enterprise Linux (RHEL) イメージを一般化してから、そのイメージを使用してゴールデンイメージ (仮想マシンの事前設定済みスナップショット) を作成できます。ゴールデンイメージを使用して新しい仮想マシンをデプロイできます。

virtctlguestfsvirt-sysprep ツールを使用して、RHEL 仮想マシンを一般化できます。

前提条件

  • ベースの仮想マシンとして使用する RHEL 仮想マシンがある。
  • OpenShift CLI (oc) がインストールされている。
  • virtctl ツールがインストールされている。

手順

  1. 実行中の RHEL 仮想マシンを停止するには、次のコマンドを入力します。

    $ virtctl stop <my_vm_name>
  2. オプション: 元の仮想マシンのデータが失われないように、仮想マシンのクローンを作成します。その後、クローンの仮想マシンを一般化できます。
  3. 次のコマンドを実行して、仮想マシンのルートファイルシステムを格納する dataVolume を取得します。

    $ oc get vm <my_vm_name> -o jsonpath="{.spec.template.spec.volumes}{'\n'}"

    出力例

    [{"dataVolume":{"name":"<my_vm_volume>"},"name":"rootdisk"},{"cloudInitNoCloud":{...}]

  4. 次のコマンドを実行して、リストされた dataVolume に一致する永続ボリューム要求 (PVC) を取得します。

    $ oc get pvc

    出力例

    NAME            STATUS   VOLUME  CAPACITY   ACCESS MODES  STORAGECLASS     AGE
    <my_vm_volume> Bound  …

    注記

    クラスター設定により仮想マシンを複製できない場合は、元の仮想マシンのデータが失われないように、代わりに仮想マシン PVC をデータボリュームに複製できます。その後、複製した PVC を使用してゴールデンイメージを作成できます。

    PVC を複製してゴールデンイメージを作成する場合は、複製された PVC を使用して次の手順に進みます。

  5. libguestfs-tools を使用して新しいインタラクティブコンテナーをデプロイし、次のコマンドを実行して PVC をそれにアタッチします。

    $ virtctl guestfs <my-vm-volume> --uid 107

    このコマンドは、次のコマンドを実行するためのシェルを開きます。

  6. 次のコマンドを実行して、システム固有のすべての設定を削除します。

    $ virt-sysprep -a disk.img
  7. Red Hat OpenShift Service on AWS コンソールで、Virtualization Catalog をクリックします。
  8. Add volume をクリックします。
  9. Add volume ウィンドウで、以下を実行します。

    1. Source type リストから、Use existing Volume を選択します。
    2. Volume project リストからプロジェクトを選択します。
    3. Volume name リストから正しい PVC を選択します。
    4. Volume name フィールドに、新しいゴールデンイメージの名前を入力します。
    5. Preference リストから、使用している RHEL バージョンを選択します。
    6. Default Instance Type リストから、以前に選択した RHEL バージョンに適した CPU とメモリーの要件を持つインスタンスタイプを選択します。
    7. Save をクリックします。

新しいボリュームが Select volume to boot from リストに表示されます。これが新しいゴールデンイメージです。このボリュームを使用して新しい仮想マシンを作成できます。

6.2.4.2. Windows 仮想マシンの作成

Windows 仮想マシン (VM) を作成するには、Windows イメージを永続ボリューム要求 (PVC) にアップロードし、Red Hat OpenShift Service on AWS Web コンソールを使用した仮想マシンの作成時に PVC のクローンを作成します。

前提条件

手順

  1. Windows イメージを新しい PVC としてアップロードします。

    1. Web コンソールで Storage PersistentVolumeClaims に移動します。
    2. Create PersistentVolumeClaim With Data upload form をクリックします。
    3. Windows イメージを参照して選択します。
    4. PVC 名を入力し、ストレージクラスとサイズを選択して、Upload をクリックします。

      Windows イメージは PVC にアップロードされます。

  2. アップロードされた PVC のクローンを作成して、新しい仮想マシンを設定します。

    1. Virtualization Catalog に移動します。
    2. Windows テンプレートタイルを選択し、Customize VirtualMachine をクリックします。
    3. Disk source リストから Clone (clone PVC) を選択します。
    4. PVC プロジェクト、Windows イメージ PVC、およびディスクサイズを選択します。
  3. アンサーファイルを仮想マシンに適用します。

    1. VirtualMachine パラメーターのカスタマイズ をクリックします。
    2. Scripts タブの Sysprep セクションで、Edit をクリックします。
    3. autounattend.xml 応答ファイルを参照し、Save をクリックします。
  4. 仮想マシンの実行戦略を設定します。

    1. 仮想マシンがすぐに起動しないように、Start this VirtualMachine after creation をオフにします。
    2. Create VirtualMachine をクリックします。
    3. YAML タブで、running:falserunStrategy: RerunOnFailure に置き換え、Save をクリックします。
  5. オプションメニュー kebab をクリックして Start を選択します。

    仮想マシンは、autounattend.xml アンサーファイルを含む sysprep ディスクから起動します。

6.2.4.2.1. Windows 仮想マシンイメージの一般化

Windows オペレーティングシステムイメージを一般化して、イメージを使用して新しい仮想マシンを作成する前に、システム固有の設定データをすべて削除できます。

仮想マシンを一般化する前に、Windows の無人インストール後にsysprepツールが応答ファイルを検出できないことを確認する必要があります。

前提条件

  • QEMU ゲストエージェントがインストールされた実行中の Windows 仮想マシン。

手順

  1. Red Hat OpenShift Service on AWS コンソールで、Virtualization VirtualMachines をクリックします。
  2. Windows 仮想マシンを選択して、VirtualMachine details ページを開きます。
  3. Configuration Disks をクリックします。
  4. sysprep ディスクの横にある Options メニュー kebab をクリックし、Detach を選択します。
  5. Detach をクリックします。
  6. sysprepツールによる検出を回避するために、C:\Windows\Panther\unattend.xmlの名前を変更します。
  7. 次のコマンドを実行して、sysprep プログラムを開始します。

    %WINDIR%\System32\Sysprep\sysprep.exe /generalize /shutdown /oobe /mode:vm
  8. sysprepツールが完了すると、Windows 仮想マシンがシャットダウンします。これで、仮想マシンのディスクイメージを Windows 仮想マシンのインストールイメージとして使用できるようになりました。

これで、仮想マシンを特殊化できます。

6.2.4.2.2. Windows 仮想マシンイメージの特殊化

Windows 仮想マシンを特殊化すると、一般化された Windows イメージから VM にコンピューター固有の情報が設定されます。

前提条件

  • 一般化された Windows ディスクイメージが必要です。
  • unattend.xml 応答ファイルを作成する必要があります。詳細は、Microsoft のドキュメント を参照してください。

手順

  1. Red Hat OpenShift Service on AWS コンソールで、Virtualization Catalog をクリックします。
  2. Windows テンプレートを選択し、Customize VirtualMachine をクリックします。
  3. Disk source リストから PVC (clone PVC) を選択します。
  4. 一般化された Windows イメージの PVC プロジェクトと PVC 名を選択します。
  5. VirtualMachine パラメーターのカスタマイズ をクリックします。
  6. Scripts タブをクリックします。
  7. Sysprep セクションで、Edit をクリックし、unattend.xml 応答ファイルを参照して、Save をクリックします。
  8. Create VirtualMachine をクリックします。

Windows は初回起動時に、unattend.xml 応答ファイルを使用して VM を特殊化します。これで、仮想マシンを使用する準備が整いました。

6.2.4.3. コマンドラインを使用して、アップロードされたイメージから仮想マシンを作成する

virtctl コマンドラインツールを使用して、オペレーティングシステムイメージをアップロードできます。既存のデータボリュームを使用することも、イメージ用に新しいデータボリュームを作成することもできます。

前提条件

  • ISOIMG、または QCOW2 オペレーティングシステムイメージファイルがある。
  • 最高のパフォーマンスを得るには、virt-sparsify ツールまたは xz ユーティリティーまたは gzip ユーティリティーを使用してイメージファイルを圧縮しておく。
  • virtctl がインストールされている。
  • クライアントマシンは、Red Hat OpenShift Service on AWS ルーターの証明書を信頼するように設定する必要があります。

手順

  1. virtctl image-upload コマンドを実行してイメージをアップロードします。

    $ virtctl image-upload dv <datavolume_name> \ 1
      --size=<datavolume_size> \ 2
      --image-path=</path/to/image> \ 3
    1
    データボリュームの名前。
    2
    データボリュームのサイズ。例: --size=500Mi--size=1G
    3
    イメージのファイルパス。
    注記
    • 新規データボリュームを作成する必要がない場合は、--size パラメーターを省略し、--no-create フラグを含めます。
    • ディスクイメージを PVC にアップロードする場合、PVC サイズは圧縮されていない仮想ディスクのサイズよりも大きくなければなりません。
    • HTTPS を使用したセキュアでないサーバー接続を許可するには、--insecure パラメーターを使用します。--insecure フラグを使用する際に、アップロードエンドポイントの信頼性は検証 されない 点に注意してください。
  2. オプション: データボリュームが作成されたことを確認するには、以下のコマンドを実行してすべてのデータボリュームを表示します。

    $ oc get dvs

6.2.5. 仮想マシンのクローン作成

仮想マシンのクローンを作成するか、スナップショットから新しい仮想マシンを作成できます。

6.2.5.1. Web コンソールを使用して仮想マシンを複製する

Web コンソールを使用して、既存の仮想マシンを複製できます。

手順

  1. Web コンソールで Virtualization VirtualMachines に移動します。
  2. 仮想マシンを選択して、VirtualMachine details ページを開きます。
  3. Actions をクリックします。
  4. Clone を選択します。
  5. Clone VirtualMachine ページで、新しい仮想マシンの名前を入力します。
  6. (オプション) Start cloned VM チェックボックスを選択して、複製された仮想マシンを開始します。
  7. Clone をクリックします。

6.2.5.2. Web コンソールを使用して既存のスナップショットから仮想マシンを作成する

既存のスナップショットをコピーすることで、新しい仮想マシンを作成できます。

手順

  1. Web コンソールで Virtualization VirtualMachines に移動します。
  2. 仮想マシンを選択して、VirtualMachine details ページを開きます。
  3. Snapshots タブをクリックします。
  4. コピーするスナップショットのアクションメニュー kebab をクリックします。
  5. Create VirtualMachine を選択します。
  6. 仮想マシンの名前を入力します。
  7. (オプション) Start this VirtualMachine after creation チェックボックスを選択して、新しい仮想マシンを起動します。
  8. Create をクリックします。

6.2.5.3. 関連情報

6.2.6. PVC のクローン作成による仮想マシンの作成

カスタムイメージを使用して既存の永続ボリューム要求 (PVC) のクローンを作成することで、仮想マシンを作成できます。

Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェント をインストールする必要があります。

PVC のクローンを作成するには、ソース PVC を参照するデータボリュームを作成します。

6.2.6.1. クローン作成について

データボリュームのクローンを作成する場合、Containerized Data Importer (CDI) は、次の Container Storage Interface (CSI) クローンメソッドのいずれかを選択します。

  • CSI ボリュームのクローン作成
  • スマートクローン作成

CSI ボリュームのクローン作成方法とスマートクローン作成方法はどちらも効率的ですが、使用するには特定の要件があります。要件が満たされていない場合、CDI はホスト支援型クローン作成を使用します。ホスト支援型クローン作成は、最も時間がかかり、最も効率の悪いクローン作成方法ですが、他の 2 つのクローン作成方法よりも要件の数が少ないです。

6.2.6.1.1. CSI ボリュームのクローン作成

Container Storage Interface (CSI) のクローン作成では、CSI ドライバー機能を使用して、ソースデータボリュームのクローンをより効率的に作成します。

CSI ボリュームのクローン作成には次の要件があります。

  • 永続ボリューム要求 (PVC) のストレージクラスをサポートする CSI ドライバーは、ボリュームのクローン作成をサポートする必要があります。
  • CDI によって認識されないプロビジョナーの場合、対応するストレージプロファイルの cloneStrategy が CSI Volume Cloning に設定されている必要があります。
  • ソース PVC とターゲット PVC は、同じストレージクラスとボリュームモードを持つ必要があります。
  • データボリュームを作成する場合は、ソース namespace に datavolumes/source リソースを作成するパーミッションが必要です。
  • ソースボリュームは使用されていない状態である必要があります。
6.2.6.1.2. スマートクローン作成

スナップショット機能を備えた Container Storage Interface (CSI) プラグインが使用可能な場合、Containerized Data Importer (CDI) はスナップショットから永続ボリューム要求 (PVC) を作成し、これにより、追加の PVC の効率的なクローン作成を可能にします。

スマートクローン作成には次の要件があります。

  • ストレージクラスに関連付けられたスナップショットクラスが存在する必要があります。
  • ソース PVC とターゲット PVC は、同じストレージクラスとボリュームモードを持つ必要があります。
  • データボリュームを作成する場合は、ソース namespace に datavolumes/source リソースを作成するパーミッションが必要です。
  • ソースボリュームは使用されていない状態である必要があります。
6.2.6.1.3. ホスト支援型クローン作成

Container Storage Interface (CSI) ボリュームのクローン作成もスマートクローン作成の要件も満たされていない場合、ホスト支援型クローン作成がフォールバック方法として使用されます。ホスト支援型クローン作成は、他の 2 つのクローン作成方法と比べると効率が悪いです。

ホスト支援型クローン作成では、ソース Pod とターゲット Pod を使用して、ソースボリュームからターゲットボリュームにデータをコピーします。ターゲットの永続ボリューム要求 (PVC) には、ホスト支援型クローン作成が使用された理由を説明するフォールバック理由のアノテーションが付けられ、イベントが作成されます。

PVC ターゲットアノテーションの例

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    cdi.kubevirt.io/cloneFallbackReason: The volume modes of source and target are incompatible
    cdi.kubevirt.io/clonePhase: Succeeded
    cdi.kubevirt.io/cloneType: copy

イベント例

NAMESPACE   LAST SEEN   TYPE      REASON                    OBJECT                              MESSAGE
test-ns     0s          Warning   IncompatibleVolumeModes   persistentvolumeclaim/test-target   The volume modes of source and target are incompatible

6.2.6.2. Web コンソールを使用した PVC からの仮想マシンの作成

Red Hat OpenShift Service on AWS Web コンソールを使用して Web ページからイメージをインポートすることで、仮想マシン (VM) を作成できます。Red Hat OpenShift Service on AWS Web コンソールを使用して永続ボリューム要求 (PVC) のクローンを作成し、仮想マシン (VM) を作成できます。

前提条件

  • イメージを含む Web ページにアクセスできる。
  • ソース PVC を含む namespace にアクセスできる。

手順

  1. Web コンソールで Virtualization Catalog に移動します。
  2. 使用可能なブートソースのないテンプレートタイルをクリックします。
  3. Customize VirtualMachine をクリックします。
  4. テンプレートパラメーターのカスタマイズ ページで、Storage を展開し、Disk source リストから PVC (clone PVC) を選択します。
  5. イメージの URL を入力します。例: https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.9/x86_64/product-software
  6. コンテナーイメージの URL を入力します。例: https://mirror.arizona.edu/fedora/linux/releases/38/Cloud/x86_64/images/Fedora-Cloud-Base-38-1.6.x86_64.qcow2
  7. PVC プロジェクトと PVC 名を選択します。
  8. ディスクサイズを設定します。
  9. Next をクリックします。
  10. Create VirtualMachine をクリックします。

6.2.6.3. コマンドラインを使用した PVC からの仮想マシンの作成

コマンドラインを使用して既存の仮想マシンの永続ボリューム要求 (PVC) のクローンを作成することで、仮想マシンを作成できます。

次のオプションのいずれかを使用して、PVC のクローンを作成できます。

  • PVC を新しいデータボリュームに複製します。

    この方法では、ライフサイクルが元の仮想マシンから独立したデータボリュームが作成されます。元の仮想マシンを削除しても、新しいデータボリュームやそれに関連付けられた PVC には影響しません。

  • dataVolumeTemplates スタンザを含む VirtualMachine マニフェストを作成して、PVC を複製します。

    この方法では、ライフサイクルが元の仮想マシンに依存するデータボリュームが作成されます。元の仮想マシンを削除すると、クローン作成されたデータボリュームとそれに関連付けられた PVC も削除されます。

6.2.6.3.1. データボリュームへの PVC のクローン作成

コマンドラインを使用して、既存の仮想マシンディスクの永続ボリューム要求 (PVC) のクローンをデータボリュームに作成できます。

元のソース PVC を参照するデータボリュームを作成します。新しいデータボリュームのライフサイクルは、元の仮想マシンから独立しています。元の仮想マシンを削除しても、新しいデータボリュームやそれに関連付けられた PVC には影響しません。

異なるボリュームモード間のクローン作成は、ソース PV とターゲット PV が kubevirt コンテンツタイプに属している限り、ブロック永続ボリューム (PV) からファイルシステム PV へのクローン作成など、ホスト支援型クローン作成でサポートされます。

前提条件

  • ソース PVC を含む仮想マシンの電源をオフにする必要があります。
  • PVC を別の namespace に複製する場合は、ターゲットの namespace にリソースを作成するパーミッションが必要です。
  • スマートクローン作成の追加の前提条件:

    • ストレージプロバイダーはスナップショットをサポートする必要がある。
    • ソース PVC とターゲット PVC には、同じストレージプロバイダーとボリュームモードがある必要があります。
    • 次の例に示すように、VolumeSnapshotClass オブジェクトの driver キーの値は、StorageClass オブジェクトの provisioner キーの値と一致する必要があります。

      VolumeSnapshotClass オブジェクトの例

      kind: VolumeSnapshotClass
      apiVersion: snapshot.storage.k8s.io/v1
      driver: openshift-storage.rbd.csi.ceph.com
      # ...

      StorageClass オブジェクトの例

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      # ...
      provisioner: openshift-storage.rbd.csi.ceph.com

手順

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

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: DataVolume
    metadata:
      name: <datavolume> 1
    spec:
      source:
        pvc:
          namespace: "<source_namespace>" 2
          name: "<my_vm_disk>" 3
      storage: {}
    1
    新しいデータボリュームの名前を指定します。
    2
    ソース PVC の namespace を指定します。
    3
    ソース PVC の名前を指定します。
  2. 以下のコマンドを実行してデータボリュームを作成します。

    $ oc create -f <datavolume>.yaml
    注記

    データ量により、PVC が準備される前に仮想マシンが起動できなくなります。PVC のクローン作成中に、新しいデータボリュームを参照する仮想マシンを作成できます。

6.2.6.3.2. データボリュームテンプレートを使用したクローン PVC からの仮想マシンの作成

データボリュームテンプレートを使用して、既存の仮想マシンの永続ボリューム要求 (PVC) のクローンを作成する仮想マシンを作成できます。

この方法では、ライフサイクルが元の仮想マシンに依存するデータボリュームが作成されます。元の仮想マシンを削除すると、クローン作成されたデータボリュームとそれに関連付けられた PVC も削除されます。

前提条件

  • ソース PVC を含む仮想マシンの電源をオフにする必要があります。

手順

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

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: vm-dv-clone
      name: vm-dv-clone 1
    spec:
      running: false
      template:
        metadata:
          labels:
            kubevirt.io/vm: vm-dv-clone
        spec:
          domain:
            devices:
              disks:
              - disk:
                  bus: virtio
                name: root-disk
            resources:
              requests:
                memory: 64M
          volumes:
          - dataVolume:
              name: favorite-clone
            name: root-disk
      dataVolumeTemplates:
      - metadata:
          name: favorite-clone
        spec:
          storage:
            accessModes:
            - ReadWriteOnce
            resources:
              requests:
                storage: 2Gi
          source:
            pvc:
              namespace: <source_namespace> 2
              name: "<source_pvc>" 3
    1
    仮想マシンの名前を指定します。
    2
    ソース PVC の namespace を指定します。
    3
    ソース PVC の名前を指定します。
  2. PVC のクローンが作成されたデータボリュームで仮想マシンを作成します。

    $ oc create -f <vm-clone-datavolumetemplate>.yaml

6.2.7. QEMU ゲストエージェントと VirtIO ドライバーのインストール

QEMU ゲストエージェントは、仮想マシンで実行され、仮想マシン、ユーザー、ファイルシステム、およびセカンダリーネットワークに関する情報をホストに渡すデーモンです。

Red Hat が提供していないオペレーティングシステムイメージから作成された仮想マシンには、QEMU ゲストエージェントをインストールする必要があります。

6.2.7.1. QEMU ゲストエージェントのインストール

6.2.7.1.1. Linux 仮想マシンへの QEMU ゲストエージェントのインストール

qemu-guest-agent は広範な使用が可能で、Red Hat Enterprise Linux (RHEL) 仮想マシン (VM) においてデフォルトで使用できます。このエージェントをインストールし、サービスを起動します。

注記

整合性が最も高いオンライン (実行状態) の仮想マシンのスナップショットを作成するには、QEMU ゲストエージェントをインストールします。

QEMU ゲストエージェントは、システムのワークロードに応じて、可能な限り仮想マシンのファイルシステムの休止しようとすることで一貫性のあるスナップショットを取得します。これにより、スナップショットの作成前にインフライトの I/O がディスクに書き込まれるようになります。ゲストエージェントが存在しない場合は、休止はできず、ベストエフォートスナップショットが作成されます。スナップショットの作成条件は、Web コンソールまたは CLI に表示されるスナップショットの指示に反映されます。

手順

  1. コンソールまたは SSH を使用して仮想マシンにログインします。
  2. 次のコマンドを実行して、QEMU ゲストエージェントをインストールします。

    $ yum install -y qemu-guest-agent
  3. サービスに永続性があることを確認し、これを起動します。

    $ systemctl enable --now qemu-guest-agent

検証

  • 次のコマンドを実行して、AgentConnected が VM 仕様にリストされていることを確認します。

    $ oc get vm <vm_name>
6.2.7.1.2. Windows 仮想マシンへの QEMU ゲストエージェントのインストール

Windows 仮想マシンの場合には、QEMU ゲストエージェントは VirtIO ドライバーに含まれます。ドライバーは、Windows のインストール中または既存の Windows 仮想マシンにインストールできます。

注記

整合性が最も高いオンライン (実行状態) の仮想マシンのスナップショットを作成するには、QEMU ゲストエージェントをインストールします。

QEMU ゲストエージェントは、システムのワークロードに応じて、可能な限り仮想マシンのファイルシステムの休止しようとすることで一貫性のあるスナップショットを取得します。これにより、スナップショットの作成前にインフライトの I/O がディスクに書き込まれるようになります。ゲストエージェントが存在しない場合は、休止はできず、ベストエフォートスナップショットが作成されます。スナップショットの作成条件は、Web コンソールまたは CLI に表示されるスナップショットの指示に反映されます。

手順

  1. Windows Guest Operating System で、File Explorer を使用して、virtio-win CD ドライブの guest-agent ディレクトリーに移動します。
  2. qemu-ga-x86_64.msi インストーラーを実行します。

検証

  1. 次のコマンドを実行して、ネットワークサービスのリストを取得します。

    $ net start
  2. 出力に QEMU Guest Agent が含まれていることを確認します。

6.2.7.2. Windows 仮想マシンへの VirtIO ドライバーのインストール

VirtIO ドライバーは、Microsoft Windows 仮想マシンが OpenShift Virtualization で実行されるために必要な準仮想化デバイスドライバーです。ドライバーは残りのイメージと同梱されるされるため、個別にダウンロードする必要はありません。

container-native-virtualization/virtio-win コンテナーディスクは、ドライバーのインストールを有効にするために SATA CD ドライブとして仮想マシンに割り当てられる必要があります。VirtIO ドライバーは、Windows のインストール中にインストールすることも、既存の Windows インストールに追加することもできます。

ドライバーのインストール後に、container-native-virtualization/virtio-win コンテナーディスクは仮想マシンから削除できます。

表6.3 サポートされているドライバー
ドライバー名ハードウェア ID説明

viostor

VEN_1AF4&DEV_1001
VEN_1AF4&DEV_1042

ブロックドライバー。Other devices グループの SCSI Controller としてラベル付けされる場合があります。

viorng

VEN_1AF4&DEV_1005
VEN_1AF4&DEV_1044

エントロピーソースドライバー。Other devices グループの PCI Device としてラベル付けされる場合があります。

NetKVM

VEN_1AF4&DEV_1000
VEN_1AF4&DEV_1041

ネットワークドライバー。Other devices グループの Ethernet Controller としてラベル付けされる場合があります。VirtIO NIC が設定されている場合にのみ利用できます。

6.2.7.2.1. インストール中に VirtIO コンテナーディスクを Windows 仮想マシンにアタッチする

必要な Windows ドライバーをインストールするには、VirtIO コンテナーディスクを Windows 仮想マシンにアタッチする必要があります。これは、仮想マシンの作成時に実行できます。

手順

  1. テンプレートから Windows 仮想マシンを作成する場合は、Customize VirtualMachine をクリックします。
  2. Mount Windows drivers disk を選択します。
  3. Customize VirtualMachine parameters をクリックします。
  4. Create VirtualMachine をクリックします。

仮想マシンの作成後、virtio-win SATA CD ディスクが仮想マシンにアタッチされます。

6.2.7.2.2. VirtIO コンテナーディスクを既存の Windows 仮想マシンにアタッチする

必要な Windows ドライバーをインストールするには、VirtIO コンテナーディスクを Windows 仮想マシンにアタッチする必要があります。これは既存の仮想マシンに対して実行できます。

手順

  1. 既存の Windows 仮想マシンに移動し、Actions Stop をクリックします。
  2. VM Details Configuration Disks に移動し、Add disk をクリックします。
  3. コンテナーソースから windows-driver-disk を追加し、TypeCD-ROM に設定して、InterfaceSATA に設定します。
  4. Save をクリックします。
  5. 仮想マシンを起動し、グラフィカルコンソールに接続します。
6.2.7.2.3. Windows インストール時の VirtIO ドライバーのインストール

仮想マシンに Windows をインストールする際に VirtIO ドライバーをインストールできます。

注記

この手順では、Windows インストールの汎用的なアプローチを使用しますが、インストール方法は Windows のバージョンごとに異なる可能性があります。インストールする Windows のバージョンに関するドキュメントを参照してください。

前提条件

  • virtio ドライバーを含むストレージデバイスを仮想マシンに接続している。

手順

  1. Windows オペレーティングシステムでは、File Explorer を使用して virtio-win CD ドライブに移動します。
  2. ドライブをダブルクリックして、仮想マシンに適切なインストーラーを実行します。

    64 ビット vCPU の場合は、virtio-win-gt-x64 インストーラーを選択します。32 ビット vCPU はサポート対象外になりました。

  3. オプション: インストーラーの Custom Setup 手順で、インストールするデバイスドライバーを選択します。デフォルトでは、推奨ドライバーセットが選択されています。
  4. インストールが完了したら、Finish を選択します。
  5. 仮想マシンを再起動します。

検証

  1. PC でシステムディスクを開きます。通常は (C:) です。
  2. Program Files Virtio-Win に移動します。

Virtio-Win ディレクトリーが存在し、各ドライバーのサブディレクトリーが含まれていればインストールは成功です。

6.2.7.2.4. 既存の Windows 仮想マシン上の SATA CD ドライブから VirtIO ドライバーのインストール

VirtIO ドライバーは、SATA CD ドライブから既存の Windows 仮想マシンにインストールできます。

注記

この手順では、ドライバーを Windows に追加するための汎用的なアプローチを使用しています。特定のインストール手順は、お使いの Windows バージョンに関するインストールドキュメントを参照してください。

前提条件

  • virtio ドライバーを含むストレージデバイスは、SATA CD ドライブとして仮想マシンに接続する必要があります。

手順

  1. 仮想マシンを起動し、グラフィカルコンソールに接続します。
  2. Windows ユーザーセッションにログインします。
  3. Device Manager を開き、Other devices を拡張して、Unknown device をリスト表示します。

    1. Device Properties を開いて、不明なデバイスを特定します。
    2. デバイスを右クリックし、Properties を選択します。
    3. Details タブをクリックし、Property リストで Hardware Ids を選択します。
    4. Hardware IdsValue をサポートされる VirtIO ドライバーと比較します。
  4. デバイスを右クリックし、Update Driver Software を選択します。
  5. Browse my computer for driver software をクリックし、VirtIO ドライバーが置かれている割り当て済みの SATA CD ドライブの場所に移動します。ドライバーは、ドライバーのタイプ、オペレーティングシステム、および CPU アーキテクチャー別に階層的に編成されます。
  6. Next をクリックしてドライバーをインストールします。
  7. 必要なすべての VirtIO ドライバーに対してこのプロセスを繰り返します。
  8. ドライバーのインストール後に、Close をクリックしてウィンドウを閉じます。
  9. 仮想マシンを再起動してドライバーのインストールを完了します。
6.2.7.2.5. SATA CD ドライブとして追加されたコンテナーディスクからの VirtIO ドライバーのインストール

Windows 仮想マシンに SATA CD ドライブとして追加するコンテナーディスクから VirtIO ドライバーをインストールできます。

ヒント

コンテナーディスクがクラスター内に存在しない場合、コンテナーディスクは Red Hat レジストリーからダウンロードされるため、Red Hat エコシステムカタログ からの container-native-virtualization/virtio-win コンテナーディスクのダウンロードは必須ではありません。ただし、ダウンロードするとインストール時間が短縮されます。

前提条件

  • 制限された環境では、Red Hat レジストリー、またはダウンロードされた container-native-virtualization/virtio-win コンテナーディスクにアクセスできる必要があります。

手順

  1. VirtualMachine マニフェストを編集して、container-native-virtualization/virtio-win コンテナーディスクを CD ドライブとして追加します。

    # ...
    spec:
      domain:
        devices:
          disks:
            - name: virtiocontainerdisk
              bootOrder: 2 1
              cdrom:
                bus: sata
    volumes:
      - containerDisk:
          image: container-native-virtualization/virtio-win
        name: virtiocontainerdisk
    1
    OpenShift Virtualization は、VirtualMachine マニフェストで定義された順序で仮想マシンディスクを起動します。container-native-virtualization/virtio-win コンテナーディスクの前に起動する他の仮想マシンディスクを定義するか、オプションの bootOrder パラメーターを使用して仮想マシンが正しいディスクから起動するようにすることができます。ディスクのブート順序を設定する場合は、他のディスクのブート順序も設定する必要があります。
  2. 変更を適用します。

    • 仮想マシンを実行していない場合は、次のコマンドを実行します。

      $ virtctl start <vm> -n <namespace>
    • 仮想マシンが実行中の場合は、仮想マシンを再起動するか、次のコマンドを実行します。

      $ oc apply -f <vm.yaml>
  3. 仮想マシンが起動したら、SATA CD ドライブから VirtIO ドライバーをインストールします。

6.2.7.3. VirtIO ドライバーの更新

6.2.7.3.1. Windows 仮想マシンでの VirtIO ドライバーの更新

Windows Update サービスを使用して、Windows 仮想マシン上の virtio ドライバーを更新します。

前提条件

  • クラスターはインターネットに接続されている必要があります。切断されたクラスターは Windows Update サービスにアクセスできません。

手順

  1. Windows ゲストオペレーティングシステムで、Windows キーをクリックし、Settings を選択します。
  2. Windows Update Advanced Options Optional Updates に移動します。
  3. Red Hat, Inc. からのすべての更新をインストールします。
  4. 仮想マシンを再起動します。

検証

  1. Windows 仮想マシンで、Device Manager に移動します。
  2. デバイスを選択します。
  3. Driver タブを選択します。
  4. Driver Details をクリックし、virtio ドライバーの詳細に正しいバージョンが表示されていることを確認します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.