VMWare ESXiでUSBデバイスを動作させる方法 – 実践的なヒント
物理ESXiホストから仮想マシンにUSBデバイスをパススルー接続しようとしていますね。もしかしたら、特殊なドライブかもしれないし、単に表示されにくいデバイスかもしれません。VMwareは必ずしもすべてのUSBスティックをサポートしているわけではないので、特に安価なモデルや新しいモデルは、少しイライラさせられます。さらに、パススルー接続は面倒な作業になることがあります。特にUSB 3.0を扱っている場合や、コントローラ全体をリダイレクトしようとしている場合はなおさらです。このガイドでは、簡単な方法に加え、実際にうまくいかなかったときに役立った回避策をいくつか紹介します。
ESXi の USB パススルーの問題を修正する方法
VMWare USBパススルー
まず、これはVMからホストに直接接続された特定のUSBデバイスにアクセスしたい場合の定番の方法です。なぜこれが便利なのか?それは、USBスティックをコンピュータに直接接続するのとほぼ同じように、VMにハードウェアレベルの制御を委ねることができるからです。うまく動作すれば、接続されたUSBデバイスがVMのOS内に表示されるため、迅速なデータ転送やデバイステストに最適です。ただし、この方法はVMwareのサイトに記載されている対応デバイスでのみスムーズに動作します。対応していないハードウェアでは、うまく動作しない可能性があります。
ハードウェアバージョン7以降のVMでは、この作業は簡単に済むこともありますが、時には「利用可能なUSBデバイスがありません」という厄介なメッセージが表示されることもあります。これは、お使いのUSBデバイスがサポートされていないか、VMwareが正しく認識できないことを意味します。VMwareがデバイスを認識しているかどうかを確認するには、 VMware設定でホストUSBデバイスを追加し、ドロップダウンからデバイスを選択します。手順は以下のとおりです。
- VMの設定を開く
- 追加> USBデバイスをクリック
- リストからデバイスを選択してください。リストに表示されていれば問題ありません。表示されていない場合は、VMware がお使いの USB ドライブをサポートしていない可能性があります。
- その VM を vMotion で移動する予定の場合は、デバイスの接続中に vMotion をサポートするをチェックします。ただし、ここでは vMotion のサポートが多少制限されることに注意してください。
それでもデバイスが表示されない場合は、VMwareハードウェアの互換性とVMware Toolsが最新版であることを確認してください。また、一部のUSBドライブ(特にテストされていないものや特殊なチップセットを搭載したもの)は接続できない場合があるのでご注意ください。まずはVMwareの公式リストをご覧ください(対応デバイスはこちら)。
プロのヒント:USBデバイスが直接サポートされていない場合は、USBコントローラー全体をリダイレクトすることを検討してください。これは少しアグレッシブですが、より多くのデバイスで動作します。ただし、少しやり過ぎで、ホスト上の他のUSB周辺機器が無効になる可能性があることに注意してください。
方法1: USBコントローラ全体をVMにリダイレクトする
特定のUSBデバイスが直接サポートされていない場合は、この方法が適しています。コントローラ全体を渡すことで、VMはそのコントローラに接続されているすべてのUSBデバイスにアクセスできるようになります。サポートされているコントローラのリストを扱う場合や、個々のUSBデバイスが表示されない場合に適しています。ただし、欠点としては、リダイレクトすると、ホストがそれらのUSBデバイスを直接使用できなくなることです。つまり、ホストからそのコントローラ上のキーボード/マウスやドライブにアクセスできなくなります。また、サーバーによって異なりますが、通常、リダイレクトできるコントローラは最大1つか2つだけです。
なぜこれが役立つのでしょうか?それは、一部の設定では、パススルーはデバイスレベルでは不安定になりがちですが、コントローラレベルではより信頼性が高くなる傾向があるためです。ESXiのPCIデバイスリストで適切なコントローラを見つけ、VMに追加します。
- 管理>設定> PCIデバイスに移動します
00:1D.0PCI ID(など)でUSBコントローラを選択します。- ステータスを「利用不可」から「利用可能」に変更します
- [OK]をクリックしてホストを再起動します
- 再起動後、VMをシャットダウンします
- VM設定を再度編集し、PCIデバイス(USBコントローラ)を追加します。
- 電源を入れ、ゲストOSにUSBドライブが表示されるかどうかを確認してください。通常、WindowsまたはLinuxではすぐに検出されます。
注:USBコントローラのみでこれを行うと、ホスト機能が一部失われます。あるセットアップでは、パススルーのためだけに2枚目のPCIカードを追加する必要がありました。当然ながら、VMwareは必要以上に困難にしているからです。
方法 2: vSphere CLI を使用して USB アービトレータのトラブルシューティングと有効化を行う
VMwareのUSB Arbitratorサービスが動作していない場合があります。その場合、USBパススルーが全く機能しません。ESXiシェルまたはSSH経由で確認できます。
# chkconfig usbarbitrator --list
実行されていない場合は、次のコマンドで起動します。
# /etc/init.d/usbarbitrator start
一部の設定では、これだけでデバイス検出の問題が解決します。それでもUSBデバイスが表示されない場合は、ESXiホスト全体を再起動することもできます。ただし、サービスを停止すると、オンラインに戻るまでUSBパススルーが利用できなくなることに注意してください。
プロのヒント: ログを監視して、/var/log/vmkernel.logUSB デバイスが検出されているかどうか、またはエラーがあるかどうかを確認します。
うまくいかないとき:追加のヒント
ホストのUSBドライバやファームウェアが最新でないために、デバイスが検出されない場合があります。一部のサーバーでのみ動作し、他のサーバーでは動作しない理由は不明ですが、ESXiホストを最新のパッチレベルにアップデートすると、原因不明の互換性の問題が解決する場合があります。また、USBスティックを物理的に再接続し、USBの認識を制限する可能性のあるBIOS/UEFI設定(レガシーモードやI/O仮想化など)がないか確認してください。
それでも問題が解決しない場合は、別のUSBデバイスでテストするか、USBコントローラーのファームウェアを更新すると改善する可能性があります。結局のところ、パススルー接続に関しては試行錯誤が必要なので、あるマシンでうまくいくものが別のマシンではうまくいかないこともあります。
これで、次回USBパススルーで問題が発生した際に、少しでも頭を悩ませなくて済むといいですね。完璧とは言えませんが、ちょっとした調整でよくある問題は解決できます。
まとめ
- VMwareのサポートされているUSBデバイスのリストを確認する
- USBコントローラを追加したり、個々のUSBデバイスをパススルーする
- usbarbitratorサービスが実行されていることを確認する
- サポートされていないデバイスには PCI パススルーを使用します (制限事項に注意してください)
- 必要に応じてESXiホストとコントローラのファームウェアを更新します
まとめ
こういった作業は本当に面倒ですが、自分のハードウェアに合った方法を把握すれば、トラブルシューティングが簡単になります。デバイスのサポートが不安定な場合は、コントローラー全体をリダイレクトする方が確実かもしれませんが、ホストのUSBポートにはデメリットが伴います。最終的には、忍耐強く試行錯誤していくことが最善策です。この方法が、誰かの頭を悩ませる時間ではなく、何時間も節約するのに役立つことを願っています。