深夜2時の電話とUSBトークンの課題
午前2時、けたたましく電話のベルが鳴り響きました。受話器の向こうからは、焦りきった経理チームリーダーの声。「電子インボイスシステムから納税証明書が出力できません」。画面には赤文字で無情なエラーが1行だけ表示されていました。“No smart card / USB Token detected”。
原因はすぐにピンときました。前日の午後、インフラチームが経理サーバーを古いPCからDell PowerEdge R740上のVMware ESXi 7.0仮想化クラスターへ移行したばかりだったのです。エンジニアはサーバー背面のUSB 3.0ポートにVNPT-CAのUSBトークンを差し込み、トークンのLEDランプも青く点灯していました。しかし、Windows Server 2022仮想マシンのデバイスマネージャーには何も表示されていなかったのです。
このようなトラブルは、システム管理者にとって日常茶飯事と言えます。仮想化は非常に便利ですが、実務の現場では物理デバイスへの依存が依然として残っています。ViettelやMISAの各種電子署名トークン、税関申告用トークン、あるいはコールドバックアップ用のWD 4TB外付けハードディスクなどです。Host USB Passthroughの仕組みを正しく理解していなければ、何時間も無駄に試行錯誤することになります。
VMware ESXiにおけるHost USB Passthroughの仕組み
仮想マシン(Guest OS)が物理サーバー(Host)に接続されたUSBデバイスを認識できるようにするため、ESXiはHost USB Passthroughメカニズムを採用しています。以下の3つのコンポーネントが連携して動作します。
- Virtual USB Controller: 仮想マシンに追加する仮想USBコントローラーです。USB 2.0(EHCI+UHCI)またはUSB 3.0/3.1(xHCI)規格から選択できます。
- USB Arbitrator: ESXiホスト上でバックグラウンド動作する
usbarbitratorデーモンです。物理USBポートをスキャンし、デバイスを識別して、登録された適切な仮想マシンへ信号をルーティングします。 - Host USB Device: 仮想マシンに1対1で直接マッピングされる実際の物理デバイスです。
固定ポートIDによるパススルーが可能なProxmox VEと比較して、ESXiはArbitratorプロセスを介してより厳格に管理しています。そのため、Arbitratorにエラーが発生したりドライバーの競合が起きたりすると、接続は即座に切断されます。
必ず把握しておくべき2つの技術的制限事項:
- 共有不可: 1台の物理USBデバイスを同時に接続できるのは1台の仮想マシンのみです。
- vMotionの制限: USB接続中にvMotionを実行する場合、vSphere vMotion Networkを介してセッションを維持するネットワーク設定が必要です。ただし、移行中に接続が途切れるリスクは依然として残ります。
仮想マシンにUSBトークンおよび外付けHDDを割り当てる手順
ステップ1: SSHを有効化してハードウェアの認識を確認
Web UIですぐに設定しようとせず、まずはESXiカーネルがハードウェアを正常に認識しているかを確認しましょう。ESXi Host Clientにアクセスし、管理 > サービス > TSM-SSHを起動します。ターミナルを開き、rootアカウントでサーバーにSSH接続します。
デバイス一覧を確認するコマンドを実行します:
lsusb
# またはパススルーの詳細ステータスを確認:
esxcli hardware usb passthrough device list
画面にベンダーID(VID)とプロダクトID(PID)が表示されます。出力例:
Bus 001 Device 004: ID 096e:0405 Feitian Technologies, Inc. ePass2003
Bus 002 Device 003: ID 1058:25a2 Western Digital Technologies, Inc. Elements Portable 4TB
該当デバイスの情報が表示されていれば、ハードウェアおよび物理ポートは正常に認識されています。次のステップへ進みましょう。
ステップ2: USB Arbitratorサービスの確認
ハードウェアとしては認識されているものの、Web Client上でUSBの選択肢が表示されないケースが多々あります。その9割はusbarbitratorプロセスのフリーズが原因です。
サービスの状態を確認します:
/etc/init.d/usbarbitrator status
ターミナルに“usbarbitrator is not running”と返された場合は、直ちに再起動します:
/etc/init.d/usbarbitrator start
ステップ3: 仮想マシンにUSBコントローラーを追加
VMware Host ClientまたはvCenter Serverにログインします:
- ホットプラグが有効になっていない場合は仮想マシンをシャットダウンします(安定した構成のため停止を推奨)。
- VMを右クリックし、設定の編集を選択します。
- その他のデバイスの追加をクリックし、USBコントローラーを選択します(まだ追加されていない場合)。
- 適切なコントローラー規格を選択:
- USBトークン(各種電子署名・認証トークン): USB 2.0を選択します。Feitian社やSafeNet社の旧世代チップを採用したトークンは、xHCI 3.0規格では動作が不安定になる傾向があります。
- ポータブルHDD、外付けSSD: USB 3.0 / 3.1を選択します。USB 2.0の低速な約30 MB/sに対し、110〜140 MB/s前後の転送速度が得られます。
- 保存をクリックします。
ステップ4: Host USB Deviceの割り当て
コントローラーが追加されていれば、デバイスのマッピングは簡単です:
- 設定の編集ウィンドウで、その他のデバイスの追加 > USBデバイス(ホストUSBデバイス)を選択します。
- 新しく作成された項目で、対象のハードウェアデバイス名(例: Feitian ePass2003 や Western Digital Elements)を選択します。
- 保存をクリックし、仮想マシンを起動します。
ステップ5: よくあるトラブルシューティング
トラブル1: 外付けハードディスクがグレーアウトし、パススルーを選択できない
この現象は、ESXiがUSBマスストレージデバイスをVMFSデータストア用として自動的に占有(クレーム)してしまうことが原因です。ホストのストレージドライバーがデバイスをロックすると、USB Arbitratorが関与できなくなります。
対処法: USBストレージドライバーの設定を変更し、Arbitratorに制御権を譲るように構成します。SSHコンソールから以下のコマンド群を実行してください:
# Arbitratorを一時停止
/etc/init.d/usbarbitrator stop
# ESXiによるUSBストレージの自動占有を無効化
esxcli system settings advanced set -o /Disk/PassthroughUSBStorage -i 1
# Arbitratorを再起動
/etc/init.d/usbarbitrator start
コマンド実行後、再度Web Clientを開きます。外付けHDDの割り当て項目が正常に選択可能になっているはずです。
トラブル2: デバイスマネージャーではスマートカードを認識しているが、業務ソフト側で電子証明書が検出されない
この問題はESXiではなく、ゲストOSであるWindows Server側に起因します。Windows Serverではリソース最適化のため、デフォルトでSmart Cardサービスが無効または停止になっていることが一般的です。
仮想マシン側での解決手順:
Windows + Rキーを押し、services.mscと入力してEnterキーを押します。- Smart Cardサービス(サービス名:
SCardSvr)を探します。 - ダブルクリックして、スタートアップの種類を自動に変更します。
- 開始をクリックしてOKを押します。
電子署名ソフトや税務・会計ソフト(MISA SME、TaxOnline、HTKKなど)を再起動すると、電子証明書が正常に認識されます。
まとめ
VMware ESXiにおけるHost USB Passthroughは、物理ポート、ホスト上のusbarbitratorサービス、仮想マシン内のUSBコントローラーという3つの要素で成り立っています。この関係性をしっかり把握しておけば、問題発生時の切り分けを迅速に行うことができます。トラブルに遭遇した際は、極寒のサーバースペースでUSBケーブルを何度も抜き差しして時間を無駄にする前に、まずSSHを有効にしてlsusbコマンドで状態を確認しましょう。

