इस लेख में हम विचार करेंगे कि Windows Server 2016/2012 R2 पर MPIO को कैसे स्थापित और कॉन्फ़िगर करें। MPIO (Multi—Path Input Output) एक ऐसी तकनीक है जो अतिरिक्त पथ का उपयोग करके डेटा स्टोरेज सिस्टम (या स्टोरेज सर्वर) के लिए फॉल्ट-टॉलरेंट ट्रांसपोर्ट बनाने की अनुमति देती है। सर्वर और स्टोरेज के बीच अतिरिक्त पथ रिडंडेंट भौतिक घटकों (स्विच, केबल, एडॉप्टर या NIC) का उपयोग करके बनाए जाते हैं। इस रिडंडेंसी प्रकार का एक दोष है: एक ऑपरेटिंग सिस्टम अलग-अलग पथ पर एक ही LUN को देख सकता है और इसे अलग-अलग ड्राइव के रूप में मान सकता है।
यदि एक सर्वर एक ही लॉजिकल डिस्क (LUN) को कई iSCSI इनिशिएटर एडॉप्टर या कई फाइबर चैनल पोर्ट का उपयोग करके एक्सेस कर सकता है, तो MPIO मॉड्यूल के बिना डिवाइस/डिस्क मैनेजर वास्तविक LUN से अधिक LUN दिखाएगा (= LUN तक पथ की संख्या * प्रस्तुत LUN की संख्या)।
निम्न स्क्रीनशॉट दिखाता है कि MPIO के बिना Windows 2 अलग-अलग पथ वाले ड्राइव देखता है, जो वास्तव में एक ही 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, फाइबर चैनल और SAS का उपयोग करके डिस्क ऐरे और स्टोरेज कनेक्शन का समर्थन करता है।
डिफ़ॉल्ट रूप से, Windows Server पर MPIO मॉड्यूल अक्षम होता है। Windows Server 2016 में इसे स्थापित करने के दो तरीके हैं:
- सर्वर मैनेजर कंसोल का उपयोग करके ग्राफिकल इंटरफेस से;
- PowerShell कमांड लाइन से।
सर्वर मैनेजर का उपयोग करके MPIO सक्षम करें
- सर्वर मैनेजर खोलें;
- 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 (MSDSM) द्वारा DSM मॉड्यूल को कनेक्शन प्रकार के आधार पर 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 सक्षम कर सकते हैं। सर्वर मैनेजर खोलें और Tools मेनू में MPIO चुनें (या कमांड चलाएं: mpiocpl)।
Discover Multi—Paths टैब पर जाएं, Add support for SASdevices चेक करें (या Add supportfor iSCSI devices यदि आप iSCSI स्टोरेज उपयोग कर रहे हैं) और Add पर क्लिक करें। फिर अपना सर्वर पुनरारंभ करें।

पुनरारंभ के बाद, डिवाइस मैनेजर (या डिस्क मैनेजर) खोलें और सुनिश्चित करें कि आपके सर्वर के लिए उपलब्ध कनेक्टेड डिस्क (LUN) की संख्या आधी हो गई है (यदि आपके स्टोरेज डिवाइस तक दो पथ हैं)।
आप MPIO Devices टैब में (या Get-MSDSMSupportedHw कमांड का उपयोग करके) MPIO समर्थन वाले डिवाइस की सूची प्रबंधित कर सकते हैं।

आप Add पर क्लिक करके या PowerShell से नए MPIO डिवाइस जोड़ सकते हैं:
New-MSDSMSupportedHw -VendorId <vend> -ProductId <product>
यदि आप क्लस्टर तैनात कर रहे हैं, तो सभी नोड्स पर MPIO कॉन्फ़िगर करें।
यदि आप iSCSI टारगेट को 2 पथों के माध्यम से कनेक्ट करते हैं और इसके लिए 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) होती है जो निर्धारित करती है कि डिस्क को होस्ट से कनेक्ट होने पर स्वचालित रूप से माउंट किया जाना चाहिए या नहीं।
आप diskpart का उपयोग करके वर्तमान SAN पॉलिसी सेटिंग प्राप्त कर सकते हैं। डिफ़ॉल्ट रूप से, SAN के लिए Offline Shared पॉलिसी उपयोग की जाती है:
diskpart
DISKPART>>san</code
इस SAN पॉलिसी के कारण, बाहरी स्टोरेज LUN रीस्टार्ट के बाद अक्षम हो सकते हैं। लेख देखें The Disk Is Offline Because of Policy Set by an Administrator.
ड्राइव को स्वचालित रूप से माउंट करने के लिए, SAN पॉलिसी मान को OnlineAll पर बदलें।
DISKPART> san policy=OnlineAll

संभावित SAN पॉलिसी मान:
| OfflineAll | डिफ़ॉल्ट रूप से सभी डिस्क ऑफलाइन हैं |
| OfflineInternal | आंतरिक बसों पर सभी डिस्क ऑफलाइन हैं |
| OfflineShared | iSCSI, FC या SAS के माध्यम से जुड़े सभी डिस्क ऑफलाइन हैं |
| OnlineAll | सभी डिस्क स्वचालित रूप से ऑनलाइन हो जाते हैं (अनुशंसित) |