Trên host VMWare ESXi, bạn có thể chuyển hướng thiết bị USB cục bộ/flash drive/ổ đĩa gắn vào bên trong máy ảo. Công nghệ này gọi là USB Passthrough và có sẵn từ ESXi 4.1.
Giả sử nhiệm vụ: chuyển hướng ổ USB 3.0 ngoài gắn cục bộ vào host ESXi 6.7 vào máy ảo. Cần truy cập ổ để copy dữ liệu nhanh trực tiếp từ VM sang ổ USB riêng.
VMWare USB Passthrough
Chế độ Passthrough cho phép chuyển hướng thiết bị vật lý kết nối với host ESXi trực tiếp đến guest OS của máy ảo. Ở chế độ Passthrough, có thể cấp quyền truy cập trực tiếp đến ổ USB, modem hoặc controller PCI/USB cho máy ảo.
Để chuyển hướng thiết bị USB trong ESXi, cần một số thành phần chính:
- Arbitrator là dịch vụ riêng trên host ESXi quét thiết bị USB vật lý kết nối, định tuyến traffic USB giữa host và VM, và kiểm soát truy cập thiết bị (chỉ một VM có thể dùng thiết bị USB kết nối tại một thời điểm). USB arbitrator có thể theo dõi tối đa 15 USB controller cùng lúc.
- USB controllers — USB controller phải cài cả trên host vật lý và máy ảo.
Để cài USB controller cho VM trên VMWare ESXi, mở cài đặt VM và thêm thiết bị mới — USB controller. Khi thêm USB controller, chọn loại:
- USB 2.0 (EHCI+UHCI) – controller hỗ trợ thiết bị USB 2.0 và USB 1.1;
- USB 3.0 (xHCI) – hỗ trợ thiết bị USB 3.0 nhanh, yêu cầu phiên bản virtual hardware 8 trở lên.
Chế độ USB 3.0 có sẵn từ vSphere 5.5 patch 3. Để hỗ trợ, xHCI controller phải chạy trong guest OS. Windows 8.1/Windows Server 2012 R2 và Linux kernel 2.6.35 trở lên được hỗ trợ làm guest OS.
Chuyển hướng thiết bị USB đến VM ESXi
Trong chế độ USB Passthrough gốc, có thể kết nối thiết bị USB vật lý từ host đến máy ảo VMWare.
Yêu cầu và hạn chế chính của phương pháp chuyển hướng này:
- Virtual Hardware 7.0 trở lên;
- Chỉ cấp quyền truy cập trực tiếp thiết bị USB cho một VM;
- Số lượng thiết bị USB chuyển hướng tối đa cho một VM là 20;
- Khởi động VM từ thiết bị USB gắn không được hỗ trợ.
Sau khi thêm virtual USB controller cho VM, có thể chuyển hướng ổ USB kết nối với host:
- Thêm Host USB device mới trong cài đặt VM và nhấp Add;
- Chọn thiết bị USB kết nối từ danh sách thả xuống để thêm;
- Để hỗ trợ vMotion cho VM có ổ USB vật lý kết nối, tích选项 Support vMotion while device is connected;
- Sau đó ổ USB sẽ xuất hiện trong guest OS của máy ảo.
Có một số hạn chế vMotion cho VM có ổ USB chuyển hướng:
- Không thể dừng hoặc tạm dừng VM. Nếu bật máy, phải thủ công migrate nó sang host có thiết bị USB kết nối;
- Chế độ DPM không hỗ trợ, vì vCenter có thể tắt host có thiết bị USB kết nối để tiết kiệm năng lượng;
- Host ESXi với VM và thiết bị USB vật lý phải truy cập qua vmk0 trên TCP Port 902.
Nếu khi thêm thiết bị USB mới vSphere client báo không tìm thấy thiết bị USB (No available USB devices), nghĩa là VMWare không hỗ trợ ổ USB của bạn cho chuyển hướng chế độ USB passthrough. Tìm danh sách thiết bị USB tương thích trên trang VMWare chính thức (danh sách không dài). Xem phần "USB Devices tested for Passthrough from an ESXi Host to a Virtual Machine in ESXi 6.7" trong bài https://kb.vmware.com/s/article/1021345.
Trong trường hợp này, có thể chuyển hướng toàn bộ USB controller đến VM từ host ESXi.
VMware PCI Passthrough (VMDirectPath): Chuyển hướng USB Controller đến VM
Phương pháp khác, ít tiện hơn, cung cấp truy cập thiết bị USB vật lý từ VM là chuyển hướng toàn bộ USB controller từ host ESXi. Chế độ này gọi là VMDirectPath. Để dùng, chipset server phải hỗ trợ Intel Directed I/O hoặc AMD I/O Virtualization Technology (AMD IOMMU), và chế độ này được bật trong cài đặt BIOS/UEFI.
Nếu server chỉ có một USB controller và bạn chuyển hướng nó cho VM, bạn không thể dùng thiết bị USB kết nối cục bộ với host (bàn phím, chuột). Trong trường hợp này, tốt hơn thêm PCI USB controller bổ sung vào server.
Nếu host có nhiều USB controller, có thể xác định thiết bị USB kết nối và số controller qua ESXi shell. Hiển thị danh sách thiết bị USB:
# lsusb -v | grep -e Bus -e iSerial
Tìm dòng liên quan đến ổ USB trong output. Ví dụ:
Bus 002 Device 003: ID 0280:a00c Toshiba America Info. Systems, Inc.
Sau đó xác định root hub và iSerial theo số controller (Bus02, trường hợp này):
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 3.0 root hub iSerial 1 0000:00:1D.0
Nếu không thấy ổ USB, thử ngắt kết nối vật lý và cắm lại. Xem vmkernel.log xem USB Arbitrator có phát hiện ổ không:
tail -f /var/log/vmkernel.log | grep -i USB
cpu0:33271)<6>usb 4-2: new SuperSpeed USB device number 5 using xhci_hcd cpu0:33271)<6>usb 4-2: New USB device found, idVendor=0480, idProduct=b207 cpu0:33271)<6>usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 cpu0:33271)<6>usb 4-2: Product: External USB 3.0 cpu0:33271)<6>usb 4-2: Manufacturer: TOSHIBA cpu0:33271)<6>usb 4-2: SerialNumber: 20180528012427F cpu0:33271)<6>usb 4-2: Vendor: 0x0480, Product: 0xb207, Revision: 0x0315 cpu0:33271)<6>usb 4-2: Interface Subclass: 0x06, Protocol: 0x50 cpu0:33271)WARNING: LinScsiLLD: scsi_add_host:573: vmkAdapter (usb-storage) sgMaxEntries rounded to 255. Reported size was 65535 cpu0:33271)<6>usb-storage 4-2:1.0: interface is claimed by usb-storage cpu0:33271)<6>usb 4-2: device is not available for passthrough cpu0:33271)<6>usb 4-2: usbfs: registered usb0405 cpu0:33207)<6>usb-storage 4-2:1.0: suspended
Nếu ổ USB không được phát hiện bởi host ESXi, đảm bảo dịch vụ usbarbitrator đang chạy:
#chkconfig usbarbitrator --list
Dừng dịch vụ usbarbitrator chỉ khi muốn truy cập USB stick trực tiếp từ ESXi shell để copy file.
Giờ đã có số USB controller cần chuyển hướng đến VM.
- Để chuyển hướng USB controller vật lý, chọn host ESXi chạy VM và vào Manage → Settings → PCI Devices → Edit;
- Trong danh sách PCI device chọn USB controller cần theo ID (ví dụ,
00:1D.0, controller tênC610/X99 series chipset USB Enhanced Host Controller #1 Intel Corporation); - Trạng thái USB controller phải đổi từ Unavailable (This device is not currently available for VMs to use) thành Available (This device available for VMs to use). Nhấn OK;
- Để lưu thay đổi, khởi động lại host ESXi;
- Sau khi host boot, tắt VM và thêm thiết bị mới (New Device → PCI Device → Add). Chọn USB controller trong danh sách thả xuống (ví dụ,
0000:00:1D| Intel Corporation USB Chipset…); Nếu khi thêm PCI device xuất hiện thông báo: "Warning: The VM will not power on until its memory reservation equals its memory size", hãy dự trữ RAM cho VM. - Bật VM và đảm bảo ổ USB xuất hiện trong guest OS. Trong trường hợp tôi, ổ USB kết nối "Toshiba External USB 3.0 USB Device" xuất hiện trong guest Windows Server 2012 R2.
Trong chế độ VMDirectPath, có thể chuyển hướng tối đa hai thiết bị PCI vật lý đến VM.
Có một số hạn chế trên VM với thiết bị PCI chuyển hướng: không thể tạm dừng VM (Suspend), thực hiện vMotion sang host khác (logic, vì gắn với controller vật lý) hoặc tạo snapshot.
Hyper-V cũng hỗ trợ chuyển hướng thiết bị USB vật lý đến VM.