บทความนี้จะพิจารณาวิธีติดตั้งและกำหนดค่า MPIO บน Windows Server 2016/2012 R2 MPIO (Multi—Path Input Output) เป็นเทคโนโลยีที่ช่วยสร้างการขนส่งที่ทนทานต่อข้อผิดพลาดไปยังระบบจัดเก็บข้อมูล (หรือเซิร์ฟเวอร์จัดเก็บ) โดยใช้พาธซ้ำ พาธเพิ่มเติมระหว่างเซิร์ฟเวอร์และระบบจัดเก็บถูกสร้างขึ้นโดยใช้ส่วนประกอบทางกายภาพที่ซ้ำซ้อน (สวิตช์, สายเคเบิล, แอดอะปเตอร์ หรือ NICs) ประเภทความซ้ำซ้อนนี้มีข้อเสีย: ระบบปฏิบัติการอาจเห็น LUN เดียวกันที่พาธต่างกันและถือว่าเป็นไดรฟ์ที่ต่างกัน
หากเซิร์ฟเวอร์เข้าถึงดิสก์ตรรกะ (LUN) โดยใช้ iSCSI initiator adapter หลายตัว หรือพอร์ต Fibre Channel หลายตัว Device/Disk Manager โดยไม่มีโมดูล MPIO จะแสดง LUN มากกว่าที่มีจริง (= จำนวนพาธไปยัง LUN * จำนวน LUN ที่นำเสนอ) หากไม่ได้ติดตั้งโมดูล MPIO
ภาพหน้าจอต่อไปนี้แสดงว่า Windows โดยไม่มี MPIO มองเห็น 2 ดิสก์พร้อมพาธต่างกัน ซึ่งจริงๆ แล้วเป็น LUN เดียวกัน (รายการดิสก์ที่นำเสนออาจแสดงโดยคอมมานด์เลต PowerShell Get-Disk)

หาก OS รองรับ MPIO จะเห็นดิสก์แต่ละตัวที่นำเสนอให้ในหนึ่งเดียว หากเปิดใช้งาน MPIO เซิร์ฟเวอร์อาจเข้าถึงข้อมูลบนระบบจัดเก็บโดยใช้พาธหลายพาท ทำให้การเข้าถึง LUN ที่เชื่อมต่อเร็วขึ้น และอนุญาตให้ใช้แอดอะปเตอร์เครือข่ายหรือ HBA หลายตัว MPIO อาจใช้พาธตรรกะทางเลือกหากหนึ่งหรือหลายส่วนประกอบล้มเหลว ทำให้ระบบปฏิบัติการใช้เส้นทางอื่นเพื่อเข้าถึงดิสก์ตรรกะ (LUN) รักษาความสอดคล้องของการเข้าถึงข้อมูล ดังนั้น MPIO จึงเป็นองค์ประกอบสำคัญของระบบจัดเก็บและการเข้าถึงข้อมูลที่ทนทานต่อข้อผิดพลาด และโมดูล MPIO สามารถกระจายโหลดบน LUN เดียวกันข้ามพาธต่างๆ ได้
Tip หาก OS ไม่รองรับ MPIO ให้ทิ้งพาธเดียวไปยัง LUN เพื่อป้องกันการสูญเสียข้อมูล เปิดใช้งานพอร์ต Fibre Channel เดียวหรือ iSCSI initiator adapter เดียวบนเซิร์ฟเวอร์ นอกจากนี้ ปิดพาธเพิ่มเติมไปยัง LUN บนระดับระบบจัดเก็บข้อมูลและ SAN/เน็ตเวิร์กสวิตช์
การติดตั้ง MPIO บน Windows Server 2016/2012R2
Windows Server รองรับ multi-path input output (MPIO) ตั้งแต่ Windows Server 2008 R2 Microsoft MPIO ให้ความพร้อมใช้งานสูงและการกระจายโหลดโดยใช้การเชื่อมต่อหลายเส้นทางไปยังระบบจัดเก็บ ไม่ขึ้นอยู่กับโปรโตคอลใดๆ และรองรับการเชื่อมต่ออาร์เรย์ดิสก์และระบบจัดเก็บโดยใช้ iSCSI, Fiber Channel และ SAS
โดยค่าเริ่มต้น โมดูล MPIO ถูกปิดใช้งานบน Windows Server มี 2 วิธีติดตั้งใน Windows Server 2016:
- จากอินเตอร์เฟซกราฟิกโดยใช้คอนโซล Server Manager;
- จากบรรทัดคำสั่ง PowerShell
เปิดใช้งาน MPIO โดยใช้ Server Manager
- เปิด Server Manager;
- ค้นหาและติ๊ก Multipath I/O ในรายการ Features ;

- เสร็จสิ้นการติดตั้ง MPIO และรีสตาร์ทเซิร์ฟเวอร์
ติดตั้ง Multipath-IO โดยใช้ PowerShell
รันคอนโซล PowerShell เป็นผู้ดูแลระบบและใช้คำสั่งต่อไปนี้เพื่อติดตั้งคุณสมบัติ Windows Server:
Add-WindowsFeature -Name 'Multipath-IO'

เพื่อตรวจสอบว่า MPIO ติดตั้งบน Windows Server ของคุณแล้ว ให้รันคำสั่งนี้:
Get-WindowsFeature -Name 'Multipath-IO'

Note หากต้องการปิดใช้งาน MPIO ให้ป้อนคำสั่ง:
Remove-WindowsFeature -Name 'Multipath-IO'
กำหนดค่า MPIO บน Windows Server 2016
หลังจากติดตั้งโมดูล MPIO แล้ว ต้องเปิดใช้งานสำหรับ LUN ที่สามารถเข้าถึงได้โดยพาธหลายพาธ โดยค่าเริ่มต้น Windows มองเห็นการเชื่อมต่อแต่ละครั้งกับดิสก์เป็นดิสก์ตรรกะ (LUN) ที่ต่างกัน
Tip ในส่วนประกอบ MPIO มีโมดูลพิเศษ MSDSM (Microsoft Device Service Module) ที่ช่วยจัดการนโยบายการกระจายโหลด โดยค่าเริ่มต้น MPIO ติดตั้งพร้อม Microsoft DSM มาตรฐาน อย่างไรก็ตาม ในส่วนใหญ่ แนะนำให้ติดตั้งโมดูล DSM ที่ให้โดยผู้ผลิตระบบจัดเก็บ (IBM DSM, HP DSM MPIO, ฯลฯ) ปกติ DSM แบบเนทีฟให้ประสิทธิภาพดีกว่าและคุณสมบัติมากกว่า Microsoft (เพราะผู้ผลิตสร้าง DSM ของตนเองตามเงื่อนไขการทำงานและลักษณะเฉพาะของฮาร์ดแวร์ของตน)
อนุญาตโมดูล DSM โดย Microsoft (MSDSM) ให้รวมดิสก์ SAN โดยอัตโนมัติตามประเภทการเชื่อมต่อ MSDSM ตรวจจับ LUN ที่มีพาธหลายพาธไปยังระบบจัดเก็บและรองรับอุปกรณ์จัดเก็บยอดนิยมส่วนใหญ่
สามารถทำได้จาก command prompt:
- สำหรับดิสก์ SAS:
Enable-MSDSMAutomaticClaim -BusType SAS - สำหรับดิสก์ iSCSI:
Enable-MSDSMAutomaticClaim -BusType iSCSI
Note สามารถทำได้เหมือนกันโดยใช้เครื่องมือ mpclaim (ปรากฏใน Windows 2008 R2) คำสั่งต่อไปนี้จะสแกนอุปกรณ์ทั้งหมดที่ระบบตรวจพบ หาอุปกรณ์ที่มีพาธหลายพาธ และเปิดใช้งานการรองรับ MPIO สำหรับพวกมัน:
mpclaim.exe -r -i -a ""
สามารถเปิดใช้งาน DSM ใน GUI ได้เช่นกัน เปิด Server Manager และเลือก MPIO ในเมนู Tools (หรือรันคำสั่ง: mpiocpl)
ไปที่แท็บ Discover Multi—Paths ติ๊ก Add support for SAS devices (หรือ Add support for iSCSI devices หากใช้ระบบจัดเก็บ iSCSI) และคลิก Add จากนั้นรีสตาร์ทเซิร์ฟเวอร์

หลังรีสตาร์ท เปิด Device Manager (หรือ Disk Manager) และตรวจสอบว่าจำนวนดิสก์ที่เชื่อมต่อ (LUNs) ที่พร้อมใช้งานสำหรับเซิร์ฟเวอร์ลดลงครึ่งหนึ่ง (หากมีสองพาธไปยังอุปกรณ์จัดเก็บ)
สามารถจัดการรายการอุปกรณ์ที่เปิดใช้งานการรองรับ MPIO ในแท็บ MPIO Devices (หรือใช้คำสั่ง Get-MSDSMSupportedHw)

สามารถเพิ่มอุปกรณ์ MPIO ใหม่โดยคลิก Add หรือจาก PowerShell:
New-MSDSMSupportedHw -VendorId <vend> -ProductId <product>
หากคุณกำลังปรับใช้คลัสเตอร์ ให้กำหนดค่า MPIO บนโหนดทั้งหมด
หากคุณเชื่อมต่อ iSCSI target ผ่าน 2 พาธและต้องการใช้ MPIO สำหรับมัน ให้เลือก iSCSI LUN เมื่อเชื่อมต่อ Target คลิก Connect และติ๊กตัวเลือก Enable multi—path

จากนั้นคลิก Advanced และผูกที่อยู่ IP initiator ที่ต่างกันกับที่อยู่ IP target ที่ต่างกัน

สามารถดูการตั้งค่า MPIO ปัจจุบันด้วย PowerShell:
Get-MPIOSetting

PathVerificationState : Disabled PathVerificationPeriod : 30 PDORemovePeriod : 20 RetryCount : 3 RetryInterval : 1 UseCustomPathRecoveryTime : Disabled CustomPathRecoveryTime : 40 DiskTimeoutValue : 60
สามารถเปลี่ยนการตั้งค่าไทม์เมอร์ MPIO ได้ดังนี้ (ตัวอย่าง เปิดใช้งานการตั้งค่าที่แนะนำสำหรับ all-flash array):
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
สามารถเลือกนโยบายการกระจายโหลดในแท็บ MPIO ของคุณสมบัติ LUN ที่เชื่อมต่อ ในตัวอย่างนี้ เลือกนโยบาย Round Robin สำหรับอาร์เรย์

เพื่อดูรายการคำสั่ง PowerShell ทั้งหมดที่พร้อมใช้งานในโมดูล MPIO ให้รันคำสั่งนี้:
Get-Command –Module Mpio

นโยบาย SAN (ดิสก์) บน Windows Server
Windows มีนโยบายดิสก์พิเศษ (SAN Policy) ที่กำหนดว่าดิสก์ต้องถูก mount อัตโนมัติเมื่อเชื่อมต่อกับโฮสต์หรือไม่
สามารถดูการตั้งค่า SAN Policy ปัจจุบันโดยใช้ diskpart โดยค่าเริ่มต้น ใช้นโยบาย Offline Shared สำหรับ SAN:
diskpart DISKPART>>san</code
เนื่องจากนโยบาย SAN นี้ LUN ของระบบจัดเก็บภายนอกอาจถูกปิดใช้งานหลังรีสตาร์ท ตรวจสอบบทความ The Disk Is Offline Because of Policy Set by an Administrator
เพื่อให้ไดรฟ์ถูก mount อัตโนมัติ ให้เปลี่ยนค่า SAN Policy เป็น OnlineAll
DISKPART> san policy=OnlineAll

ค่าที่เป็นไปได้ของ SAN Policy:
| OfflineAll | ดิสก์ทั้งหมดเป็น offline โดยค่าเริ่มต้น |
| OfflineInternal | ดิสก์ทั้งหมดบนบัสภายในเป็น offline |
| OfflineShared | ดิสก์ทั้งหมดที่เชื่อมต่อผ่าน iSCSI, FC หรือ SAS เป็น offline |
| OnlineAll | ดิสก์ทั้งหมดออนไลน์อัตโนมัติ (แนะนำ) |