如何使用 VMware vSphere 虛擬機器的 USB 設備

虛擬機監視器的主要功能是在軟體層次上模擬虛擬機器使用的設備。設備在虛擬機器中創建,可以是虛擬控制器、磁碟、DVD-ROM、顯示卡、網路卡、輸入設備等。但是如果你想連接印表機、掃描器、USB 隨身碟、USB 硬碟、USB 智慧卡讀卡機、安全鎖、USB 授權金鑰等外部物理設備呢?

對於帶有 USB 介面的外部物理設備,您可以使用 USB 通過功能將它們連接到運行在 VMware WorkstationESXi 伺服器 上的虛擬機。本博客文章介紹了在 ESXi 主機上使用此功能的 VMware vSphere,包括要求和連接 USB 設備的步驟。

USB 通過是什麼?

VMware USB 設備通過是一項功能,允許您將連接到物理 ESXi 伺服器的 USB 端口上的物理 USB 設備連接到虛擬機,就像 USB 設備直接連接到虛擬機一樣。VMware 通過功能從 ESXi 4.1 開始提供。

使用透過功能將 USB 裝置從 ESXi 伺服器傳遞到虛擬機的操作系統(OS)的原因各不相同。例如,您可能有一台舊掃描儀或打印機,沒有支援最新 Windows OS 版本的驅動程式。您可以安裝舊版本的 Windows,該版本支援該 USB 裝置,並將該裝置連接到虛擬機。這項功能的另一個用途是當您需要直接以高速從/到 USB 硬碟傳輸文件到/從虛擬機時。可能會發生用戶需要在虛擬機上使用受硬體 USB 授權金鑰保護的軟件。

USB 透過功能的運作原理

USB 透過功能需要三個主要組件:調停器、USB 控制器和物理 USB 裝置。

調停器是 ESXi 伺服器上的專用服務。調停器掃描附加到物理伺服器的物理 USB 裝置,並負責在物理主機和虛擬機之間進行 USB 裝置流量路由。一次只能有一個虛擬機訪問 USB 裝置。連接到一個虛擬機的 USB 裝置對其他虛擬機進行阻止。USB 調停器支援多達 15 個 USB 控制器(vSphere 7.0)。調停器服務在 ESXi 上默認啟用。

A USB controller used on a physical ESXi server is the controller to which physical USB ports are connected. The physical USB controller works with physical USB devices inserted into the physical USB ports of the server. USB controllers can be onboard (they are also called integrated and are built-in on a chip in a motherboard) or external (implemented as PCI or PCIe cards that are inserted into the appropriate slots on a motherboard of a server). The onboard USB controller acts as a bridge between a USB bus and a PCIe (or PCI) bus. The onboard USB controller is physically connected by the appropriate number of PCIe lanes to a chipset on a motherboard.

A virtual USB controller is an emulated device created especially for a virtual machine running on a hypervisor. A virtual USB controller interacts with a physical USB controller when you passthrough a physical USB device from a physical ESXi server to a guest OS on the VM. Presence of a virtual USB controller in VM configuration is required to use the USB passthrough feature on the VM. A maximum of eight virtual USB controllers can be connected to a VM on an ESXi host. If you need to remove a virtual USB controller from a VM configuration, you have to remove all USB devices connected to that controller first. VMware USB driver is installed in a guest OS after adding a virtual USB controller to VM configuration.

A physical USB device is any USB device that has a USB interface and USB port for being connected to a computer. Maximum 20 USB devices can be connected to a single VM or ESXi host.

USB 標準和控制器模式為:

  • USB 2.0 和 USB 1.1(EHCI+UHCI
  • USB 3.0(xHCI)VM 硬件版本 8 或更高版本

通過使用 VMware USB 透過功能將物理 USB 裝置連接到虛擬機後,您可能需要在賓體操作系統中安裝連接的 USB 裝置的驅動程式。

USB 3.0 的需求

USB 3.0 可用於 начиная с VMware vSphere 5.5 修補程序 3 的 ESXi 伺服器。此目的在 VM 設定中需要 xHCI USB 控制器。使用 USB 3.0 直通的作業系統需求:Windows 8.1 或更高版本、Windows Server 2012 R2 或更高版本,或配備 Linux kernel 2.6.35 或更高版本的 Linux。自 VMware vSphere 7.0 以來支援以其最大速度運作的 USB 3.1 裝置

USB 直通的限制

在開始使用 USB 直通功能之前,您應該了解一些限制:

  • A USB drive cannot be used as a boot drive for a VM.
  • 如果 USB 磁碟機用於 開機 ESXi,則無法將此 USB 磁碟機附加到 VM。
  • VM 需要虛擬硬體版本 7 或更高版本。

VMware 可能不支援部分 USB 裝置:

  • USB 集線器
  • 使用非同步資料傳輸的音訊裝置和視訊相機
  • 部分 USB 鍵盤和滑鼠(您可以在 VMware 1021345 文章中找到詳細資訊)
  • 使用 CCID 的部分智慧卡可能需要額外調整才能連線到 VM

vMotion 適用於連接 USB 直通裝置的 VM。在適當的 VM 設定和啟用 vMotion 之後,USB 裝置在移轉到另一個 ESXi 主機後仍保持連線到 VM。

使用 USB 直通磁碟的 VM 存在 vMotion 限制:

  • 分散式電源管理(DPM)不受支持,因為 ESXi 主機無法關閉以節省電源,而不斷開 VM 中的 USB 設備(如果主機由 DPM 關閉,則會斷開 USB 設備)。在此主機上應禁用 DPM。
  • 不支援容錯容忍。
  • A VM cannot be suspended or powered off (otherwise USB devices are disconnected from a VM and they can be reconnected only after migration of the VM to the initial ESXi server to which USB devices are physically connected). The VM must be manually migrated to the ESXi host with the attached USB device when you need to power on this VM. Linux guests that were resumed can mount USB devices to different mount points after reconnection.
  • 具有通過 USB 通過設備的 VM 的 ESXi 主機必須通過 VM 內核界面 vmk0(用於管理網絡)和 TCP 端口 902 可訪問。

在使用熱添加功能並添加 CPU、內存或 PCI 設備之前,請從 VM 斷開 USB 設備。否則 USB 設備會自動斷開,並且當您使用熱添加功能時,可能會丟失一些數據。如果暫停 VM,然後恢復 VM,則 USB 設備會被斷開,然後再次連接到 VM。

至於創建用於連接到在 ESXi 或 VMware Workstation 上運行的虛擬機器的 VMware 虛擬 USB 驅動器或虛擬閃存驅動器,就像掛載虛擬軟盤驅動器或 CD / DVD 光盤一樣,目前不可能。

如何將 USB 設備連接到 VM

現在我們已經熟悉了理論,我們可以轉到實踐部分並查看 VMware vSphere 中的配置。

  1. 將 USB 設備插入 ESXi 伺服器的 USB 端口。在我的情況下,我將插入一個 USB 閃存驅動器。
  2. 之後,您可以在 ESXi 命令行界面中檢查 USB 設備是否已連接:
    lsusb
  3. 如下圖所示,我的隨身碟現在已連接至 ESXi 伺服器。
  4. USB 仲裁服務必須運行。您可以使用以下命令檢查服務狀態:
    chkconfig usbarbitrator –list
  5. 如果 USB 仲裁停止運行,您可以使用以下命令啟動 USB 仲裁:
    /etc/init.d/usbarbitrator start

    註:部落格文章中了解更多有關 ESXiCLI 的信息。

    該虛擬機位於由vCenter 伺服器管理的 ESXi 主機上。在我的示例中,我的虛擬機上安裝了 Windows 作為客戶操作系統。打開 VMware vSphere 客戶端,轉到主機和叢集。在導航窗格中,選擇要使用通過功能連接 USB 設備的虛擬機。虛擬機應處於關機狀態。您應在客戶操作系統中安裝 VMware 工具

  6. 選擇 VM 後,點擊 操作 > 編輯設置
  7. 編輯設置 窗口中,檢查 VM 配置中是否存在 USB 控制器。如果缺少 USB 控制器,請點擊 新增設備 > USB 控制器,並選擇 USB 控制器類型(USB 2.0 或 USB 3.0)。
  8. 如果存在 USB 控制器,则应将连接到 ESXi 服务器的 USB 设备添加到您的 VM。点击 新增设备 > 主机 USB 设备。
  9. A new string is added to the VM configuration. In the New USB Host device string, select one USB device that you want to connect to the VM. Now I have two USB flash drives attached to my physical ESXi server, and I’m connecting the Verbatim Flash drive to my VM (Verbatim product 0x0302).

    如果您需要启用 vMotion 支持,请展开 新主机 USB 设备,并选择 “连接设备时支持 vMotion” 复选框。请记住 vMotion 的要求和限制。点击 确定 保存配置并关闭此窗口。

  10. 启动虚拟机。一旦客户机操作系统加载完成,请等待直到 USB 闪存驱动器被初始化并安装完成。然后打开 Windows 设备管理器。右键点击 我的电脑 并在上下文菜单中点击 管理。在 计算机管理 窗口中,点击 设备管理器 并展开 磁盘驱动器 部分(由于我们连接了 USB 闪存驱动器,因此该设备应显示在这类设备中)。我们可以看到 Verbatim USB 设备,这是连接到具有 VMware USB 透传功能的 VM 的我的 USB 闪存驱动器的名称。
  11. 電腦管理視窗中開啟磁碟管理,確保一個磁碟驅動器已分配給USB 閃存驅動器。在我的情況下,一切都正確,現在我可以將數據從USB 閃存驅動器複製到虛擬機的虛擬磁碟,反之亦然。

VMware PCI 通道

如果您想使用VMware USB 通過功能連接到虛擬機的USB 設備不受VMware 支援,您可以嘗試使用PCI 通道功能並將具有PCI 介面的整個物理USB 控制器連接到虛擬機。

如果您的ESXi 服務器有一個插入PCI 插槽的USB 控制器,您可以將此PCI 設備通過至虛擬機。VMware PCI 通道也被稱為VMDirectPass。此方法比使用USB 通過功能不方便,但可以幫助您完成任務。

要求

伺服器硬件必須支援Intel Directed I/O 或AMD I/O 虛擬化技術(AMD IOMMU),並在UEFI/BIOS 中啟用。如果您的伺服器只有一個USB 控制器,您應該附加額外的USB 控制器,以避免丟失物理ESXi 服務器使用的USB 設備的連接。

限制和限制:

  • A VM cannot be suspended.
  • A VM cannot be migrated to other ESXi hosts with vMotion.
  • 不支援虛擬機快照。

讓我們來看看使用 PCI 透過方式將 USB 設備連接到虛擬機的工作流程,並將一整個 USB 控制器連接到該虛擬機。

  1. 為了識別 USB 設備和 USB 控制器(如果您的伺服器上安裝了多個 USB 控制器),您可以使用以下命令:
    lsusb -v | grep -e Bus -e iSerial
  2. 找到包含您的 USB 設備名稱的字串並識別控制器的 ID(例如,bus002)。
  3. 您可以在連接 USB 設備到 ESXi 伺服器時檢查 VMkernel 日誌:
    tail -f /var/log/vmkernel.log | grep -i USB
  4. 打開 VMware vSphere Client,然後轉到 主機和叢集
  5. 選擇您的 VM 所在的 ESXi 主機。
  6. 轉到 配置 標籤,然後在 硬體 部分選擇 PCI 設備
  7. 在 PCI 設備列表中找到並選擇所需的 USB 控制器,使用您之前檢測到的 ID。
  8. 所選控制器的狀態現在應該變為 可用
  9. 點擊 確定 保存設置。
  10. 重新啟動 ESXi 主機以生效更改。
  11. 確保您的 VM 已關機。進入 VM 設置,點擊 新增設備 > PCI 設備 > 新增。使用正確的 ID 在下拉選單中選擇您的 USB 控制器。
  12. 啟動虛擬機。檢查客戶端操作系統中的設備。如果虛擬機上安裝了Windows,打開設備管理器,然後檢查控制器和存儲設備。

連接USB智能卡

某些具有適當的CCID類的USB設備可能默認不支持連接到虛擬機。錯誤消息“無法將 ‘path:0/1/6/1’ 連接到此虛擬機。未找到設備”顯示。在日誌中,您可以看到消息:

(vmx-vcpu-0) 在使用前未聲明接口 0

PCSCD 是控制智能卡讀卡器的ESXi守護程序。為了避免衝突,虛擬機的USB智能卡訪問被禁用,因為ESXi服務器需要智能卡。因此,您不能使用默認配置的USB智能卡透過方式進行USB通行。您需要編輯ESXi主機的配置以啟用USB智能卡的USB通行。

  1. 停止虛擬機。打開虛擬機設置,選擇VM選項標籤,然後點擊編輯配置。
  2. 配置參數視窗中,點擊添加配置參數
    作為替代,您可以通過使用 SSH 客戶端連接到 ESXi 控制台,在命令行界面中編輯虛擬機的 VMX 配置文件。
  3. 如果該參數不存在,請編輯或添加此行到 VM 配置:

    usb.generic.allowCCID = “TRUE”
  4. 保存 VM 配置。
  5. 使用以下命令在 ESXi 命令行中停止 PCSCD 服務:

    sudo /etc/init.d/pcscd stop
  6. 確保 PCSCD 服務未運行:

    ps | grep pcscd
  7. 啟動 VM,並檢查設備,以確認 USB 智能卡讀卡器現在已連接到 VM。

結論

您可以直接連接到物理 ESXi 伺服器的 USB 埠連接的多樣設備,並在 VM 的客戶操作系統中使用它們,就像您在常規物理計算機上使用這些 USB 設備一樣。您甚至可以使用外部 USB 設備將虛擬機遷移到連接到父 ESXi 主機的其他主機上。儘管存在一些限制,但 VMware USB 通過功能在不同情況下增加了更多功能和靈活性。

VMware虛擬機備份對於使用VMware vSphere的用戶非常重要。下載NAKIVO Backup & Replication並嘗試這個通用的數據保護解決方案,以保護您的VMware vSphere虛擬機和環境中的其他數據。

Source:
https://www.nakivo.com/blog/how-to-use-usb-devices-with-a-vmware-vsphere-virtual-machine/