11.5. 仮想 USB デバイスの管理
仮想マシンを使用する場合は、ホストシステムに接続されているフラッシュドライブや Web マッピングなどの USB デバイスにアクセスし、制御できます。このような場合、ホストシステムはデバイスの制御を仮想マシンに渡します。これは USB パススルーとしても知られています。
11.5.1. 仮想マシンへの USB デバイスの割り当て
USB デバイスを仮想マシンに割り当てるには、仮想マシンの XML 設定ファイルに USB デバイス情報を追加してください。
前提条件
- 仮想マシンにパススルーするデバイスがホストに接続されていることを確認します。
手順
仮想マシンに接続する USB のバスおよびデバイス値を見つけます。
たとえば、次のコマンドは、ホストに接続されている USB デバイスのリストを表示します。この例で使用するデバイスは、デバイス 005 としてバス 001 にアタッチされています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow lsusb
# lsusb [...] Bus 001 Device 003: ID 2567:0a2b Intel Corp. Bus 001 Device 005: ID 0407:6252 Kingston River 2.0 [...]
--add-device
引数を指定してvirt-xml
ユーティリティーを使用します。たとえば、次のコマンドは、USB フラッシュドライブを
example-VM-1
仮想マシンに接続します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-xml example-VM-1 --add-device --hostdev 001.005
# virt-xml example-VM-1 --add-device --hostdev 001.005 Domain 'example-VM-1' defined successfully.
実行中の仮想マシンに USB デバイスを接続するには、--update
引数を直前のコマンドに追加します。
検証
- 仮想マシンを実行し、デバイスが存在し、予想通りに機能しているかどうかをテストします。
virsh dumpxml
コマンドを実行し、デバイスの XML 定義が、仮想マシンの XML 設定ファイルの <devices> セクションに追加されたかどうかを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh dumpxml example-VM-1
# virsh dumpxml example-VM-1 [...] <hostdev mode='subsystem' type='usb' managed='yes'> <source> <vendor id='0x0407'/> <product id='0x6252'/> <address bus='1' device='5'/> </source> <alias name='hostdev0'/> <address type='usb' bus='0' port='3'/> </hostdev> [...]
関連情報
-
システム上の
virt-xml (1)
man ページ - 仮想マシンへのデバイスの割り当て
11.5.2. 仮想マシンからの USB デバイスの削除
仮想マシンから USB デバイスを削除するには、仮想マシンの XML 設定から USB デバイス情報を削除してください。
手順
仮想マシンから削除する USB のバスおよびデバイス値を見つけます。
たとえば、次のコマンドは、ホストに接続されている USB デバイスのリストを表示します。この例で使用するデバイスは、デバイス 005 としてバス 001 にアタッチされています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow lsusb
# lsusb [...] Bus 001 Device 003: ID 2567:0a2b Intel Corp. Bus 001 Device 005: ID 0407:6252 Kingston River 2.0 [...]
--remove-device
引数を指定してvirt-xml
ユーティリティーを使用します。たとえば、次のコマンドは、
example-VM-1
仮想マシンから、バス 001 でデバイス 005 としてホストに接続されている USB フラッシュドライブを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-xml example-VM-1 --remove-device --hostdev 001.005
# virt-xml example-VM-1 --remove-device --hostdev 001.005 Domain 'example-VM-1' defined successfully.
実行中の仮想マシンから USB デバイスを削除するには、--update
引数を直前のコマンドに追加します。
検証
- 仮想マシンを実行して、デバイスのリストから、このデバイスが削除されたかどうかを確認します。
関連情報
-
システム上の
virt-xml (1)
man ページ - 仮想マシンへのデバイスの割り当て
11.5.3. スマートカードリーダーの仮想マシンへの割り当て
スマートカードリーダーがホストに割り当てられている場合は、そのホストの仮想マシンが利用できるようにすることもできます。libvirt は、ゲスト仮想マシンにスマートカードインターフェイスを提供する専用の仮想デバイスを提供します。spicevmc
デバイスタイプのみを使用することを推奨します。これは、SPICE リモートディスプレイプロトコルを使用して、ホストへの認証要求をトンネル化します。
スマートカードリーダーで標準のデバイスパススルーを使用することは可能ですが、この方法ではホストとゲストシステムの両方でデバイスが利用できるようにはなりません。これにより、スマートカードリーダーを仮想マシンに割り当てると、ホストシステムをロックできました。
SPICE リモートディスプレイプロトコルが RHEL 8 で非推奨になりました。仮想マシンにスマートカードリーダーを割り当てる唯一の推奨される方法は SPICE プロトコルによって異なるため、ゲスト仮想マシンでのスマートカードの使用も RHEL 8 で非推奨となりました。
RHEL の将来のメジャーバージョンでは、スマートカードリーダーを仮想マシンに割り当てる機能は、サードパーティーのリモート可視化ソリューションでのみサポートされる予定です。
前提条件
- 仮想マシンに渡すスマートカードリーダーがホストに割り当てられていることを確認する。
- スマートカードリーダーのタイプが、RHEL 8 でサポート対象 である。
手順
仮想スマートカードリーダーデバイスを作成して仮想マシンに割り当てます。たとえば、スマートカードリーダーを
testguest
仮想マシンに割り当てるには、以下を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow virt-xml testguest --add-device --smartcard mode=passthrough,type=spicevmc
# virt-xml testguest --add-device --smartcard mode=passthrough,type=spicevmc Domain 'testguest' defined successfully. Changes will take effect after the domain is fully powered off.
注記仮想スマートカードリーダーデバイスを実行中の仮想マシンに割り当てるには、
--update
引数を直前のコマンドに追加します。
検証
仮想マシンの XML 設定を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh dumpxml testguest
# virsh dumpxml testguest
XML 設定に、以下のスマートカードデバイス定義が含まれていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <smartcard mode='passthrough' type='spicevmc'/>
<smartcard mode='passthrough' type='spicevmc'/>