আপনার VMware ESXi হোস্টে সংযুক্ত লোকাল USB ডিভাইস/ফ্ল্যাশ ড্রাইভ/ডিস্ক ভার্চুয়াল মেশিনের ভিতরে রিডাইরেক্ট করা যায়। এই টেকনোলজিকে USB Passthrough বলা হয় এবং ESXi 4.1 থেকে উপলব্ধ।
মান লজিয়ে, আমাদের টাস্ক হলো ESXi 6.7 হোস্টে লোকালি সংযুক্ত একটি এক্সটার্নাল USB 3.0 ড্রাইভকে একটি ভার্চুয়াল মেশিনে রিডাইরেক্ট করা। আমাদের VM থেকে সরাসরি একটি আলাদা USB ড্রাইভে ডেটা দ্রুত কপি করার জন্য ড্রাইভটি অ্যাক্সেস করতে হবে।
VMware USB Passthrough
Passthrough মোড একটি ফিজিক্যাল ডিভাইসকে ESXi হোস্টে সংযুক্ত থাকা অবস্থায় সরাসরি ভার্চুয়াল মেশিনের গেস্ট OS-এ রিডাইরেক্ট করতে দেয়। Passthrough মোডে আপনি একটি ভার্চুয়াল মেশিনকে USB ড্রাইভ, মডেম বা PCI/USB কন্ট্রোলারের সরাসরি অ্যাক্সেস দিতে পারেন।
ESXi-এ USB ডিভাইস রিডাইরেক্ট করার জন্য কিছু মূল কম্পোনেন্ট প্রয়োজন:
- Arbitrator — ESXi হোস্টে একটি পৃথক সার্ভিস যা সংযুক্ত ফিজিক্যাল USB ডিভাইসগুলো স্ক্যান করে, হোস্ট এবং VM-এর মধ্যে USB ডিভাইস ট্রাফিক রাউট করে, এবং ডিভাইস অ্যাক্সেস নিয়ন্ত্রণ করে (শুধু একটি VM সংযুক্ত USB ডিভাইস ব্যবহার করতে পারে)। একটি USB arbitrator একসাথে ১৫টি USB কন্ট্রোলার ট্র্যাক করতে পারে।
- USB কন্ট্রোলার — একটি USB কন্ট্রোলার অবশ্যই ফিজিক্যাল হোস্টে এবং ভার্চুয়াল মেশিনে উভয় জায়গায় ইনস্টল থাকতে হবে।
VMware ESXi-এ VM-এর জন্য USB কন্ট্রোলার ইনস্টল করতে, VM সেটিংস খুলুন এবং একটি নতুন ডিভাইস যোগ করুন — USB controller। USB কন্ট্রোলার যোগ করার সময়, এর টাইপ সিলেক্ট করুন:
- USB 2.0 (EHCI+UHCI) — USB 2.0 এবং USB 1.1 ডিভাইস সাপোর্টকারী কন্ট্রোলার;
- USB 3.0 (xHCI) — দ্রুত USB 3.0 ডিভাইস সাপোর্ট করে, ভার্চুয়াল হার্ডওয়ার ভার্সন ৮ বা তার বেশি প্রয়োজন।
USB 3.0 মোড vSphere 5.5 patch 3 থেকে উপলব্ধ। এটিকে সাপোর্ট করার জন্য গেস্ট OS-এ xHCI কন্ট্রোলার রান করত থাকতে হবে। Windows 8.1/Windows Server 2012 R2 এবং 커নেল ভার্সন 2.6.35 বা তার আপডেটেড লিনাক্স গেস্ট OS হিসেবে সাপোর্টেড।

ESXi VM-এ USB ডিভাইস পাসথ্রু করা
নেটিভ USB Passthrough মোডে, আপনি হোস্ট থেকে একটি ফিজিক্যাল USB ডিভাইসকে VMware ভার্চুয়াল মেশিনে কানেক্ট করতে পারেন।
এই রিডাইরেকশন মেথডের মূল প্রয়োজনীয়তা এবং সীমাবদ্ধতা:
- Virtual Hardware 7.0 বা তার выше;
- একটি USB ডিভাইসের সরাসরি অ্যাক্সেস শুধু একটি VM-কে দিয়ে দেওয়া যায়;
- এক VM-এ রিডাইরেক্ট করা যাবে সর্বোচ্চ ২০টি USB ডিভাইস;
- সংযুক্ত USB ডিভাইস থেকে VM বুট করা সাপোর্টেড নয়।
VM-এর জন্য ভার্চুয়াল USB কন্ট্রোলার যোগ করার পর, হোস্টে সংযুক্ত USB ড্রাইভ রিডাইরেক্ট করতে পারেন:
- VM সেটিংসে নতুন Host USB device যোগ করুন এবং Add-এ ক্লিক করুন;
- ড্রপডাউন লিস্ট থেকে সংযুক্ত USB ডিভাইসটি সিলেক্ট করে যোগ করুন;
- সংযুক্ত ফিজিক্যাল USB ড্রাইভসহ VM-এ vMotion সাপোর্ট সক্রিয় করতে, Support vMotion while device is connected অপশনটি চেক করুন;

- তারপর USB ড্রাইভটি ভার্চুয়াল মেশিনের গেস্ট OS-এ দেখা যাবে।
রিডাইরেক্টেড USB ড্রাইভসহ VM-গুলির জন্য কিছু vMotion সীমাবদ্ধতা রয়েছে:
- আপনি VM বন্ধ বা পজ করতে পারবেন না। আপনি যদি মেশিনটি অন করেন, তবে আপনাকে ম্যানুয়ালি সেটিকে USB ডিভাইস সংযুক্ত হোস্টে মাইগ্রেট করতে হবে;
- DPM মোড সাপোর্টেড নয়, কারণ vCenter USB ডিভাইস সংযুক্ত হোস্টটি বন্ধ করে দিতে পারে পাওয়ার বাঁচাতে;
- VM এবং ফিজিক্যাল USB ডিভাইসवाले ESXi হোস্টগুলো vmk0経由で TCP Port 902-তে অ্যাক্সেসযোগ্য হতে হবে।
যদি নতুন USB ডিভাইস যোগ করার সময় vSphere ক্লায়েন্টে "No available USB devices" মেসেজ দেখায়, তবে এর মানে VMware আপনার USB ড্রাইভকে USB passthrough মোডে রিডাইরেক্ট করার জন্য সাপোর্ট করে না। অফিসিয়াল VMware ওয়েবসাইটে কম্প্যাটিবল USB ডিভাইসের তালিকা পাওয়া যায় (তালিকাটি ছোট)। আর্টিকেল https://kb.vmware.com/s/article/1021345-এ "USB Devices tested for Passthrough from an ESXi Host to a Virtual Machine in ESXi 6.7" সেকশনটি চেক করুন।
এই ক্ষেত্রে আপনি পুরো USB কন্ট্রোলারটিকে ESXi হোস্ট থেকে VM-এ রিডাইরেক্ট করতে পারেন।
VMware PCI Passthrough (VMDirectPath): USB কন্ট্রোলারকে VM-এ রিডাইরেক্ট করা
একটি VM-এ ফিজিক্যাল USB ডিভাইস অ্যাক্সেস প্রদানের আরেকটি, কম সুবিধাজনক পদ্ধতি হলো ESXi হোস্ট থেকে পুরো USB কন্ট্রোলারটিকে রিডাইরেক্ট করা। এই মোডকে VMDirectPath বলা হয়। এটি ব্যবহার করতে, আপনার সার্ভার চিপসেট অবশ্যই Intel Directed I/O বা AMD I/O Virtualization Technology (AMD IOMMU) সাপোর্ট করতে হবে, এবং এই মোডটি BIOS/UEFI সেটিংসে এনাবল করা থাকতে হবে।
যদি সার্ভারে শুধু একটি USB কন্ট্রোলার থাকে এবং আপনি সেটিকে VM-এ রিডাইরেক্ট করেন, তবে আপনি হোস্টে লোকালি সংযুক্ত USB ডিভাইস (কীবোর্ড, মাউস) ব্যবহার করতে পারবেন না। এই ক্ষেত্রে, সার্ভারে একটি অতিরিক্ত PCI USB কন্ট্রোলার যোগ করা ভালো।
যদি হোস্টে একাধিক USB কন্ট্রোলার থাকে, তবে ESXi শেল দিয়ে সংযুক্ত USB ডিভাইস এবং কন্ট্রোলার নম্বর আইডেন্টিফাই করা যায়। USB ডিভাইসের তালিকা দেখতে:
# lsusb -v | grep -e Bus -e iSerial
আউটপুটে USB ড্রাইভ সংক্রান্ত লাইনটি খুঁজুন। উদাহরণস্বরূপ:
Bus 002 Device 003: ID 0280:a00c Toshiba America Info. Systems, Inc.
তब কন্ট্রোলার নম্বর (Bus02, এই কেসে) দিয়ে রুট হাব এবং এর iSerial আইডেন্টিফাই করুন:
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 3.0 root hub iSerial 1 0000:00:1D.0
যদি আপনার USB ড্রাইভ দেখতে না পান, তবে ফিজিক্যালি ডিসকানেক্ট করে আবার কানেক্ট করার চেষ্টা করুন। vmkernel.log দেখে জানুন USB Arbitrator আপনার ড্রাইভটি ডিটেক্ট করেছে কিনা:
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 ড্রাইভ আপনার ESXi হোস্ট দ্বারা ডিটেক্ট না হয়, তবে নিশ্চিত করুন usbarbitrator সার্ভিসটি রান করছে:
#chkconfig usbarbitrator --list
usbarbitrator সার্ভিসটি শুধু তখন বন্ধ করুন যখন আপনি ESXi শেল থেকে সরাসরি USB স্টিক অ্যাক্সেস করতে চান ফাইল কপি করার জন্য।
তাহলে আমরা পেয়ে গেলাম VM-এ রিডাইরেক্ট করার জন্য USB কন্ট্রোলার নম্বর।
- ফিজিক্যাল USB কন্ট্রোলার রিডাইরেক্ট করতে, আপনার VM যেই ESXi হোস্টে রান করছে সেটি সিলেক্ট করুন এবং যান Manage -> Settings -> PCI Devices -> Edit;
- PCI ডিভাইসের তালিকা থেকে এর ID দিয়ে প্রয়োজনীয় USB কন্ট্রোলার সিলেক্ট করুন (আমার উদাহরণে, এটি
00:1D.0, কন্ট্রোলারটির নামC610/X99 series chipset USB Enhanced Host Controller #1 Intel Corporation); - USB কন্ট্রোলারটির স্ট্যাটাস Unavailable (This device is not currently available for VMs to use) থেকে Available (This device available for VMs to use) হবে। OK-এ ক্লিক করুন;

- পরিবর্তনগুলো সেভ করতে আপনার ESXi হোস্ট রিস্টার্ট করুন;
- হোস্ট বুট হলে, আপনার VM বন্ধ করুন এবং নতুন ডিভাইস যোগ করুন (New Device -> PCI Device -> Add)। ড্রপডাউন লিস্ট থেকে আপনার USB কন্ট্রোলার সিলেক্ট করুন (উদাহরণস্বরূপ,
0000:00:1D| Intel Corporation USB Chipset…); যদি PCI ডিভাইস যোগ করার সময় VM সেটিংসে নিচের মেসেজ দেখায়: "Warning: The VM will not power on until its memory reservation equals its memory size", তবে আপনার VM-এ কিছু RAM রিজার্ভ করুন। - VM-কে পাওয়ার অন করুন এবং নিশ্চিত করুন যে USB ড্রাইভটি গেস্ট OS-এ দেখা যাচ্ছে। আমার কেসে, সংযুক্ত USB ড্রাইভ "Toshiba External USB 3.0 USB Device" গেস্ট Windows Server 2012 R2-এ দেখা দিয়েছে।

VMDirectPath মোডে, আপনি একটি VM-এ সর্বোচ্চ দুটি ফিজিক্যাল PCI ডিভাইস রিডাইরেক্ট করতে পারেন।
রিডাইরেক্টেড PCI ডিভাইসসহ VM-র জন্য কিছু সীমাবদ্ধতা রয়েছে: আপনি VM পজ (Suspend) করতে পারবেন না, অন্য হোস্টে vMotion পারফর্ম করতে পারবেন না (এটি লজিক্যাল, কারণ আপনি একটি ফিজিক্যাল কন্ট্রোলারের সাথে বাউন্ড থাকছেন) বা স্ন্যাপশট তৈরি করতে পারবেন না।
Hyper-V-ও ভার্চুয়াল মেশিনে ফিজিক্যাল USB ডিভাইস রিডাইরেক্ট করার সাপোর্ট দেয়।