Trong bài viết này chúng ta sẽ xem xét cách cài đặt và cấu hình MPIO trên Windows Server 2016/2012 R2. MPIO (Multi—Path Input Output) là công nghệ cho phép xây dựng truyền tải chịu lỗi đến hệ thống lưu trữ dữ liệu (hoặc máy chủ lưu trữ) bằng cách dùng các đường dẫn dự phòng. Các đường dẫn bổ sung giữa máy chủ và storage được tạo bằng các thành phần vật lý dự phòng (switch, cáp, adapter hoặc NIC). Loại dự phòng này có nhược điểm: hệ điều hành có thể thấy cùng một LUN ở các đường dẫn khác nhau và coi nó như các ổ đĩa khác nhau.
Nếu máy chủ có thể truy cập ổ đĩa logic (LUN) bằng nhiều adapter iSCSI initiator hoặc nhiều cổng Fibre Channel, Device/Disk Manager không có module MPIO sẽ hiển thị nhiều LUN hơn số lượng thực tế (= số đường dẫn đến LUN * số LUN được trình bày) nếu module MPIO không được cài đặt.
Ảnh chụp màn hình sau cho thấy Windows không có MPIO thấy 2 ổ đĩa với đường dẫn khác nhau, thực tế là cùng một LUN (danh sách ổ đĩa trình bày có thể hiển thị bằng cmdlet Get-Disk PowerShell).

Nếu OS hỗ trợ MPIO, nó sẽ thấy mỗi ổ đĩa được trình bày cho nó chỉ một bản sao. Nếu MPIO được bật, máy chủ có thể truy cập dữ liệu trên storage bằng nhiều đường dẫn, làm truy cập LUN kết nối nhanh hơn và cho phép dùng nhiều adapter mạng hoặc HBA.
MPIO có thể dùng đường dẫn logic thay thế nếu một hoặc nhiều thành phần thất bại, từ đó làm OS dùng đường dẫn khác để truy cập ổ đĩa logic (LUN) duy trì tính nhất quán truy cập dữ liệu. Vì vậy, MPIO là thành phần quan trọng của hệ thống lưu trữ và truy cập dữ liệu chịu lỗi, và module MPIO có thể phân phối tải trên cùng LUN qua các đường dẫn khác nhau.
Mẹo. Nếu OS không hỗ trợ MPIO, chỉ để lại một đường dẫn đến LUN để tránh mất dữ liệu. Chỉ bật một cổng Fibre Channel hoặc một iSCSI initiator adapter trên máy chủ. Cũng tắt các đường dẫn bổ sung đến LUN trên cấp hệ thống lưu trữ và switch SAN/mạng.
Cài Đặt MPIO Trên Windows Server 2016/2012R2
Windows Server hỗ trợ multi-path input output (MPIO) từ Windows Server 2008 R2. Microsoft MPIO cung cấp high availability và load balancing dùng nhiều kết nối đến storage, không phụ thuộc giao thức và hỗ trợ kết nối disk array và storage bằng iSCSI, Fiber Channel và SAS.
Mặc định, module MPIO bị tắt trên Windows Server. Có hai cách cài đặt nó trong Windows Server 2016:
- Từ giao diện đồ họa dùng Server Manager console;
- Từ dòng lệnh PowerShell.
Bật MPIO Dùng Server Manager
- Mở Server Manager;
- Tìm và tích Multipath I/O trong danh sách Features;

- Hoàn tất cài đặt MPIO và khởi động lại máy chủ.
Cài Đặt Multipath-IO Dùng PowerShell
Chạy PowerShell console với quyền administrator và dùng lệnh sau để cài đặt tính năng Windows Server:
Add-WindowsFeature -Name 'Multipath-IO'

Để đảm bảo MPIO đã cài trên Windows Server, chạy lệnh:
Get-WindowsFeature -Name 'Multipath-IO'

Lưu ý. Để tắt MPIO, nhập lệnh:
Remove-WindowsFeature -Name 'Multipath-IO'
Cấu Hình MPIO Trên Windows Server 2016
Sau khi cài module MPIO, bạn cần kích hoạt nó cho các LUN có sẵn bằng nhiều đường dẫn. Mặc định, Windows thấy mỗi kết nối đến ổ đĩa như các ổ đĩa logic khác nhau (LUNs).
Mẹo. Trong các thành phần MPIO, có module đặc biệt MSDSM (Microsoft Device Service Module) cho phép quản lý chính sách load balancing. Mặc định, MPIO cài cùng với Microsoft DSM chuẩn. Tuy nhiên, trong hầu hết trường hợp khuyến nghị cài module DSM do nhà cung cấp storage cung cấp (IBM DSM, HP DSM MPIO, v.v.). Thông thường, DSM native cung cấp hiệu suất tốt hơn và nhiều tính năng hơn Microsoft (vì nhà sản xuất xây dựng DSM dựa trên điều kiện vận hành và đặc điểm phần cứng của mình).
Cho phép module DSM của Microsoft (MSDSM) tự động gộp đĩa SAN dựa trên loại kết nối. MSDSM tự động phát hiện LUN có nhiều đường dẫn đến storage và hỗ trợ hầu hết thiết bị storage phổ biến.
Bạn có thể làm từ command prompt:
- Đối với đĩa SAS:
Enable-MSDSMAutomaticClaim -BusType SAS - Đối với đĩa iSCSI:
Enable-MSDSMAutomaticClaim -BusType iSCSI
Lưu ý. Bạn cũng có thể làm tương tự dùng công cụ mpclaim (xuất hiện từ Windows 2008 R2). Lệnh sau sẽ quét tất cả thiết bị được hệ thống phát hiện, tìm những thiết bị có nhiều đường dẫn và bật hỗ trợ MPIO cho chúng:
mpclaim.exe -r -i -a ""
Bạn cũng có thể bật DSM trong GUI. Mở Server Manager và chọn MPIO trong menu Tools (hoặc chạy lệnh: mpiocpl).
Đi đến tab Discover Multi—Paths, tích Add support for SASdevices (hoặc Add supportfor iSCSI devices nếu bạn dùng storage iSCSI) và nhấn Add. Sau đó khởi động lại máy chủ.

Sau khởi động lại, mở Device Manager (hoặc Disk Manager) và đảm bảo số ổ đĩa kết nối (LUNs) có sẵn cho máy chủ đã giảm một nửa (nếu có hai đường dẫn đến thiết bị storage).
Bạn có thể quản lý danh sách thiết bị có hỗ trợ MPIO trong tab MPIO Devices (hoặc dùng lệnh Get-MSDSMSupportedHw).

Bạn có thể thêm thiết bị MPIO mới bằng cách nhấn Add hoặc từ PowerShell:
New-MSDSMSupportedHw -VendorId <vend> -ProductId <product>
Nếu bạn triển khai cluster, cấu hình MPIO trên tất cả node.
Nếu bạn kết nối iSCSI target qua 2 đường dẫn và muốn dùng MPIO cho nó, chọn iSCSI LUN khi kết nối Target, nhấn Connect và tích tùy chọn Enable multi—path.

Sau đó nhấn Advanced và gán các địa chỉ IP initiator khác nhau cho các địa chỉ IP target khác nhau.

Bạn có thể lấy cài đặt MPIO hiện tại dùng PowerShell:
Get-MPIOSetting

PathVerificationState : Disabled PathVerificationPeriod : 30 PDORemovePeriod : 20 RetryCount : 3 RetryInterval : 1 UseCustomPathRecoveryTime : Disabled CustomPathRecoveryTime : 40 DiskTimeoutValue : 60
Bạn có thể thay đổi cài đặt timer MPIO như sau (ví dụ, bật cài đặt khuyến nghị cho all-flash array):
Set-MPIOSetting -NewPathRecoveryInterval 20 -CustomPathRecovery Enabled -NewPDORemovePeriod 30 -NewDiskTimeout 60 -NewPathVerificationState Enabled
Các chính sách cân bằng tải MPIO sau đây có sẵn:
- FOO — Fail Over Only
- RR — Round Robin
- LQD — Least Queue Depth
- LB — Least Blocks
Để thay đổi chính sách cân bằng tải:
Set-MSDSMGlobalLoadBalancePolicy -Policy RR
Bạn cũng có thể chọn chính sách cân bằng tải trong tab MPIO của thuộc tính LUN kết nối. Trong ví dụ này, chính sách Round Robin được chọn cho array.

Để xem danh sách đầy đủ lệnh PowerShell có sẵn trong module MPIO, chạy lệnh:
Get-Command –Module Mpio

Chính Sách SAN (Đĩa) Trên Windows Server
Windows có chính sách đĩa đặc biệt (SAN Policy) xác định liệu ổ đĩa có phải được mount tự động khi kết nối với host hay không.
Bạn có thể lấy cài đặt SAN Policy hiện tại dùng diskpart. Mặc định, chính sách Offline Shared cho SAN được dùng:
diskpart DISKPART>>san</code
Do chính sách SAN này, LUN storage bên ngoài có thể bị disable sau khởi động lại. Xem bài viết The Disk Is Offline Because of Policy Set by an Administrator.
Để mount ổ đĩa tự động, thay đổi giá trị SAN Policy thành OnlineAll.
DISKPART> san policy=OnlineAll

Các giá trị SAN Policy có thể:
| OfflineAll | Tất cả ổ đĩa offline mặc định |
| OfflineInternal | Tất cả ổ đĩa trên bus nội bộ offline |
| OfflineShared | Tất cả ổ đĩa kết nối qua iSCSI, FC hoặc SAS offline |
| OnlineAll | Tất cả ổ đĩa online tự động (khuyến nghị) |