16.3. USB デバイス
本セクションでは、USB デバイスを扱うために必要なコマンドについて説明します。
16.3.1. ゲスト仮想マシンへの USB デバイスの割り当て
Web カメラ、カードリーダー、ディスクドライブ、キーボード、マウスなどのほとんどのデバイスは、USB ポートとケーブルを使用してコンピューターに接続されています。このようなデバイスをゲスト仮想マシンに渡すには、以下の 2 つの方法があります。
- USB パススルーを使用する - これにより、デバイスが、ゲスト仮想マシンをホストしているホストの物理マシンに物理的に接続されます。この場合は SPICE は必要ありません。ホストの USB デバイスは、コマンドラインまたはvirt-manager でゲストに渡すことができます。virt manager の指示については、「ゲスト仮想マシンへの USB デバイスの接続」 を参照してください。virt-managerの指示は、ホットプラグやホットアンプラグのデバイスには適していないことに注意してください。ホットプラグ/ホットアンプラグを行う場合は、手順20.4「ゲスト仮想マシンが使用するホットプラグ USB デバイス」 を参照してください。
- USB リダイレクトの使用 - USB リダイレクトは、データセンターで実行されているホスト物理マシンがある場合に最適です。ユーザーは、ローカルマシンまたはシンクライアントからゲスト仮想マシンに接続します。このローカルマシンには SPICE クライアントがあります。ユーザーは、任意の USB デバイスをシンクライアントに接続できます。SPICE クライアントは、デバイスをデータセンターのホスト物理マシンにリダイレクトするため、シンクライアントで実行しているゲスト仮想マシンで使用できます。virt-manager を使用した手順は、「USB リダイレクト」 を参照してください。
16.3.2. USB デバイスリダイレクトの制限の設定
リダイレクトから特定のデバイスを除外するには、filter プロパティーを
-device usb-redir
に渡します。filter プロパティーは、フィルタールールで設定される文字列を取ります。ルールの形式は以下のとおりです。
<class>:<vendor>:<product>:<version>:<allow>
値
-1
を使用して、特定のフィールドに任意の値を使用できるように指定します。同じコマンドラインで、| を区切り文字として使用し、複数のルールを使用できます。デバイスが渡されたルールのいずれにも一致しない場合は、それをリダイレクトできないことに注意してください。
例16.1 ゲスト仮想マシンを使用してリダイレクトを制限する例
- ゲスト仮想マシンを準備します。
- ゲスト仮想マシンのドメイン XML ファイルに、以下のコードの抜粋を追加します。
<redirdev bus='usb' type='spicevmc'> <alias name='redir0'/> <address type='usb' bus='0' port='3'/> </redirdev> <redirfilter> <usbdev class='0x08' vendor='0x1234' product='0xBEEF' version='2.0' allow='yes'/> <usbdev class='-1' vendor='-1' product='-1' version='-1' allow='no'/> </redirfilter>
- ゲスト仮想マシンを起動し、次のコマンドを実行して設定の変更を確認します。
#ps -ef | grep $guest_name
-device usb-redir,chardev=charredir0,id=redir0,/ filter=0x08:0x1234:0xBEEF:0x0200:1|-1:-1:-1:-1:0,bus=usb.0,port=3
- USB デバイスをホストの物理マシンに接続し、virt-manager を使用してゲスト仮想マシンに接続します。
- メニューでをクリックすると、Some USB devices are blocked by host policy というメッセージが表示されます。 をクリックして確定し、続行します。フィルターが有効になります。
- フィルターが正しくキャプチャーされていることを確認するには、USB デバイスのベンダーと製品を確認してから、USB リダイレクトを可能にするために、ホストの物理マシンのドメイン XML で次の変更を行います。
<redirfilter> <usbdev class='0x08' vendor='0x0951' product='0x1625' version='2.0' allow='yes'/> <usbdev allow='no'/> </redirfilter>
- ゲスト仮想マシンを再起動してから、virt-viewer を使用してゲスト仮想マシンに接続します。これで、USB デバイスはトラフィックをゲスト仮想マシンにリダイレクトするようになります。