Red Hat Training

A Red Hat training course is available for RHEL 8

10.3. CLI を使用した仮想マシンに接続されたデバイスの管理

仮想マシン (VM) の機能を変更するには、コマンドラインインターフェイス (CLI) を使用して、仮想マシンに接続されているデバイスを管理できます。

CLI を使用して次のことができます。

10.3.1. 仮想マシンへのデバイスの割り当て

新しい仮想デバイスを割り当てることで、仮想マシンに特定の機能を追加できます。

次の手順では、コマンドラインインターフェイス (CLI) を使用して仮想デバイスを作成し、仮想マシン (VM) に接続します。一部のデバイスは、RHEL Web コンソールを使用 して仮想マシンに接続することもできます。

たとえば、仮想マシンに新しい仮想ディスクデバイスを割り当てることで、仮想マシンのストレージ容量を増やすことができます。これは、メモリーのホットプラグとも呼ばれます。

警告

仮想マシンからのメモリーデバイスの削除 (メモリーのホットアンプラグ とも呼ばれる) は、RHEL 8 ではサポートされておらず、Red Hat ではその使用を推奨していません。

前提条件

  • 仮想マシンに接続するデバイスに必要なオプションを取得します。特定のデバイスで利用可能なオプションを確認するには、virt-xml --device=? コマンドを使用します。以下に例を示します。

    # virt-xml --network=?
    --network options:
    [...]
    address.unit
    boot_order
    clearxml
    driver_name
    [...]

手順

  1. デバイスを仮想マシンに接続するには、デバイスと必要なオプションの定義を含む virt-xml --add-device コマンドを使用します。

    • たとえば、次は、/var/lib/libvirt/images/ ディレクトリーに 20GB の newdisk qcow2 ディスクイメージを作成し、仮想マシンの次回の起動時にそれを仮想マシンとして、実行中の仮想マシン testguest に接続します。

      # virt-xml testguest --add-device --disk /var/lib/libvirt/images/newdisk.qcow2,format=qcow2,size=20
      Domain 'testguest' defined successfully.
      Changes will take effect after the domain is fully powered off.
    • 以下は、仮想マシンの稼働時に、ホストでバス 002 のデバイス 004 として、仮想マシン testguest2 に接続した USB フラッシュドライブを接続します。

      # virt-xml testguest2 --add-device --update --hostdev 002.004
      Device hotplug successful.
      Domain 'testguest2' defined successfully.

      USB を定義するバスとデバイスの組み合わせは、lsusb コマンドを使用して取得できます。

検証

デバイスが追加されたことを確認するには、次のいずれかを行います。

  • virsh dumpxml コマンドを実行し、デバイスの XML 定義が、仮想マシンの XML 設定の <devices> セクションに追加されました。

    たとえば、以下の出力は、仮想マシン testguest の設定を表示し、002.004 USB フラッシュディスクドライブが追加されていることを確認します。

    # virsh dumpxml testguest
    [...]
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x4146'/>
        <product id='0x902e'/>
        <address bus='2' device='4'/>
      </source>
      <alias name='hostdev0'/>
      <address type='usb' bus='0' port='3'/>
    </hostdev>
    [...]
  • 仮想マシンを実行し、デバイスが存在し、正しく機能しているかどうかをテストします。

関連情報

  • man virt-xml コマンド

10.3.2. 仮想マシンに接続されているデバイスの変更

接続している仮想デバイスの設定を編集することで、仮想マシンの機能を変更できます。たとえば、仮想マシンのパフォーマンスを最適化する場合は、ホストの CPU に合わせて仮想 CPU モデルを変更できます。

以下の手順は、コマンドラインインターフェイス (CLI) を使用して仮想デバイスを修正する一般的な手順を示しています。ディスクや NIC など、仮想マシンに接続されている一部のディスクは、RHEL 8 Web コンソール で修正できます。

前提条件

  • 仮想マシンに接続するデバイスに必要なオプションを取得します。特定のデバイスで利用可能なオプションを確認するには、virt-xml --device=? コマンドを使用します。以下に例を示します。
# virt-xml --network=?
--network options:
[...]
address.unit
boot_order
clearxml
driver_name
[...]
  • (必要に応じて) virsh dumpxml vm-name を使用してファイルに出力を送って、仮想マシンの XML 設定のバックアップを作成します。たとえば、以下は、testguest1 仮想マシンの設定のバックアップファイル testguest1.xml を作成します。
# virsh dumpxml testguest1 > testguest1.xml
# cat testguest1.xml
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>testguest1</name>
  <uuid>ede29304-fe0c-4ca4-abcd-d246481acd18</uuid>
  [...]
</domain>

手順

  1. デバイスの定義および必要なオプションを追加して、virt-xml --edit コマンドを使用します。

    たとえば、次のようにすると、停止する仮想マシン testguest<cpu> 設定を削除し、host-model に設定します。

    # virt-xml testguest --edit --cpu host-model,clearxml=yes
    Domain 'testguest' defined successfully.

検証

デバイスが変更されたことを確認するには、次のいずれかを行います。

  • デバイスが存在し、変更を反映する場合は、仮想マシンを実行してテストします。
  • virsh dumpxml コマンドを使用して、デバイスの XML 定義が、仮想マシンの XML 設定で変更されているかどうかを確認します。

    たとえば、次の出力は、仮想マシン testguest の設定を表示し、CPU モードが host-model として設定されていることを確認します。

    # virsh dumpxml testguest
    [...]
    <cpu mode='host-model' check='partial'>
      <model fallback='allow'/>
    </cpu>
    [...]

トラブルシューティング

  • デバイスを変更すると仮想マシンが起動できなくなる場合は、virsh define ユーティリティーを使用して、バックアップとして作成しておいた XML 設定ファイルを再読み込みして XML 設定を復元します。

    # virsh define testguest.xml
注記

仮想マシンの XML 設定を変更する場合は、virsh edit コマンド (virsh edit testguest など) も使用できます。ただし、より詳細な変更にはこの方法を使用しないでください。設定を壊し、仮想マシンの起動を妨げる可能性が高くなります。

関連情報

  • man virt-xml コマンド

10.3.3. 仮想マシンからのデバイスの削除

仮想デバイスを削除することで、仮想マシンの機能を変更できます。たとえば、仮想マシンから仮想ディスクデバイスが不要になった場合は、削除できます。

次の手順は、コマンドラインインターフェイス (CLI) を使用して、仮想マシンから仮想デバイスを削除する方法を示しています。RHEL 8 Web コンソールを使用して、ディスクや NIC などの一部のデバイスも仮想マシンから削除できます。

前提条件

  • (必要に応じて) virsh dumpxml vm-name を使用してファイルに出力を送って、仮想マシンの XML 設定のバックアップを作成します。たとえば、以下は、testguest1 仮想マシンの設定のバックアップファイル testguest1.xml を作成します。
# virsh dumpxml testguest1 > testguest1.xml
# cat testguest1.xml
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>testguest1</name>
  <uuid>ede29304-fe0c-4ca4-abcd-d246481acd18</uuid>
  [...]
</domain>

手順

  1. デバイスの定義を付けて、virt-xml --remove-device コマンドを使用します。以下に例を示します。

    • 以下は、シャットダウン後に、稼働中の仮想マシン testguest から vdb としてマークされているストレージデバイスを削除します。

      # virt-xml testguest --remove-device --disk target=vdb
      Domain 'testguest' defined successfully.
      Changes will take effect after the domain is fully powered off.
    • 次は、稼働中の稼働マシン testguest2 からすぐに USB フラッシュドライブデバイスを削除します。

      # virt-xml testguest2 --remove-device --update --hostdev type=usb
      Device hotunplug successful.
      Domain 'testguest2' defined successfully.

トラブルシューティング

  • デバイスを取り外すと仮想マシンが起動できなくなる場合は、virsh define ユーティリティーを使用して、バックアップとして作成しておいた XML 設定ファイルを再読み込みして XML 設定を復元します。

    # virsh define testguest.xml

関連情報

  • man virt-xml コマンド