超虚拟化ソフトウェアの主な機能は、仮想マシンに使用されるデバイスをソフトウェアレベルでエミュレートすることです。仮想コントローラ、ディスク、DVD-ROM、ビデオカード、ネットワークカード、入力デバイスなど、仮想マシン内で作成されます。しかし、もしプリンタ、スキャナ、USBフラッシュドライブ、USBHDD、USBスマートカードリーダー、セキュリティドングル、USBライセンスキーなどを接続したいと思うとはどうなりますか?
外部のUSBインターフェースを持つ物理的なデバイスについて、USB穿透機能を使用して、VMware WorkstationやESXiホスト上の仮想マシンに接続することができます。このブログ投稿では、ESXiホスト上のVMware vSphereでこの機能を使用する方法について説明します。
USB穿透とは何でしょう?
VMwareのUSBデバイス穿透機能は、物理的なUSBデバイスをESXiホストのUSBポートに接続した状態で、仮想マシンに直接接続されるようにする機能です。VMware穿透機能は、ESXi 4.1から使用可能な機能です。
USBデバイスをESXiホストから仮想マシンのゲストオペレーティングシステム(OS)に通過させる理由は様々です。たとえば、古いスキャナーやプリンターが最新のWindowsオペレーティングシステムのドライバーを持っていない場合であれば、古いバージョンのWindowsをインストールし、USBデバイスをサポートしていることができ、このデバイスを仮想マシンに接続することができます。この機能の別の実用的な用途は、USB硬盘から仮想マシンに直接高速でファイルをコピーすることができる場合です。仮想マシン内でハードウェアUSBライセンスキーを持つソフトウェアを使用する必要があることがあるかもしれません。
USB Pass-through の機能
USB Pass-through を機能させるためには、アルティシャー、USBコントローラー、そして物理的なUSBデバイスなど3つの主要なコンポーネントが必要です。
アルティシャーは、ESXiサーバー上の固有のサービスです。アルティシャーは、物理的なUSBデバイスを物理的なサーバーに接続した状態でUSBデバイスをスキャンし、仮想マシンと物理的なホストの間でUSBデバイスのトラフィックをルーティングします。一度には、1つの仮想マシンだけがUSBデバイスにアクセスできます。仮想マシンに接続されたUSBデバイスへのアクセスは、他の仮想マシンにブロックされます。USBアルティシャーは、vSphere 7.0で最大15のUSBコントローラーをサポートします。アルティシャーサービスは、ESXiでデフォルトで有効化されています。
USBコントローラは、物理的なESXiサーバーに使用されるコントローラで、物理的なUSBポートが接続されるコントローラです。物理的なUSBコントローラは、サーバー上の物理的なUSBポートに insertされた物理的なUSBデバイスと共に機能します。USBコントローラは、onboard(または統合されて、母板のチップ上に内蔵される)または外部で実装される(PCIまたはPCIeカードとして、サーバーの母板の対応するスロットに insertされる)です。onboard USBコントローラは、USBバスとPCIe(またはPCI)バスの間の橋渡しとして機能します。onboard USBコントローラは、適切な数のPCIe経路を通じて、母板チップセットに接続されます。
仮想USBコントローラは、ハイバーサーバー上で実行される仮想マシン用に作成されたエミュレートされたデバイスです。仮想USBコントローラは、物理的なUSBデバイスが物理的なESXiホストから仮想マシンのゲストOSに渡される際に、物理的なUSBコントローラとやりとりします。仮想USBコントローラは、VM構成にUSB passthrough機能を使用するために必要です。ESXiホストの仮想マシンには最大8つの仮想USBコントローラが接続できます。VM構成から仮想USBコントローラを取り除く場合、そのコントローラに接続されたすべてのUSBデバイスをまず取り除く必要があります。仮想USBコントローラを仮想マシン構成に追加した後、ゲスト操作系统にVMware USBドライバーがインストールされます。
物理的USBデバイスは、USBインターフェースとUSBポートを持つUSBデバイスであり、コンピュータに接続するためのUSBポートを持つものです。一つの仮想マシンまたはESXiホストには最大20台のUSBデバイスを接続できます。
USB標準とコントローラモードは以下の通りです。
- USB 2.0とUSB 1.1 (EHCI+UHCI)
- USB 3.0 (xHCI) VM硬件版本8またはそれ以上
VMware USB passthrough機能を使用して仮想マシンに物理的なUSBデバイスを接続した後、ゲストオペレーティングシステムで接続されたUSBデバイスのドライバーをインストールする必要がある場合があります。
USB 3.0の要件
USB 3.0はVMware vSphere 5.5パッチ3以降のESXiサーバーで利用可能です。これにはVM構成でUSB xHCIドライバーが必要です。USB 3.0 passthroughを使用するためのオペレーティングシステムの要件は、Windows 8.1またはそれ以上、Windows Server 2012 R2またはそれ以上、またはLinux kernel 2.6.35またはそれ以上です。USB 3.1デバイスはVMware vSphere 7.0で初めて完全なスピードでサポートされました。
USB Passthroughの制限
USB passthrough機能を使用する前に注意すべき制限がいくつかあります:
- USBドライブを仮想マシンのブートドライブとして使用することはできません。
- USBドライブをESXiのブートに使用した場合、このUSBドライブは仮想マシンに接続することはできません。
- 仮想硬件版本7またはそれ以上が仮想マシンに必要です。
いくつかのUSBデバイスはVMwareでサポートされない可能性があります:
- USBハブ
- 非同期データ転送を使用するオーディオデバイスとビデオカメラ
- いくつかのUSBキーボードとマウス(詳細はVMware記事1021345を参照してください)
- CCIDを使用するいくつかのスマートカードは、仮想マシンに接続するために追加の設定を必要とします。
vMotionは、USBパススルーデバイスを接続したVMに対して可能です。VMを適切に設定し、vMotionを有効にした後、USBデバイスはESXiホスト間の移行後にもVMに再接続されます。
USBパススルーディスクを使用している仮想マシンにはvMotionの制限があります:
- 分散型電力管理(DPM)はサポートされません。なぜなら、USBデバイスを仮想マシンから切断しない限り、ESXiホストを電源オフにして電力を節約することができません(DPMを使用してホストを電源オフにした場合、USBデバイスは切断されます)。DPMはこのホストで無効にしてください。
- フォールトトレンドはサポートされていません。
- VMはサスペンス状態または電源オフ状态にはならず、そうするとUSBデバイスがVMから切断され、USBデバイスを再接続するためにVMを最初のESXiホストに移行する必要があります。VMを手動でこのUSBデバイスに接続されたESXiホストに移行する必要があります。Linuxゲストが再接続された後、USBデバイスを異なるマウントポイントにマウントすることができます。
- USBパススルーデバイスを持つ仮想マシンを持つESXiホストは、仮想マシンのカーネルインターフェース(管理ネットワーク用)とTCPポート902を通してアクセス可能でなければならないです。
仮想マシンからUSBデバイスを使用する前に、hot-add
機能やCPU、メモリ、PCIデバイスを追加する前にUSBデバイスを切断する必要があります。そうしない場合、hot-add
機能を使用する際にUSBデバイスが自動的に切断され、一部のデータが失われる可能性があります。VMを一時保存し、再開する場合、USBデバイスは切断され、その後VMに再接続されます。
VMwareの仮想USBドライブまたは仮想フラッシュドライブを作成し、ESXiやVMware Workstationで実行中の仮想マシンに添付する方法は、仮想フロッピーディスクやCD/DVDディスクをマウントするのと同様ですが、現在この選択肢はサポートされていません。
USBデバイスを仮想マシンに接続する方法
理論を熟悉したので、VMware vSphereでの設定を見るための実践部分に移りましょう。
- USBデバイスをESXiサーバのUSBポートに差し込みます。私の場合、USBフラッシュドライブを差し込むことにしました。
- その後、USBデバイスがESXiに接続されたかどうか、ESXiのコマンドラインインターフェースで確認することができます:
lsusb
- 以下のスクリーンショットで、私のフラッシュドライブがESXiサーバに接続されていることがわかります。
- USBアービターサービスを実行していなければならません。このサービスの状態をコマンドで確認することができます:
chkconfig usbarbitrator --list
- USBアーバイターを停止した場合、以下のコマンドで再起動することができます。
/etc/init.d/usbarbitrator start
注釈: ESXiCLIについて詳細は、ブログ投稿を参照してください。
VMは、この例では、vCenter Serverによって管理されるESXiホスト上に存在します。Windowsは、仮想マシンのゲストOSとしてインストールされています。VMware vSphere Clientを開き、Hosts and Clustersに移動します。ナビゲーターパインにある仮想マシンを選択し、passthrough機能を使用してUSBデバイスを接続します。仮想マシンは電源をオフにしておく必要があります。ゲストOSにVMware Toolsをインストールする必要があります。
- 仮想マシンを選択した後、Actions > Edit settingsをクリックします。
- Edit Settingsウィンドウで、仮想マシンの設定にUSBコントローラが存在しているかどうか確認してください。USBコントローラがない場合、Add New Device > USB Controllerをクリックし、USBコントローラのタイプ(USB 2.0またはUSB 3.0)を選択します。
- USBコントローラが存在する場合、ESXiホストに接続されているUSBデバイスをVMに追加する必要があります。Add New Device > Host USB Deviceをクリックします。
- 新しいストリングが仮想マシンの設定に追加されました。新しいUSBホストデバイスストリングにおいて、VMに接続したいUSBデバイスを選択してください。今、私の物理的ESXiサーバには2つのUSBフラッシュドライブが接続されていますが、VM(ベルバティム製品0x0302)にはベルバティムのフラッシュドライブを接続しています。vMotionサポートを有効にする場合は、新しいUSBホストデバイスを展開して、「デバイス接続時にvMotionをサポート」チェックボックスを選択してください。vMotionの要件と制限に注意してください。設定を保存してこのウィンドウを閉じるにはOKをクリックしてください。
- 仮想マシンを起動します。ゲストOSが読み込まれると、初期化しUSBフラッシュドライブをインストールするのを待ってください。次に、Windows Device Managerを開きます。My Computerを右クリックし、コンテキストメニューからManageをクリックしてください。コンピュータ管理ウィンドウでデバイスマネージャをクリックし、USBフラッシュドライブを接続したため、このデバイスカテゴリにこのデバイスが表示されるはずです)。私のVMware USB Pass-through機能を使用してVMに接続されたUSBスティックに接続されているベルバティムUSBデバイスの名前を見ることができます。
- Windowsのゲスト環境内のVMにUSBフラッシュドライブからデータをコピーする場合、ディスク管理をコンピュータ管理ウィンドウで開いて、USBフラッシュドライブにディスクドライブが割り当てられていることを確認してください。私の場合は、すべて正しく、今、USBフラッシュドライブからWindowsゲスト内のVMの仮想ディスクにデータをコピーすることができます。そして、その逆も可能です。
VMware PCI Passthrough
VMwareでUSBの passthrough機能を使用してVMに接続しようとするUSBデバイスがVMwareでサポートされていない場合、PCI passthrough機能を使用し、PCIインターフェースを持つ物理的USBコントローラーをVMに接続することができます。
あなたのESXiサーバーにUSBコントローラーがPCIスロットに取り込まれている場合、このPCIデバイスを仮想マシンに渡すことができます。VMware PCI passthroughはVMDirectPassとも呼ばれます。この方法はUSB passthroughを使用するよりも機能が少し簡単ですが、作業を完了するための手助けができます。
要件
サーバー硬件がIntel Directed I/OまたはAMD I/O Virtualization Technology (AMD IOMMU)をサポートしており、UEFI/BIOSで有効になっている必要があります。あなたのサーバーには1つのUSBコントローラーしかありません場合、追加のUSBコントローラーを接続することで、物理的ESXiホストに使用されるUSBデバイスとの接続を失わないようにしてください。
制約と限界:
- 仮想マシンを一時停止することはできません。
- VMはvMotionを使用して他のESXiホストに移行することはできません。
- 仮想マシンのスナップショットはサポートされていません。
USBデバイスをVMに接続する workflow を見てみましょう。PCI passthroughを使用してUSBデバイスをVMに接続し、USBデバイスが接続されているUSBコントローラーをVMに接続する。
- USBデバイスとUSBコントローラーを特定するには、このコマンドを使用します。
lsusb -v | grep -e Bus -e iSerial
- USBデバイスが接続されているUSBコントローラーの名前を持つ文字列を探して、コントローラーID(例:bus002)を特定します。
- ESXiサーバーにUSBデバイスを接続するとVMkernelログを確認することができます。
tail -f /var/log/vmkernel.log | grep -i USB
- VMware vSphere Clientを開き、Hosts and Clustersに移動します。
- 虚拟化機が存在するESXiホストを選択します(USBデバイスを接続する必要がある)。
- Configureタブを選択し、PCI DevicesをHardwareセクションに選択します。
- 以前に Detected ID を使用して、PCIデバイスのリストから必要なUSBコントローラーを探して選択します。
- 選択したドライバーの状態は今やAvailableになるはずです。
- 設定を保存するためにOKを押します。
- 変更が有効になるには、ESXiホストを再起動してください。
- 仮想マシンを停止してください。VM設定に移動し、新しいデバイスを追加 > PCIデバイス > 追加をクリックします。USBコントローラをドロップダウンメニューから正しいIDを使用して選択してください。
- 仮想マシンを再接通してください。ゲストOS内のデバイスを確認してください。仮想マシンにWindowsがインストールされている場合、デバイスマネージャを開いてドライバーとストレージデバイスを確認してください。
USB Smart Card Connection
適切なCCIDクラスを持つUSBデバイスは、仮想マシンにデフォルトでは接続されない場合があります。エラーメッセージ “この仮想マシンに‘path:0/1/6/1’を接続することができません。デバイスが見つかりません”が表示されます。ログで、以下のメッセージが表示されます:
(vmx-vcpu-0) インターフェース 0 を使用前に要求しませんでした
PCSCDは、スマートカードリーダーを制御するESXiデーモンです。仮想マシンにはUSBスマートカードのアクセスがデフォルトでは無効になっていることに注意してください。なぜなら、ESXiホストはスマートカードを必要としているからです。結果的に、USBのパススルーは、USBスマートカードのデフォルト設定により使用できません。USBスマートカードのためのUSBのパススルーを有効にするために、ESXiホストの設定を編集する必要があります。
- 仮想マシンを停止してください。仮想マシンの設定を開いて、VMオプションタブを選択し、設定を編集をクリックします。
- 設定 Parameters ウィンドウで、設定 Parameters を追加 をクリックします。
または、SSHクライアントを使用してESXiコンソールに接続し、仮想マシンのVMX設定ファイルをコマンドラインインターフェースで編集することもできます。
- このパラメーターが存在しない場合、仮想マシン設定にこの行を編集または追加してください:
usb.generic.allowCCID = "TRUE"
- 仮想マシン設定を保存します。
- ESXiのコマンドラインで、以下のコマンドを使用してPCSCDサービスを停止します:
sudo /etc/init.d/pcscd stop
- PCSCDサービスが実行されていないことを確認してください:
ps | grep pcscd
- 仮想マシンをオンにし、USBスマートカードリーダーが仮想マシンに接続されていることを確認してください。
結論
USBポートに接続された各种デバイスを物理的ESXiホストに直接仮想マシンに接続することができ、これらのUSBデバイスを通常の物理的コンピュータで使用するように、仮想マシンのゲストオペレーティングシステム内で使用することができます。また、主要ESXiホストに接続された外部USBデバイスを使用して、vMotionを介して仮想マシンを別のホストに移行することもできます。いくつかの制限にもかかわり、VMware USBパススルー機能は、さまざまな状況で機能と柔軟性を追加します。
VMware vSphereを使用している方にとって、VMware VMバックアップは重要です。NAKIVO Backup & Replicationをダウンロードし、この普遍的なデータ保護ソリューションを試してみてください。これを使用すると、VMware vSphere仮想マシンおよび環境内の他のデータを保護することができます。
Source:
https://www.nakivo.com/blog/vmware-administration-essentials-configuring-esxi-vm-networks-2/