Red Hat Training

A Red Hat training course is available for RHEL 8

10.5. 仮想 USB デバイスの管理

仮想マシンを使用する場合は、ホストシステムに接続されているフラッシュドライブや Web マッピングなどの USB デバイスにアクセスし、制御できます。このシナリオでは、ホストシステムはデバイスの制御を仮想マシンに渡します。これは USB パススルーとしても知られています。

次のセクションでは、コマンドラインを使用して次のことを行う方法を説明します。

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

USB デバイスを仮想マシンに割り当てるには、仮想マシンの XML 設定ファイルに USB デバイス情報を追加してください。

前提条件

  • 仮想マシンにパススルーするデバイスがホストに接続されていることを確認します。

手順

  1. 仮想マシンに接続する USB のバスおよびデバイス値を見つけます。

    たとえば、次のコマンドは、ホストに接続されている USB デバイスのリストを表示します。この例で使用するデバイスは、デバイス 005 としてバス 001 にアタッチされています。

    # lsusb
    [...]
    Bus 001 Device 003: ID 2567:0a2b Intel Corp.
    Bus 001 Device 005: ID 0407:6252 Kingston River 2.0
    [...]
  2. --add-device 引数を指定して virt-xml ユーティリティーを使用します。

    たとえば、次のコマンドは、USB フラッシュドライブを example-VM-1 仮想マシンに接続します。

    # virt-xml example-VM-1 --add-device --hostdev 001.005
    Domain 'example-VM-1' defined successfully.
注記

実行中の仮想マシンに USB デバイスを接続するには、--update 引数を直前のコマンドに追加します。

検証

  • 仮想マシンを実行し、デバイスが存在し、予想通りに機能しているかどうかをテストします。
  • virsh dumpxml コマンドを実行し、デバイスの XML 定義が、仮想マシンの XML 設定ファイルの <devices> セクションに追加されたかどうかを確認します。

    # 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>
    [...]

関連情報

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

仮想マシンから USB デバイスを削除するには、仮想マシンの XML 設定から USB デバイス情報を削除してください。

手順

  1. 仮想マシンから削除する USB のバスおよびデバイス値を見つけます。

    たとえば、次のコマンドは、ホストに接続されている USB デバイスのリストを表示します。この例で使用するデバイスは、デバイス 005 としてバス 001 にアタッチされています。

    # lsusb
    [...]
    Bus 001 Device 003: ID 2567:0a2b Intel Corp.
    Bus 001 Device 005: ID 0407:6252 Kingston River 2.0
    [...]
  2. --remove-device 引数を指定して virt-xml ユーティリティーを使用します。

    たとえば、次のコマンドは、example-VM-1 仮想マシンから、バス 001 でデバイス 005 としてホストに接続されている USB フラッシュドライブを削除します。

    # virt-xml example-VM-1 --remove-device --hostdev 001.005
    Domain 'example-VM-1' defined successfully.
注記

実行中の仮想マシンから USB デバイスを削除するには、--update 引数を直前のコマンドに追加します。

検証

  • 仮想マシンを実行して、デバイスのリストから、このデバイスが削除されたかどうかを確認します。

関連情報

10.5.3. スマートカードリーダーの仮想マシンへの割り当て

スマートカードリーダーがホストに割り当てられている場合は、そのホストの仮想マシンが利用できるようにすることもできます。libvirt は、ゲスト仮想マシンにスマートカードインターフェイスを提供する専用の仮想デバイスを提供します。spicevmc デバイスタイプのみを使用することを推奨します。これは、SPICE リモートディスプレイプロトコルを使用して、ホストへの認証要求をトンネル化します。

スマートカードリーダーで標準のデバイスパススルーを使用することは可能ですが、この方法ではホストとゲストシステムの両方でデバイスが利用できるようにはなりません。これにより、スマートカードリーダーを仮想マシンに割り当てると、ホストシステムをロックできました。

重要

SPICE リモートディスプレイプロトコルが RHEL 8 で非推奨になりました。仮想マシンにスマートカードリーダーを割り当てる唯一の推奨される方法は SPICE プロトコルによって異なるため、ゲスト仮想マシンでのスマートカードの使用も RHEL 8 で非推奨となりました。

RHEL の将来のメジャーバージョンでは、スマートカードリーダーを仮想マシンに割り当てる機能は、サードパーティーのリモート可視化ソリューションでのみサポートされる予定です。

前提条件

  • 仮想マシンに渡すスマートカードリーダーがホストに割り当てられていることを確認する。
  • スマートカードリーダーのタイプが、RHEL 8 でサポート対象 である。

手順

  • 仮想スマートカードリーダーデバイスを作成して仮想マシンに割り当てます。たとえば、スマートカードリーダーを testguest 仮想マシンに割り当てるには、以下を実行します。

    # 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 引数を直前のコマンドに追加します。

検証

  1. 仮想マシンの XML 設定を表示します。

    # virsh dumpxml testguest
  2. XML 設定に、以下のスマートカードデバイス定義が含まれていることを確認します。

    <smartcard mode='passthrough' type='spicevmc'/>