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

การเข้าถึง USB Flash Drive จาก VMware ESXi

บางครั้งอาจต้องการเชื่อมต่อ USB Flash Drive (Stick) ภายนอกโดยตรงกับ VMware ESXi Host เช่น ต้องการ Copy VM Image ส่งไปสำนักงานสาขา (ถ้า WAN ช้าหรือแน่น) Backup ไฟล์ VM ไป USB ภายนอก Copy ISO File หรือ VM Image ไป ESXi Host (ต้องการไม่ให้โหลด LAN) บทความนี้จะแสดงวิธีเชื่อม USB Flash Drive/Stick กับ ESXi Host เป็น VMFS Datastore หรือ Copy ไฟล์จาก Partition FAT32/NTFS โดยตรง

วิธีเชื่อม External USB Drive เป็น VMFS Datastore ใน VMware ESXi

สมมติต้องการเชื่อม USB Drive กับ ESXi Host และสร้าง VMFS Datastore บนมัน เพื่อ Copy/Move ไฟล์และ Image VM ได้สะดวก

อย่างเป็นทางการ VMware ไม่รองรับ External USB Drives เป็น VMFS Datastore แต่ใช้งานได้จริง นอกจากนี้ ESXi ไม่รองรับ USB Device ขนาดใหญ่กว่า 2 TB

ใน VMware ESXi 6.5 ขึ้นไป วิธีการเชื่อม USB Device กับ Host เปลี่ยนไป ก่อนหน้านี้ใช้หลาย Driver (xhci, ehci-hcd, usb-uhci, usb-storage) ต่อมาใช้ Single USB Driver (vmkusb) แทนทั้งหมด

  1. เชื่อมต่อ ESXi Console ผ่าน SSH
  2. หยุด Service USB Arbitrator Service นี้ใช้สำหรับ Passthrough USB Device จาก ESXi Host ไป VM (USB Passthrough):
    # /etc/init.d/usbarbitrator stop
    หากไม่ต้องการให้ USB Arbitrator เริ่มอัตโนมัติหลัง Host Restart รัน:
    # chkconfig usbarbitrator off
  3. เชื่อม USB Drive ว่างเข้ากับ ESXi Host
  4. ระบุชื่อ USB Drive จาก Log: /var/log/vmkernel.log หรือใช้ /dev/disks:
    # ls /dev/disks/
    USB Disk ปกติชื่อ mpx.vmhbaX หรือ naa.X การเข้าถึง USB Flash Drive จาก VMware ESXi
  5. สร้าง GPT (GUID) Partition Table บน USB Drive:
    # partedUtil mklabel /dev/disks/naa.5000000000000001 gpt
  6. สร้าง Partition บน Drive ด้วยตน เอง ระบุ First และ Last Sector ดูข้อมูล Disk Sectors:
    # partedUtil getptbl /dev/disks/naa.5000000000000001
    การเข้าถึง USB Flash Drive จาก VMware ESXi
  7. First Sector เสมอเป็น 2048 ขนาด Last Sector คำนวณจาก Output getptbl ในตัวอย่างคำนวณ: 121597 * 255 * 63 -1 = 1953455804
    ถ้ามี Partition อยู่แล้ว สามารถลบได้:
    # partedUtil delete /dev/disks/naa.5000000000000001 1
  8. สร้าง VMFS Partition (GUID ของ Partition นี้คือ AA31E02A400F11DB9590000C2911D1B8 เสมอ):
    # partedUtil setptbl /dev/disks/naa.5000000000000001 gpt "1 2048 1953455804 AA31E02A400F11DB9590000C2911D1B8 0"
  9. Format Partition ด้วย VMFS6:
    # vmkfstools -C vmfs6 -S USB-HDD-DSDatastore /dev/disks/naa.5000000000000001:1
  10. เปิด VMware vSphere Client GUI ไปที่ Storages USB Drive จะปรากฏในรายการ Datastore ที่ใช้ได้

การเข้าถึง USB Flash Drive จาก VMware ESXi

วิธี Copy ไฟล์จาก USB Drive (NTFS/FAT32) ไป ESXi โดยตรง

หากไม่อยากเปลี่ยน File System บน USB Drive เป็น VMFS (มีเทคนิคเล็กน้อยเข้าถึง VMFS จาก Windows) สามารถเข้าถึงไฟล์บน Partition NTFS หรือ FAT32 จาก ESXi Console และ Copy ไฟล์ที่ต้องการได้

ปิด USB Arbitrator Service ก่อนเชื่อม USB Drive กับ ESXi Host

เพื่อเข้าถึง Partition FAT32 จาก ESXi ใช้ Tool mcopy สำหรับเข้าถึง NTFS Partition บน USB Drive ใช้ ntfscat ระบบไฟล์ Ext3 รองรับได้โดยค่าเริ่มต้น ข้อจำกัดพื้นฐาน:

  • Partition FAT32 และ Ext3 อ่าน/เขียนได้
  • Drive NTFS เป็น Read-only (Copy ข้อมูลจาก NTFS USB Drive ไป ESXi ได้ แต่ไม่สามารถ Copy กลับไป USB ได้)

คัดลอกไฟล์จาก USB Device FAT32 ไป ESXi:

# /bin/mcopy -i "/dev/disks/naa.5000000000000001:2" ::/some.iso /vmfs/volumes/12345678-ddd654321-4321-aaaabbbb2222/iso/some.iso

โดย /some.iso คือ Path ไฟล์บน USB Drive Path ที่สองคือที่ Copy ไปบน ESXi Host (เช่น VMFS Datastore โดยตรง)

เพื่อ Copy กลับจาก ESXi ไป USB ให้สลับ Path ในคำสั่ง

ปัญหาหลักของ FAT32 คือไม่รองรับไฟล์เกิน 4 GB ทำให้ Copy VMDK Files ของ VM ยาก ปกติจะแยก Source File เป็นหลาย Part ก่อน Copy (เช่น 3 GB ต่อ Part):

# split -b 3221225472 /vmfs/volumes/xx/vm1/vm1.vmdk

จากนั้น Copy ทุก Part ไป USB Drive และ Join กลับบน ESXi Host ปลายทาง:

# cat vm1* > vm1.vmdk

คัดลอกไฟล์จาก USB Drive ที่ Format NTFS ไป ESXi Host ใช้คำสั่ง:

# /bin/ntfscat -f /dev/disks/naa.5000000000000001:2" some.iso > /vmfs/volumes/12345678-ddd654321-4321-aaaabbbb2222/iso/some.iso

Copy ไป ESXi ได้อย่างเดียว ไม่สามารถ Copy กลับไป NTFS ได้ด้วย ntfscat