Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

การตั้งค่า USB Passthrough จาก VMWare ESXi ไปยัง Virtual Machine

บนโฮสต์ VMWare ESXi สามารถ Redirect อุปกรณ์ USB ท้องถิ่น/แฟลชไดรฟ์/ดิสก์ เข้าไปภายใน Virtual Machine ได้ เทคโนโลยีนี้เรียกว่า USB Passthrough พร้อมใช้งานตั้งแต่ ESXi 4.1

สมมติ ภารกิจของเราคือ Redirect External USB 3.0 Drive ที่ต่ออยู่กับ ESXi 6.7 Host ท้องถิ่น เข้าไปใน Virtual Machine ต้องการเข้าถึง Drive เพื่อคัดลอกข้อมูลจาก VM ไปยัง USB Drive แยกต่างหากอย่างรวดเร็ว

VMWare USB Passthrough

Passthrough Mode อนุญาตให้ Redirect Physical Device ที่ต่ออยู่กับ ESXi Host โดยตรงไปยัง Guest OS ของ Virtual Machine ใน Passthrough Mode สามารถให้ Virtual Machine เข้าถึง USB Drive, Modem หรือ PCI/USB Controller โดยตรงได้

เพื่อ Redirect อุปกรณ์ USB ใน ESXi ต้องมี Component หลักๆ ดังนี้:

  • Arbitrator — Service แยกบน ESXi Host ที่สแกน Physical USB Devices ที่ต่ออยู่, Route USB Device Traffic ระหว่าง Host และ VM, และควบคุมการเข้าถึง Device (VM เดียวเท่านั้นที่ใช้ USB Device ที่ต่ออยู่ได้) USB Arbitrator ติดตามได้สูงสุด 15 USB Controllers พร้อมกัน
  • USB Controllers — USB Controller ต้องติดตั้งทั้งบน Physical Host และ Virtual Machine

เพื่อติดตั้ง USB Controller สำหรับ VM บน VMWare ESXi เปิด VM Settings และเพิ่ม Device ใหม่ — USB Controller เมื่อเพิ่ม USB Controller ให้เลือก Type:

  • USB 2.0 (EHCI+UHCI) — Controller รองรับ USB 2.0 และ USB 1.1 Devices
  • USB 3.0 (xHCI) — รองรับ USB 3.0 Devices ที่เร็ว ต้องการ Virtual Hardware Version 8 หรือสูงกว่า

USB 3.0 Mode พร้อมใช้งานตั้งแต่ vSphere 5.5 Patch 3 เพื่อรองรับ ต้องมี xHCI Controller รันใน Guest OS Windows 8.1/Windows Server 2012 R2 และ Linux Kernel Version 2.6.35 ขึ้นไป รองรับเป็น Guest OS

การตั้งค่า USB Passthrough จาก VMWare ESXi ไปยัง Virtual Machine

Passthrough USB Device ให้ ESXi VM

ใน Native USB Passthrough Mode สามารถต่อ Physical USB Device จาก Host ไปยัง VMware Virtual Machine ได้

ข้อกำหนดและข้อจำกัดหลักของวิธี Redirect นี้:

  • Virtual Hardware 7.0 หรือใหม่กว่า
  • สามารถให้ Direct Access ไปยัง USB Device ได้เพียง 1 VM
  • จำนวน USB Devices สูงสุดที่ Redirect ให้ VM คือ 20
  • ไม่รองรับ VM Boot จาก USB Device ที่ต่ออยู่

หลังเพิ่ม Virtual USB Controller สำหรับ VM แล้ว สามารถ Redirect USB Drive ที่ต่ออยู่กับ Host:

  1. เพิ่ม Host USB Device ใหม่ใน VM Settings และคลิก Add
  2. เลือก USB Device ที่ต่ออยู่จาก Dropdown List เพื่อเพิ่ม
  3. เพื่อเปิดใช้งาน vMotion Support สำหรับ VM ที่มี Physical USB Drive ต่ออยู่ ให้ติ๊ก Support vMotion while device is connected การตั้งค่า USB Passthrough จาก VMWare ESXi ไปยัง Virtual Machine
  4. จากนั้น USB Drive จะปรากฏใน Guest OS ของ Virtual Machine

มีข้อจำกัด vMotion สำหรับ VMs ที่มี Redirected USB Drive:

  • ไม่สามารถหยุดหรือ Pause VM ได้ หากเปิดเครื่อง ต้อง Migrate ไป Host ที่ USB Device ต่ออยู่ด้วยตนเอง
  • DPM Mode ไม่รองรับ เนื่องจาก vCenter อาจปิด Host ที่มี USB Device ต่ออยู่เพื่อประหยัดพลังงาน
  • ESXi Hosts ที่มี VM และ Physical USB Device ต้องเข้าถึงได้ผ่าน vmk0 ผ่าน TCP Port 902

หากเวลาเพิ่ม USB Device ใหม่ vSphere Client แสดงข้อความว่าไม่พบ USB Devices (No available USB devices) หมายถึง VMWare ไม่รองรับ USB Drive ของคุณสำหรับ Redirect ใน USB Passthrough Mode สามารถหา List ของ USB Devices ที่รองรับได้บนเว็บไซต์ VMWare อย่างเป็นทางการ (List ไมายาวนัก) ตรวจสอบส่วน "USB Devices tested for Passthrough from an ESXi Host to a Virtual Machine in ESXi 6.7" ในบทความ https://kb.vmware.com/s/article/1021345

การตั้งค่า USB Passthrough จาก VMWare ESXi ไปยัง Virtual Machine

ในกรณีนี้ สามารถ Redirect USB Controller ทั้งตัวไปยัง VM จาก ESXi Host ได้

VMware PCI Passthrough (VMDirectPath): Redirect USB Controller ให้ VM

วิธีอีกอย่างที่ไม่สะดวกเท่าไหร่ในการให้สิทธิ์เข้าถึง Physical USB Device จาก VM คือ Redirect USB Controller ทั้งตัวจาก ESXi Host โหมดนี้เรียกว่า VMDirectPath เพื่อใช้งาน Chipset ของเซิร์ฟเวอร์ต้องรองรับ Intel Directed I/O หรือ AMD I/O Virtualization Technology (AMD IOMMU) และโหมดนี้ต้องเปิดใน BIOS/UEFI Settings

หากมี USB Controller เดียวบนเซิร์ฟเวอร์และ Redirect ไป VM จะไม่สามารถใช้ USB Devices ที่ต่ออยู่กับ Host ท้องถิ่น (Keyboard, Mouse) ได้ ในกรณีนี้ ควรเพิ่ม PCI USB Controller เพิ่มเติมเข้าไปในเซิร์ฟเวอร์

หาก Host มี USB Controllers หลายตัว สามารถระบุ USB Device ที่ต่ออยู่และหมายเลข Controller ผ่าน ESXi Shell แสดงรายการ USB Devices:

# lsusb -v | grep -e Bus -e iSerial

หาบรรทัดที่เกี่ยวข้องกับ USB Drive ใน Output เช่น:

Bus 002 Device 003: ID 0280:a00c Toshiba America Info. Systems, Inc.

จากนั้นระบุ Root Hub และ iSerial ด้วยหมายเลข Controller (Bus02 ในกรณีนี้):

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 3.0 root hub iSerial 1 0000:00:1D.0

หากไม่เห็น USB Drive ลองถอดต่อ Physical อีกครั้ง ดู vmkernel.log เพื่อดูว่า USB Arbitrator ตรวจพบ Drive หรือไม่:

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

การตั้งค่า USB Passthrough จาก VMWare ESXi ไปยัง Virtual Machine

หาก USB Drive ไม่ถูกตรวจพบโดย ESXi Host ให้ตรวจสอบว่า Service usbarbitrator กำลังรันอยู่:

#chkconfig usbarbitrator --list

หยุด Service usbarbitrator เฉพาะเมื่อต้องการเข้าถึง USB Stick โดยตรงจาก ESXi Shell เพื่อคัดลอกไฟล์

ตอนนี้เราได้หมายเลข USB Controller ที่จะ Redirect ให้ VM

  1. เพื่อ Redirect Physical USB Controller เลือก ESXi Host ที่ VM รันอยู่ ไปที่ Manage → Settings → PCI Devices → Edit
  2. ในรายการ PCI Devices เลือก USB Controller ที่ต้องการด้วย ID (ในตัวอย่างคือ 00:1D.0 Controller ชื่อ C610/X99 series chipset USB Enhanced Host Controller #1 Intel Corporation)
  3. สถานะของ USB Controller ต้องเปลี่ยนจาก Unavailable (This device is not currently available for VMs to use) เป็น Available (This device available for VMs to use) คลิก OK การตั้งค่า USB Passthrough จาก VMWare ESXi ไปยัง Virtual Machine
  4. เพื่อบันทึกการเปลี่ยนแปลง Restart ESXi Host
  5. หลังบูท Host แล้ว ปิด VM และเพิ่ม Device ใหม่ (New Device → PCI Device → Add) เลือก USB Controller ใน Dropdown List (เช่น 0000:00:1D| Intel Corporation USB Chipset…) หากตอนเพิ่ม PCI Device ปรากฏข้อความ: "Warning: The VM will not power on until its memory reservation equals its memory size" ให้ Reserve RAM ให้ VM
  6. Power On VM และตรวจสอบว่า USB Drive ปรากฏใน Guest OS ในกรณีของผม USB Drive ที่ต่ออยู่ "Toshiba External USB 3.0 USB Device" ปรากฏใน Guest Windows Server 2012 R2 การตั้งค่า USB Passthrough จาก VMWare ESXi ไปยัง Virtual Machine

ใน VMDirectPath Mode สามารถ Redirect Physical PCI Devices ได้สูงสุด 2 ตัวต่อ VM

มีข้อจำกัดบน VM ที่มี PCI Device Redirected: ไม่สามารถ Pause VM (Suspend), ทำ vMotion ไป Host อื่น (สมเหตุผลเพราะผูกกับ Physical Controller) หรือสร้าง Snapshots ได้

Hyper-V ก็รองรับการ Redirect Physical USB Devices ให้ VM เช่นกัน