11.3. CLI を使用した仮想マシンに接続されたデバイスの管理
仮想マシンの機能を変更するには、コマンドライン (CLI) を使用して、仮想マシンに接続されているデバイスを管理します。
11.3.1. 仮想マシンへのデバイスの割り当て
新しい仮想デバイスを割り当てることで、仮想マシンに特定の機能を追加できます。
次の手順では、コマンドライン (CLI) を使用して仮想デバイスを作成し、仮想マシンに接続します。一部のデバイスは、RHEL Web コンソールを使用 して仮想マシンに接続することもできます。
たとえば、仮想マシンに新しい仮想ディスクデバイスを割り当てることで、仮想マシンのストレージ容量を増やすことができます。
前提条件
仮想マシンに接続するデバイスに必要なオプションを取得します。特定のデバイスで利用可能なオプションを確認するには、
virt-xml --device=?
コマンドを使用します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-xml --network=?
# virt-xml --network=? --network options: [...] address.unit boot_order clearxml driver_name [...]
手順
デバイスを仮想マシンに接続するには、デバイスと必要なオプションの定義を含む
virt-xml --add-device
コマンドを使用します。たとえば、次は、
/var/lib/libvirt/images/
ディレクトリーに 20GB の newdisk qcow2 ディスクイメージを作成し、仮想マシンの次回の起動時にそれを仮想マシンとして、実行中の仮想マシン testguest に接続します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-xml testguest --add-device --disk /var/lib/libvirt/images/newdisk.qcow2,format=qcow2,size=20
# 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 フラッシュドライブを接続します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-xml testguest2 --add-device --update --hostdev 002.004
# 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 フラッシュディスクドライブが追加されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh dumpxml testguest
# 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
コマンド
11.3.2. 仮想マシンに接続されているデバイスの変更
接続している仮想デバイスの設定を編集することで、仮想マシンの機能を変更できます。たとえば、仮想マシンのパフォーマンスを最適化する場合は、ホストの CPU に合わせて仮想 CPU モデルを変更できます。
次の手順は、コマンドライン (CLI) を使用して仮想デバイスを変更する一般的な手順を示しています。ディスクや NIC など、仮想マシンに接続されている一部のディスクは、RHEL 8 Web コンソール で修正できます。
前提条件
-
仮想マシンに接続するデバイスに必要なオプションを取得します。特定のデバイスで利用可能なオプションを確認するには、
virt-xml --device=?
コマンドを使用します。以下に例を示します。
virt-xml --network=?
# 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
# 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>
手順
デバイスの定義および必要なオプションを追加して、
virt-xml --edit
コマンドを使用します。たとえば、次のようにすると、停止する仮想マシン testguest の <cpu> 設定を削除し、host-model に設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-xml testguest --edit --cpu host-model,clearxml=yes
# virt-xml testguest --edit --cpu host-model,clearxml=yes Domain 'testguest' defined successfully.
検証
デバイスが変更されたことを確認するには、次のいずれかを行います。
- デバイスが存在し、変更を反映する場合は、仮想マシンを実行してテストします。
virsh dumpxml
コマンドを使用して、デバイスの XML 定義が、仮想マシンの XML 設定で変更されているかどうかを確認します。たとえば、次の出力は、仮想マシン testguest の設定を表示し、CPU モードが host-model として設定されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh dumpxml testguest
# virsh dumpxml testguest [...] <cpu mode='host-model' check='partial'> <model fallback='allow'/> </cpu> [...]
トラブルシューティング
デバイスを変更すると仮想マシンが起動できなくなる場合は、
virsh define
ユーティリティーを使用して、バックアップとして作成しておいた XML 設定ファイルを再読み込みして XML 設定を復元します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh define testguest.xml
# virsh define testguest.xml
仮想マシンの XML 設定を変更する場合は、virsh edit
コマンド (virsh edit testguest
など) も使用できます。ただし、より詳細な変更にはこの方法を使用しないでください。設定を壊し、仮想マシンの起動を妨げる可能性が高くなります。
関連情報
-
man virt-xml
コマンド
11.3.3. 仮想マシンからのデバイスの削除
仮想デバイスを削除することで、仮想マシンの機能を変更できます。たとえば、仮想マシンから仮想ディスクデバイスが不要になった場合は、削除できます。
次の手順は、コマンドライン (CLI) を使用して、仮想マシンから仮想デバイスを削除する方法を示しています。RHEL 8 Web コンソールを使用して、ディスクや NIC などの一部のデバイスも仮想マシンから削除できます。
前提条件
-
オプション:
virsh dumpxml vm-name
を使用して出力をファイルに送信し、仮想マシンの XML 設定をバックアップします。たとえば、以下は、testguest1 仮想マシンの設定のバックアップファイルtestguest1.xml
を作成します。
virsh dumpxml testguest1 > testguest1.xml cat 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>
手順
デバイスの定義を付けて、
virt-xml --remove-device
コマンドを使用します。以下に例を示します。以下は、シャットダウン後に、稼働中の仮想マシン testguest から vdb としてマークされているストレージデバイスを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-xml testguest --remove-device --disk target=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 フラッシュドライブデバイスを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-xml testguest2 --remove-device --update --hostdev type=usb
# virt-xml testguest2 --remove-device --update --hostdev type=usb Device hotunplug successful. Domain 'testguest2' defined successfully.
トラブルシューティング
デバイスを取り外すと仮想マシンが起動できなくなる場合は、
virsh define
ユーティリティーを使用して、バックアップとして作成しておいた XML 設定ファイルを再読み込みして XML 設定を復元します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh define testguest.xml
# virsh define testguest.xml
関連情報
-
man virt-xml
コマンド