Hyper-V ホスト 3 台を、外部の iSCSI ストレージに 2 本の経路で接続し、マルチパス I/O(MPIO)で 1 本のディスクにまとめる手順です。ここで接続した 2 つの LUN を、次の記事でフェールオーバー クラスタの共有ボリューム(CSV)と監視ディスクに使います。
この記事の前提
参照した公式ドキュメント
- MPIO Module / Enable-MSDSMAutomaticClaim(Microsoft Learn)
- iSCSI Initiator cmdlets / Connect-IscsiTarget(Microsoft Learn)
構成
| 項目 | 内容 |
|---|---|
| iSCSI ターゲット | iqn.2026-10.local.lab:hyperv-lun(Linux の LIO で作成) |
| LUN | LUN 0:100 GB(CSV 用)、LUN 1:2 GB(クラスタの監視ディスク用) |
| ターゲットのポータル | 10.20.81.10(経路 A)、10.20.82.10(経路 B) |
| ホストの NIC | iSCSI-A(10.20.81.x)、iSCSI-B(10.20.82.x)。ネットワーク設定手順の設計のとおり |
| MPIO | インストール手順で機能「Multipath I/O」を追加済み |
ターゲットには、各ホストの iSCSI イニシエーター名(例:iqn.1991-05.com.microsoft:doc-hv1.hvdoc.local)を登録してアクセスを許可しておきます。イニシエーター名は、iSCSI イニシエーターの [Configuration] タブか、PowerShell の (Get-InitiatorPort).NodeAddress で確認できます。
MPIO で iSCSI のディスクを扱うようにする
(1) [Win]+[R] で mpiocpl を実行します(サーバーマネージャーの [Tools] → [MPIO] でも開けます)。[Discover Multi-Paths] タブで [Add support for iSCSI devices] をオンにして [Add] をクリックします。

(2) 「The operation completed successfully.」と表示されたら [OK] をクリックし、MPIO のプロパティも [OK] で閉じます。設定を反映するには再起動が必要です(この後、iSCSI を接続してから再起動します)。

PowerShell で設定する場合は、次のコマンドです。
Enable-MSDSMAutomaticClaim -BusType iSCSI
iSCSI ターゲットへの接続(2 経路)
(1) [Win]+[R] で iscsicpl を実行します(初回は iSCSI サービスを起動するか確認されるので [Yes])。[Discovery] タブの [Discover Portal] をクリックします。

(2) [IP address or DNS name] にポータルの IP アドレス(10.20.81.10)を入力して [OK] をクリックします。同じように 10.20.82.10 も追加します。

(3) [Target portals] に 2 つのポータルが表示されます。

(4) [Targets] タブの [Discovered targets] に、ターゲットの一覧が表示されます。接続するターゲット(iqn.2026-10.local.lab:hyperv-lun)を選んで [Connect] をクリックします。

検証環境の iSCSI サーバーには、Proxmox VE 用・vSphere 用のターゲットもあります。それらは Hyper-V ホストのイニシエーター名を許可していないので、接続してもディスクは見えません。
(5) [Connect To Target] で [Enable multi-path] をオンにし、[Advanced] をクリックします。

| 項目 | 説明 | 設定値 |
|---|---|---|
| Add this connection to the list of Favorite Targets | 再起動後に自動で接続し直します | オン(既定) |
| Enable multi-path | 同じターゲットへの複数のセッションを MPIO でまとめます | オン |
(6) [Advanced Settings] で、経路 A の組み合わせを指定して [OK] をクリックし、[Connect To Target] も [OK] で閉じます。

| 項目 | 設定値 |
|---|---|
| Local adapter | Microsoft iSCSI Initiator |
| Initiator IP | 10.20.81.123(このホストの iSCSI-A の IP アドレス) |
| Target portal IP | 10.20.81.10 / 3260 |
[Default] のままにすると、どの NIC から接続するかを Windows が決めるため、2 つのセッションが同じ NIC を通ることがあります。経路ごとに NIC とポータルを明示します。
(7) もう一度ターゲットを選んで [Connect] をクリックし、[Enable multi-path] をオンにして、[Advanced] で経路 B を指定します。

| 項目 | 設定値 |
|---|---|
| Local adapter | Microsoft iSCSI Initiator |
| Initiator IP | 10.20.82.123(このホストの iSCSI-B の IP アドレス) |
| Target portal IP | 10.20.82.10 / 3260 |
(8) ターゲットを選んで [Properties] をクリックすると、[Sessions] タブに 2 つのセッションが表示されます。

(9) DOC-HV2・DOC-HV3 でも同じように接続します。PowerShell で接続する場合は、次のコマンドです(DOC-HV2 の例)。
New-IscsiTargetPortal -TargetPortalAddress 10.20.81.10 -InitiatorPortalAddress 10.20.81.124
New-IscsiTargetPortal -TargetPortalAddress 10.20.82.10 -InitiatorPortalAddress 10.20.82.124
Connect-IscsiTarget -NodeAddress iqn.2026-10.local.lab:hyperv-lun -IsMultipathEnabled $true -IsPersistent $true -InitiatorPortalAddress 10.20.81.124 -TargetPortalAddress 10.20.81.10
Connect-IscsiTarget -NodeAddress iqn.2026-10.local.lab:hyperv-lun -IsMultipathEnabled $true -IsPersistent $true -InitiatorPortalAddress 10.20.82.124 -TargetPortalAddress 10.20.82.10
(10) 3 台のホストを再起動して、MPIO の設定を反映します。
マルチパスの確認とディスクの準備
(1) 再起動後、PowerShell で mpclaim -s -d を実行すると、2 つの LUN が MPIO のディスク(MPIO Disk0・Disk1)として表示されます。経路が 2 本あっても、ディスクは 1 本ずつです。
mpclaim -s -d
Get-Disk | Where-Object BusType -eq iSCSI
(2) 1 台のホスト(DOC-HV1)で、iSCSI の 2 つのディスクをオンラインにして初期化(GPT)し、NTFS でフォーマットします。ボリューム名は CSV01(100 GB)と Witness(2 GB)にしました。ディスクの管理(diskmgmt.msc)で、2 つのボリュームを確認します。
Set-Disk -Number 3 -IsOffline $false
Initialize-Disk -Number 3 -PartitionStyle GPT
New-Partition -DiskNumber 3 -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel CSV01

ディスクの管理を開くと、未初期化のディスクの初期化を求められます。Disk 1・Disk 2(ローカルの 40 GB)は HCI 構成(S2D)で使うので、初期化しないで [Cancel] をクリックしてください。ディスクの準備は 1 台のホストだけで行い、ほかのホストではオフラインのままにします(クラスタに追加すると、クラスタが所有権を管理します)。
(3) ディスクを右クリックして [Properties] → [MPIO] タブを開くと、MPIO のポリシーと経路が表示されます。既定のポリシーは [Round Robin With Subset] で、2 つの経路がどちらも [Active/Optimized] になっています。

| ポリシー | 動作 |
|---|---|
| Fail Over Only | 1 本の経路だけを使い、障害時に切り替えます |
| Round Robin | すべての経路に順番に I/O を振り分けます |
| Round Robin With Subset | Active/Optimized の経路の間で順番に振り分けます(既定) |
| Least Queue Depth | 処理待ちの I/O が少ない経路を使います |