কম্পিউটার টিউটোরিয়াল

Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস পাসথ্রু (রিডাইরেক্ট)

Hyper-V-এর অন্যান্য হাইপারভাইজারের চেয়ে (উদাহরণস্বরূপ, VMWare ESXi বা Proxmox) একটি উল্লেখযোগ্য ডিসঅডভান্টেজ হলো হোস্ট থেকে ভার্চুয়াল মেশিনে USB ডিভাইস রিডাইরেক্ট করার ফিচারের অভাব। Hyper-V 2012 R2 ভার্সন থেকে USB Passthrough অপশন সংক্রান্ত কিছু পরিবর্তন হয়েছে, কিন্তু এই ফাংশনালিটি এখনো প্রতিযোগীদের চেয়ে 열등। এই আর্টিকেলে আমরা Hyper-V-এ USB রিডাইরেকশনের স্পেসিফিক্স আলোচনা করব।

Hyper-V USB Passthrough-এর ওভারভিউ

USB passthrough বলতে হোস্ট হাইপারভাইজার (বা নেটওয়ার্ক দিয়ে অন্য সার্ভার/ডিভাইস থেকে) একটি USB ডিভাইস ভার্চুয়াল মেশিনে রিডাইরেক্ট করার ক্ষমতা বোঝায়। USB passthrough ব্যবহার করে আপনি ফিজিক্যাল হোস্টের USB পোর্টে কানেক্টেড একটি USB স্টিক, টোকেন, USB ডোগল, মডেম, বা যেকোনো অন্য ডিভাইস ভার্চুয়াল মেশিনে রিডাইরেক্ট করতে পারেন।

খারাপ খবর হলো Hyper-V পূর্ণাঙ্গ USB passthrough সাপোর্ট করে না। আপনি একটি ফিজিক্যাল হোস্ট থেকে একটি অগোচর USB ডিভাইস ভার্চুয়াল মেশিনে (VMWare এখানেও অনেক ভালো — USB passthrough in VMWare ESXi আর্টিকেলটি দেখুন) রিডাইরেক্ট করতে পারবেন না। বিল্ট-ইন অপশনগুলো হলেও সেগুলোর উল্লেখযোগ্য সীমাবদ্ধতা আছে। বর্তমানে Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস রিডাইরেক্ট করার নিচের উপায়গুলো ব্যবহার করা যায়।

  • Hyper-V হোস্ট থেকে USB ড্রাইভ রিডাইরেক্ট করা;
  • Hyper-V কনসোলে Enhanced Session Mode;
  • RDP দিয়ে USB রিডাইরেকশন;
  • নেটওয়ার্ক দিয়ে USB রিডাইরেকশনের জন্য সফ্টওয়্যার/হার্ডওয়্যার সলিউশন (USB over IP)।

শেষ সিনেরিওতে USB over IP ইমপ্লিমেন্ট করতে থার্ড-পার্টি সলিউশন ব্যবহার করা হয়। এটি হতে পারে একটি নেটওয়ার্ক USB হাব, অন্য সার্ভার থেকে TCP/IP নেটওয়ার্ক দিয়ে USB ডিভাইস রিডাইরেক্ট করার সফ্টওয়্যার সলিউশন। অধিকাংশ পপুলার কমার্শিয়াল সলিউশন পেইড (AnywhereUSB, DigiUSB)। ফ্রি वालোতে আছে VirtualHere USB (একটি USB ডোগল এবং একটি টার্গেট সার্ভারের জন্য ফ্রি) এবং একটি পুরনো ওপেন সোর্স প্রজেক্ট usbip.sourceforge.net (সার্ভার পার্ট Linux-এ ইমপ্লিমেন্টেড, ক্লায়েন্ট Windows-এ ইনস্টল করা যায়)।

Hyper-V ভার্চুয়াল মেশিন থেকে USB হার্ড ড্রাইভ এক্সেস করা

হোস্ট-এ কানেক্টেড একটি USB ড্রাইভ যেকোনো চলমান Hyper-V ভার্চুয়াল মেশিনে সরাসরি রিডাইরেক্ট করা 꽤 সহজ। চলো দেখি Hyper-V ভার্চুয়াল মেশিনকে হোস্টের USB ড্রাইভে ডাইরেক্ট অ্যাক্সেস কীভাবে দিতে হয়।

নোট:

  1. এই গাইড শুধু সিস্টেম দ্বারা fixed হিসেবে ডিটেক্ট হওয়া USB ড্রাইভের জন্য কাজ করে। USB ফ্ল্যাশ ড্রাইভ, স্মার্ট কার্ড এবং অন্যান্য রিমুভেবল ডিভাইস এইভাবে VM-এ রিডাইরেক্ট করা যায় না (যদিও Windows-কে রিমুভেবল ডিভাইসকে ফিক্সড হার্ড ড্রাইভ হিসেবে দেখানোর একটি ছোট ট্রিক আছে)।
  2. এই ড্রাইভগুলোর জন্য স্ন্যাপশট/চেকপয়েন্ট তৈরি করা যায় না।
  1. এক্সটার্নাল USB ড্রাইভ Hyper-V হোস্টে কানেক্ট করুন (এটি Windows এবং Hyper-V রোল ইনস্টল করা যেকোনো হোস্ট হতে পারে, বা Free Microsoft Hyper-V Server)। ড্রাইভ সিস্টেমে দেখাবে এবং এটিতে ড্রাইভ লেটার অ্যাসাইন হবে (যদি ড্রাইভ লেটার অ্যাসাইন না হয়, তবে এই আর্টিকেলটি চেক করুন);
  2. Disk Management (diskmgmt.msc) কনসোল খুলুন, ড্রাইভটি (আমার উদাহরণে ২০ GB USB ড্রাইভের আইডি Disk 1) রাইট-ক্লিক করে Offline সিলেক্ট করুন। Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস পাসথ্রু (রিডাইরেক্ট) Windows Server Core বা Hyper-V Server ব্যবহার করলে যেগুলোর কিছু গ্রাফিক্যাল MMC স্ন্যাপ-ইন নেই, সেখানে Disk Management PowerShell মডিউল দিয়ে লোকাল ডিস্ক ম্যানেজ করা যায়। নিচের কমান্ডগুলো ফিজিক্যাল ডিস্ক তালিকা দেখাবে এবং নির্দিষ্ট ডিস্ক অফলাইন করবে:
    Get-Disk
    Get-Disk -Number 1 |Set-Disk -IsOffline:$true

    Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস পাসথ্রু (রিডাইরেক্ট)
  3. Hyper-V Manager চালু করুন এবং যেই ভার্চুয়াল মেশিনে USB ড্রাইভ কানেক্ট করতে হবে তার প্রপার্টিজ খুলুন। SCSI Controller সেকশনে একটি নতুন ডিস্ক যোগ করুন, ইন্ডিকেট করুন যে এটি ফিজিক্যাল (Physical hard disk)। ড্রপ-ডাউন মেনু থেকে আপনার USB ড্রাইভ সিলেক্ট করুন (এটি এমন দেখাবে: Disk 1 20.00 Gb Bus 0 Lun 0 Target 1)। নোট: ভার্চুয়াল মেশিন অফ করতে হবে না SCSI হার্ড ড্রাইভ যোগ করতে। SCSI ডিভাইসের জন্য হট-অ্যাড এবং হট-রিমুভ ড্রাইভ সাপোর্টেড। Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস পাসথ্রু (রিডাইরেক্ট)
  4. এখন দেখাব Hyper-V হোস্টের USB ডিস্ককে Windows চলো গেস্ট OS-এ ভার্চুয়াল মেশিন থেকে কীভাবে এক্সেস করবেন। ভার্চুয়াল মেশিন কনসোল খুলুন বা RDP দিয়ে কানেক্ট করুন। গেস্ট OS-এ লগ-ইন করুন। Disk Manager চালান। OS-কে নতুন ড্রাইভটি দেখতে হবে। যদি এটি অফলাইন থাকে, তবে রাইট-ক্লিক করে Online সিলেক্ট করুন। এই সময় USB ডিস্কের পার্টিশনগুলোর কোনো ড্রাইভ লেটার বা মাউন্ট পয়েন্ট অ্যাসাইন করা থাকে না। এটা ফিক্স করতে ডিস্কের পার্টিশনে রাইট-ক্লিক করে কন্টেক্সট মেনু থেকে "Change Drive Letter and Paths" সিলেক্ট করুন। পার্টিশনে যেকোনো ফ্রি ড্রাইভ লেটার অ্যাসাইন করুন বা একটি মাউন্ট পয়েন্ট স্পেসিফাই করুন। Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস পাসথ্রু (রিডাইরেক্ট)

বাস! আপনি এক্সটার্নাল USB মিডিয়া Hyper-V ভার্চুয়াল মেশিনে সরাসরি কানেক্ট করেছেন এবং এখন এটি ব্যবহার করতে পারবেন।

গুরুত্বপূর্ণ: ডেটা লস প্রতিরোধ করতে, USB পোর্ট থেকে হার্ড ডিস্ক ফিজিক্যালি রিমুভ করার আগে নিশ্চিত করুন যে ভার্চুয়াল মেশিনে কোনো অ্যাপ্লিকেশন এই ডিস্ক অ্যাক্সেস করছে না।

USB ড্রাইভ সফলভাবে রিমুভ করতে Hyper-V Manager কনসোল খুলুন এবং ভার্চুয়াল মেশিন সেটিংস উইন্ডোতে যান। SCSI Controller সেকশনে রিমুভ করতে চাওয়া হার্ড ড্রাইভ সিলেক্ট করুন এবং Remove ক্লিক করুন। পরিবর্তনগুলো সংরক্ষণ করুন। এরপর USB পোর্ট থেকে হার্ড ড্রাইভ ফিজিক্যালি রিমুভ করুন।

Hyper-V Enhanced Session Mode দিয়ে VM-এ USB ডিভাইস রিডাইরেক্ট করা

Windows Server 2012 R2/8.1-এ আসা Hyper-V ভার্সনে যেকোনো USB ডিভাইস ক্লায়েন্ট কম্পিউটার থেকে ভার্চুয়াল মেশিনে Enhanced Session Mode (ESM) ব্যবহার করে ফরওয়ার্ড করা যায়। ভার্চুয়াল মেশিন কনসোল কানেক্ট করতে Hyper-V Manager টুল vmconnect.exe ব্যবহার করা হয়। এটি আপনাকে ভার্চুয়াল মেশিন কনসোল কানেক্ট করতে দেয় এবং রিডাইরেক্ট করতে চাওয়া USB ডিভাইস সিলেক্ট করতে দেয়।

প্রথমে Hyper-V সার্ভার সেটিংসে Enhanced Session Mode সক্রিয় করতে হবে। PowerShell দিয়ে করা যায়:

Set-VMHost -EnableEnhancedSessionMode $true

অথবা Hyper-V Settings → Enhanced Session Mode-এ。

Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস পাসথ্রু (রিডাইরেক্ট)

Hyper-V Virtual Machine Management সার্ভিস রিস্টার্ট করুন:
Get-Service vmms | Restart-Service

VM সেটিংসের Integration Services সেকশনে Guest Services অপশন সক্রিয় করতে হবে।

Enhanced Session Mode দিয়ে USB ডিভাইস রিডাইরেক্ট করতে Hyper-V কনসোল খুলুন, ভার্চুয়াল মেশিন সিলেক্ট করুন, এবং Connect বাটন চাপুন। অথবা vmconnect.exe টুল (Virtual Machine Connection) চালান, Hyper-V সার্ভার এবং ভার্চুয়াল মেশিনের নাম স্পেসিফাই করুন। vmconnect টুল কিছু কমান্ড লাইন অপশন সাপোর্ট করে, তাই আপনি ইউজারদের জন্য কাস্টমাইজড bat ফাইল দিতে পারেন আপনার পছন্দের অপশনসহ।

Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস পাসথ্রু (রিডাইরেক্ট)

যদি VM Enhanced Session Mode সাপোর্ট করে, তবে RDP কানেকশন প্রপার্টির মতো একটি উইন্ডো আসবে। Show Option → Local Resources → Local device and resources → More ক্লিক করুন।

Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস পাসথ্রু (রিডাইরেক্ট)

আপনার কম্পিউটারের যে USB ডিভাইসগুলো VM-এ রিডাইরেক্ট করতে চান সেগুলো সিলেক্ট করুন। আপনার চাওয়া ডিভাইস যদি বর্তমানে কানেক্টেড না থাকে, তবে "Other supported Plug and Play (PnP) devices" এবং "Devices that I plug in later options" সিলেক্ট করুন।

Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস পাসথ্রু (রিডাইরেক্ট)

এখন আপনার কম্পিউটারে কানেক্ট করা সব USB ডিভাইস অটোমেটিক্যালি Hyper-V ভার্চুয়াল মেশিনের কনসোল সেশনে উপলব্ধ হবে।

Hyper-V Enhanced Session Mode-এর মূল বৈশিষ্ট্য এবং সীমাবদ্ধতা:

  • গেস্ট OS হিসেবে শুধু Windows সাপোর্টেড (Windows 8.1 / Windows Server 2012 R2 থেকে);
  • ভার্চুয়াল মেশিনে ডাইরেক্ট নেটওয়ার্ক অ্যাক্সেস দরকার নেই। সব কানেকশন হাইপারভাইজার হোস্টের মাধ্যমে হয় (আপনি TCP পোর্ট 2179 দিয়ে নেটওয়ার্কের মাধ্যমে হোস্টে কানেক্ট করেন), এবং Hyper-V VM-এ VMBus দিয়ে কানেক্ট করে;
  • Hyper-V Manager ক্লায়েন্টের কম্পিউটারে ইনস্টল করা থাকতে হবে।

এই মেথড লোকাল হোস্ট থেকে RDP সেশন দিয়ে USB ডিভাইস রিডাইরেক্ট করার সাথে সাদৃশ্য। এটিকে আমরা বিস্তারিত আলোচনা করব না। Hyper-V ভার্চুয়াল মেশিনে USB ডিভাইস পাসথ্রু (রিডাইরেক্ট)

আপনি যদি নেটওয়ার্ক দিয়ে USB ডিভাইস রিডাইরেক্ট করেন (USB over IP বা RDP সেশন ওভার), তবে ভার্চুয়াল মেশিন অন্য হোস্টে মাইগ্রেট হওয়ার পরও (Hyper-V Live Migration / vMotion) USB কী এক্সেস করতে পারবেন।

  1. Nested Virtualization দিয়ে ভার্চুয়াল মেশিনে Hyper-V রান করুন

  2. Hyper-V 2019-এ বিভিন্ন অ্যাকশন বা ক্রিয়াকলাপের অন্বেষণ

  3. PowerShell ব্যবহার করে Hyper-V 2019-এ ভার্চুয়াল মেশিন তৈরি করা

  4. Hyper-V 2019-এ ভার্চুয়াল মেশিন এক্সপোর্ট এবং ইম্পোর্ট করা