11.3. CLI を使用した仮想マシンに接続されたデバイスの管理
仮想マシンの機能を変更するには、コマンドライン (CLI) を使用して、仮想マシンに接続されているデバイスを管理します。
11.3.1. 仮想マシンへのデバイスの割り当て リンクのコピーリンクがクリップボードにコピーされました!
新しい仮想デバイスを割り当てることで、仮想マシンに特定の機能を追加できます。
次の手順では、コマンドライン (CLI) を使用して仮想デバイスを作成し、仮想マシンに接続します。一部のデバイスは、RHEL Web コンソールを使用 して仮想マシンに接続することもできます。
たとえば、仮想マシンに新しい仮想ディスクデバイスを割り当てることで、仮想マシンのストレージ容量を増やすことができます。
前提条件
仮想マシンに接続するデバイスに必要なオプションを取得します。特定のデバイスで利用可能なオプションを確認するには、
virt-xml --device=?コマンドを使用します。以下に例を示します。# virt-xml --network=? --network options: [...] address.unit boot_order clearxml driver_name [...]
手順
デバイスを仮想マシンに接続するには、デバイスと必要なオプションの定義を含む
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> [...]- 仮想マシンを実行し、デバイスが存在し、正しく機能しているかどうかをテストします。
11.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>
手順
デバイスの定義および必要なオプションを追加して、
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 など) も使用できます。ただし、より詳細な変更にはこの方法を使用しないでください。設定を壊し、仮想マシンの起動を妨げる可能性が高くなります。
11.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>
手順
デバイスの定義を付けて、
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