এই আর্টিকেলে আমরা Windows Server 2016/2012 R2-এ MPIO ইনস্টল ও কনফিগার করার পদ্ধতি আলোচনা করব। MPIO (Multi-Path Input Output) হল একটি টেকনোলজি যা ডেটা স্টোরেজ সিস্টেম (বা স্টোরেজ সার্ভার) taraf একাধিক রিডান্ড্যান্ট পাথ ব্যবহার করে ফল্ট-টলারেন্ট ট্রান্সপোর্ট তৈরি করতে সাহায্য করে। সার্ভার এবং স্টোরেজের মধ্যে অতিরিক্ত পাথগুলো রিডান্ড্যান্ট ফিজিক্যাল কম্পোনেন্ট (সুইচ, কেবল, অ্যাডাপ্টার বা NIC) ব্যবহার করে তৈরি করা হয়। এই রিডান্ড্যান্সির একটি খামি আছে: অপারেটিং সিস্টেম একই LUN কে বিভিন্ন পাথে দেখতে পারে এবং সেগুলো আলাদা আলাদা ড্রাইভ হিসেবে বিবেচনা করতে পারে।
যদি একটি সার্ভার একাধিক iSCSI ইনিশিয়েটর অ্যাডাপ্টার বা একাধিক ফাইবার চ্যানেল পোর্ট ব্যবহার করে একটি লজিক্যাল ডিস্ক (LUN) অ্যাক্সেস করতে পারে, তবে MPIO মডিউল ছাড়া Device/Disk Manager আসলে থাকা LUN-এর চেয়ে বেশি LUN দেখাবে (= LUN-এ পাথ সংখ্যা × প্রেজেন্ট করা LUN সংখ্যা)।
নিচের স্ক্রিনশটে দেখা যাচ্ছে যে MPIO ছাড়া Windows ২টি ড্রাইভ দেখছে ভিন্ন পাথের সাথে, যা আসলে একই LUN (প্রেজেন্ট করা ডিস্কের তালিকা Get-Disk PowerShell cmdlet ব্যবহার করে দেখানো যাবে)।

যদি OS MPIO সাপোর্ট করে, তবে এটি প্রেজেন্ট করা প্রতিটি ডিস্ককে একক কপি হিসেবে দেখবে। যদি MPIO সক্রিয় থাকে, তবে একটি সার্ভার একাধিক পাথ ব্যবহার করে স্টোরেজের ডেটা অ্যাক্সেস করতে পারে যা কানেক্টেড LUN-এ অ্যাক্সেস দ্রুত করে এবং একাধিক নেটওয়ার্ক বা HBA অ্যাডাপ্টার ব্যবহার করতে দেয়।
MPIO এক বা একাধিক কম্পোনেন্ট ব্যর্থ হলে একটি বিকল্প লজিক্যাল পাথ ব্যবহার করতে পারে, যাতে অপারেটিং সিস্টেম একটি লজিক্যাল ডিস্ক (LUN) অ্যাক্সেস করতে অন্য রুট ব্যবহার করে ডেটা অ্যাক্সেস কনসিস্টেন্সি বজায় রাখে। তাই, MPIO হল ফল্ট-টলারেন্ট স্টোরেজ এবং ডেটা অ্যাক্সেস সিস্টেমের একটি গুরুত্বপূর্ণ কম্পোনেন্ট, এবং MPIO মডিউল একই LUN-এ লোড বিভিন্ন পাথে বিতরণ করতে পারে।
টিপ। যদি OS MPIO সাপোর্ট না করে, তবে ডেটা লস প্রতিরোধের জন্য LUN-এ শুধু একটি পাথ রেখে দিন। সার্ভারে শুধু একটি ফাইবার চ্যানেল পোর্ট বা একটি iSCSI ইনিশিয়েটর অ্যাডাপ্টার সক্রিয় রাখুন। এছাড়া ডেটা স্টোরেজ সিস্টেম এবং SAN/নেটওয়ার্ক সুইচ লেভেলে LUN-এ অতিরিক্ত পাথগুলো নিষ্ক্রিয় করুন।
Windows Server 2016/2012R2-এ MPIO ইনস্টলেশন
Windows Server Windows Server 2008 R2 থেকে মাল্টি-পাথ ইনপুট আউটপুট (MPIO) সাপোর্ট করে। Microsoft MPIO একাধিক কানেকশন ব্যবহার করে স্টোরেজের সাথে হাই অবিলিবিলিটি এবং লোড ব্যালেন্সিং প্রদান করে, যেকোনো প্রোটোকলের ওপর নির্ভরশীল নয় এবং iSCSI, Fiber Channel এবং SAS ব্যবহার করে ডিস্ক অ্যারে এবং স্টোরেজ কানেকশন সাপোর্ট করে।
ডিফল্টভাবে Windows Server-এ MPIO মডিউল নিষ্ক্রিয় থাকে। Windows Server 2016-এ এটি ইনস্টল করার দুটি পথ আছে:
- গ্রাফিক্যাল ইন্টারফেস ব্যবহার করে Server Manager কনসোল থেকে;
- PowerShell কমান্ড লাইন থেকে।
Server Manager ব্যবহার করে MPIO সক্ষম করুন
- Server Manager খুলুন;
- Features তালিকা থেকে Multipath I/O খুঁজে বের করুন এবং চেক করুন ;

- MPIO ইনস্টলেশন শেষ করুন এবং সার্ভার রিস্টার্ট করুন।
PowerShell ব্যবহার করে Multipath-IO ইনস্টল করুন
অ্যাডমিনিস্ট্রেটর হিসেবে PowerShell কনসোল চালু করুন এবং Windows Server ফিচার ইনস্টল করতে নিচের কমান্ডটি ব্যবহার করুন:
Add-WindowsFeature -Name 'Multipath-IO'

MPIO আপনার Windows Server-এ ইনস্টল হয়েছে কিনা নিশ্চিত করতে এই কমান্ডটি চালান:
Get-WindowsFeature -Name 'Multipath-IO'

নোট। MPIO নিষ্ক্রিয় করতে নিচের কমান্ডটি দিন:
Remove-WindowsFeature -Name 'Multipath-IO'
Windows Server 2016-এ MPIO কনফিগারেশন
MPIO মডিউল ইনস্টল করার পর, আপনাকে একাধিক পাথ দিয়ে উপলব্ধ LUN-هاর জন্য এটি সক্রিয় করতে হবে। ডিফল্টভাবে Windows ডিস্কের প্রতিটি কানেকশনকে আলাদা লজিক্যাল ডিস্ক (LUN) হিসেবে দেখে।
টিপ। MPIO কম্পোনেন্টগুলোর মধ্যে একটি স্পেশাল মডিউল আছে, MSDSM (Microsoft Device Service Module) যা লোড ব্যালেন্সিং পলিসি ম্যানেজ করতে দেয়। ডিফল্টভাবে MPIO স্ট্যান্ডার্ড Microsoft DSM-র সাথে ইনস্টল হয়। কিন্তু অধিকাংশ ক্ষেত্রে আপনার স্টোরেজ ম্যানুফ্যাকচারার দ্বারা প্রদত্ত DSM মডিউল (IBM DSM, HP DSM MPIO, ইত্যাদি) ইনস্টল করা রিকমেন্ড করা হয়। সাধারণত নেটিভ DSM Microsoft-এর চেয়ে ভালো পারফরম্যান্স এবং বেশি ফিচার অফার করে (কারণ ম্যানুফ্যাকচারার তার হার্ডওয়ার শর্ত ও বৈশিষ্ট্য অনুযায়ী DSM বানায়)।
Microsoft-র DSM মডিউল (MSDSM) কে কানেকশন টাইপ অনুযায়ী SAN ডিস্ক স্বয়ংক্রিয়ভাবে মার্জ করার অনুমতি দিন। MSDSM স্বয়ংক্রিয়ভাবে সেসব LUN সনাক্ত করে যাদের স্টোরেজের সাথে একাধিক পাথ আছে এবং অধিকাংশ জনপ্রিয় স্টোরেজ ডিভাইস সাপোর্ট করে।
এটি কমান্ড প্রম্পট থেকে করতে পারেন:
- SAS ডিস্কের জন্য:
Enable-MSDSMAutomaticClaim -BusType SAS - iSCSI ডিস্কের জন্য:
Enable-MSDSMAutomaticClaim -BusType iSCSI
নোট। একই কাজ mpclaim টুল ব্যবহার করেও করা যায় (Windows 2008 R2-এ এটি আসে)। নিচের কমান্ডটি সিস্টেম দ্বারা ডিটেক্ট করা সকল ডিভাইস স্ক্যান করবে, যেগুলোর একাধিক পাথ আছে সেগুলো খুঁজে বের করবে এবং সেগুলোর জন্য MPIO সাপোর্ট সক্রিয় করবে:
mpclaim.exe -r -i -a ""
GUI-ও DSM সক্রিয় করা যায়। Server Manager খুলুন এবং Tools মেনু থেকে MPIO নির্বাচন করুন (বা কমান্ড চালান: mpiocpl)।
Discover Multi-Paths ট্যাবে যান, Add support for SAS devices চেক করুন (বা iSCSI স্টোরেজ ব্যবহার করলে Add support for iSCSI devices) এবং Add ক্লিক করুন। তারপর সার্ভার রিস্টার্ট করুন।

রিস্টার্টের পর Device Manager (বা Disk Manager) খুলুন এবং নিশ্চিত করুন যে আপনার সার্ভারের কাছে উপলব্ধ সংযুক্ত ডিস্ক (LUN) সংখ্যা نصف হয়ে গেছে (যদি আপনার স্টোরেজ ডিভাইসের কাছে দুটি পাথ থাকে)।
MPIO সাপোর্ট সক্রিয় করা ডিভাইসের তালিকা MPIO Devices ট্যাবে ম্যানেজ করতে পারেন (বা Get-MSDSMSupportedHw কমান্ড ব্যবহার করুন)।

নতুন MPIO ডিভাইস যোগ করতে Add ক্লিক করুন বা PowerShell থেকে:
New-MSDSMSupportedHw -VendorId <vend> -ProductId <product>
আপনি যদি ক্লাস্টার ডিপ্লয় করেন, সব নোডে MPIO কনফিগার করুন।
আপনি যদি ২টি পাথ দিয়ে iSCSI টার্গেট কানেক্ট করেন এবং এর জন্য MPIO ব্যবহার করতে চান, তবে টার্গেট কানেক্ট করার সময় iSCSI LUN সিলেক্ট করুন, Connect ক্লিক করুন এবং Enable multi-path অপশনটি চেক করুন।

তারপর Advanced ক্লিক করুন এবং ভিন্ন ইনিশিয়েটর IP ঠিকানা ভিন্ন টার্গেট IP ঠিকানার সাথে বাইন্ড করুন।

PowerShell ব্যবহার করে বর্তমান MPIO সেটিংস দেখুন:
Get-MPIOSetting

PathVerificationState : Disabled PathVerificationPeriod : 30 PDORemovePeriod : 20 RetryCount : 3 RetryInterval : 1 UseCustomPathRecoveryTime : Disabled CustomPathRecoveryTime : 40 DiskTimeoutValue : 60
MPIO টাইমার সেটিংস পরিবর্তন করতে পারেন (উদাহরণস্বরূপ, অল-ফ্ল্যাশ অ্যারের জন্য রিকমেন্ডেড সেটিংস সক্রিয় করুন):
Set-MPIOSetting -NewPathRecoveryInterval 20 -CustomPathRecovery Enabled -NewPDORemovePeriod 30 -NewDiskTimeout 60 -NewPathVerificationState Enabled
নিচের MPIO ব্যালেন্সিং পলিসিগুলো উপলব্ধ:
- FOO — Fail Over Only
- RR — Round Robin
- LQD — Least Queue Depth
- LB — Least Blocks
ব্যালেন্সিং পলিসি পরিবর্তন করতে:
Set-MSDSMGlobalLoadBalancePolicy -Policy RR
সংযুক্ত LUN-এর প্রপার্টিজের MPIO ট্যাব থেকে ব্যালেন্সিং পলিসি সিলেক্ট করলে ও হবে। এই উদাহরণে অ্যারে-র জন্য Round Robin পলিসি নির্বাচন করা হয়েছে।

MPIO মডিউলে উপলব্ধ সমস্ত PowerShell কমান্ডের তালিকা দেখতে এই কমান্ডটি চালান:
Get-Command –Module Mpio

Windows Server-এ SAN (ডিস্ক) পলিসি
Windows-এ একটি спеসাল ডিস্ক পলিসি আছে (SAN Policy) যা নির্ধারণ করে ডিস্ক হোস্টের সাথে সংযুক্ত হলে অটোমেটিক্যালি মাউন্ট হবে কিনা।
বর্তমান SAN Policy সেটিং diskpart ব্যবহার করে পেতে পারেন। ডিফল্টভাবে SAN-র জন্য Offline Shared পলিসি ব্যবহৃত হয়:
diskpart
DISKPART>>san</code
এই SAN পলিসির কারণে এক্সটার্নাল স্টোরেজ LUN-ها রিস্টার্টের পর ডিসেবল্ড থাকতে পারে। আর্টিকেল "The Disk Is Offline Because of Policy Set by an Administrator" চেক করুন।
ড্রাইভগুলো অটোমেটিক্যালি মাউন্ট করতে SAN Policy মান OnlineAll এ পরিবর্তন করুন।
DISKPART> san policy=OnlineAll

সম্ভাব্য SAN Policy মানগুলো:
| OfflineAll | ডিফল্টভাবে সব ডিস্ক অফলাইন থাকে |
| OfflineInternal | ইন্টারনাল বাসের সব ডিস্ক অফলাইন থাকে |
| OfflineShared | iSCSI, FC বা SAS দিয়ে সংযুক্ত সব ডিস্ক অফলাইন থাকে |
| OnlineAll | সব ডিস্ক অটোমেটিক্যালি অনলাইন হয়ে যায় (রিকমেন্ডেড) |