Hyper-VはUSBデバイスの取得に関しては少々扱いにくいです。VMWareやProxmoxとは異なり、USBスティックやドングルをVMに直接リダイレクトするのはそれほど簡単ではありません。もちろん、拡張セッションモードの使用やRDPを使った回避策など、試す方法はいくつかありますが、全体として、本格的なUSBパススルーは標準ではサポートされていません。これは少し面倒な点です。なぜなら、外付けドライブやUSBセキュリティキーをVMに差し込むだけで、簡単に直接表示させたい場合もあるからです。
いろいろと試行錯誤した結果、いくつか妥協はしたものの、実際にうまくいった方法をご紹介します。VMからUSBハードドライブに直接アクセスする必要がある場合、通常はホストに接続し、VM内で物理ディスクのように「アタッチ」するのが最善の方法です。USBドングルなどの他のデバイスの場合は、サードパーティ製のツールで回避策を講じない限り、制限を受ける可能性があります。拡張セッションモードを有効にするだけで、表示されるUSBデバイスがいくつか増える場合もありますが、万全ではありません。ただし、これらの方法はどれも完璧な解決策ではなく、環境によってはスムーズに動作させるのに多少の手間や運が必要になる場合があることをご承知おきください。
Hyper-V で USB パススルーの問題を修正する方法
Hyper-V VM から USB ハードドライブにアクセスする
この方法は、外付けドライブの場合、通常最も簡単です。USBドライブがリムーバブルデバイスではなく固定ディスクとして認識されている場合に有効です(Windowsはリムーバブルデバイスとして認識されることが多いため、少し面倒です)。基本的には、Windowsにそのドライブを固定ディスクとして認識させ、VMに直接接続できるようにすることです。
- USBドライブをHyper-Vホストに接続します。ディスクの管理(
diskmgmt.msc)にドライブ文字付きで表示されます。表示されない場合は、ディスクが「オフライン」と表示されているかどうかを確認してください。 - ディスクの管理でドライブを右クリックし、「オフライン」を選択すると、接続できるようになります。一部のビルドでは、PowerShell 経由でディスクを管理する方が高速です
Get-Disk -Number 1 | Set-Disk -IsOffline $true。 - Hyper-Vマネージャーを開き、VMを見つけて設定画面に進みます。「SCSIコントローラー」で新しいディスクを追加し、「物理ハードディスク」を選択します。ドロップダウンから、先ほどオフラインにしたドライブ(「ディスク1 20.00 GB」のような表示)を選択します。
- VMを起動してログインします。VM内で、ディスクの管理(
diskmgmt.msc)を再度開きます。OSが新しいドライブを認識するはずです。オフラインの場合は、右クリックして「オンライン」を選択します。未割り当てと表示される可能性が高いので、右クリックしてドライブ文字またはマウントポイントを割り当てます。
セットアップによっては、この方法は確実に機能しますが、うまくいかない場合もあります。重要なのは、ドライブが仮想マシンに直接接続された物理ディスクのように見えることです。USBポートからディスクを引き抜く前に、必ずディスクを適切な方法で取り外すようにしてください。そうしないと、データの破損や起動の問題が発生する可能性があります。そのような事態は誰も望んでいません。
USBデバイスの拡張セッションモードを有効にする
拡張セッションモード(ESM)を使用すると、vmconnectインターフェースを介してUSBデバイスのサポートを強化できます。これはRDPに似ていますが、VM用です。ただし、Windows 8.1 / Windows Server 2012 R2以降のWindowsゲストOSのみをサポートしており、すべてのデバイスに対して100%の信頼性があるわけではありません。しかし、プリンター、Webカメラ、WindowsがPnPとして認識するストレージデバイスなど、一部のUSBデバイスをリダイレクトするには、ESMだけで十分な場合もあります。
これを動作させるには、まず PowerShell を使用して Hyper-V ホストで ESM を有効にします。
Set-VMHost -EnableEnhancedSessionMode $true
または、Hyper-V 設定 の 拡張セッションモード から設定できます。その後、Hyper-V 仮想マシン管理サービス ( ) を再起動します。仮想マシンの統合サービスGet-Service vmms | Restart-Serviceタブで ゲストサービス が有効になっていることを確認してください。
vmconnect.exeを使用して VM に接続し、VM を右クリックして [接続] を選択します。コンソールウィンドウがポップアップ表示されたら、[オプションの表示] をクリックし、[ローカル リソース] -> [詳細] に進みます。そこから USB デバイスを選択できます。デバイスが接続されていれば、VM に転送されるはずです。注: 一部のデバイスは動作しない可能性があります。特に Windows がハードウェアを認識しない場合や、ドライバーに互換性がない場合に多く発生します。
その他のオプションと回避策
もう1つ覚えておくべき点があります。VirtualHere USB Serverやusbip(主にLinuxベース)といったサードパーティ製のツールを使うと、USBデバイスをIPネットワーク経由で接続できます。これらは完璧ではありませんが、環境によっては、VM内でUSBデバイスに確実にアクセスできるようにする唯一の方法となる場合があります。通常は、ホストまたはネットワーク上にこれらのツールを実行する小規模なサーバーを構築し、VMをTCP/IP経由でデバイスに接続します。プラグアンドプレイほど簡単ではありませんが、扱いにくいデバイスの場合、これが唯一の回避策となることがよくあります。
正直なところ、Hyper-VでUSBパススルーを完璧に動作させようとすると、まるで幽霊を追いかけるような気分になることがあります。中途半端な解決策ではありますが、少しの忍耐とこれらのトリックを使えば、少なくとも理想に近づくことができます。場合によっては、複数の方法を組み合わせるのが最適な場合もあります。例えば、ディスクをこのようにリダイレクトしてから、他のデバイスの拡張セッションサポートを有効にするなどです。ただし、常にシームレスに動作するとは期待しないでください。