【Proxmox VE 9.2】 3Tier 構成:iSCSI+マルチパスの共有ストレージ設定手順

Proxmox VE 9.2 の 3 台のクラスタに、外部の iSCSI ストレージを 2 本の経路で接続し、マルチパス(multipath-tools)で 1 つのデバイスに束ねて、共有の LVM ストレージとして使う手順です。経路が 1 本切れても、仮想マシンは止まらずに動き続けます。最後に、ライブマイグレーションと経路の障害の動作を確認します。

ネットワークの準備(NIC 名の固定、ストレージ用の 2 系統のネットワーク、corosync の冗長化)は、前の記事 3Tier 構成の準備 で行いました。

目次

この記事の前提

参照した公式ドキュメント

構成

項目内容
iSCSI ターゲット(ストレージ)IQN:iqn.2026-10.local.lab:pvedoc-lun、LUN:100 GB × 1
ターゲットのポータル10.20.81.10(経路 A)、10.20.82.10(経路 B)
ノード側の NICnic1(経路 A:10.20.81.x)、nic2(経路 B:10.20.82.x)
マルチパスのデバイス名mpath-pvedoc(別名を付けます)
ボリュームグループvg-pvedoc
Proxmox VE のストレージ IDiscsi-pvedoc(iSCSI)、lvm-pvedoc(LVM、共有)

検証環境では、iSCSI ターゲットに Linux(Rocky Linux 9)の LIO(targetcli)を使い、2 つのポータルを別々のネットワークに置きました。本番環境では、ストレージ装置のマニュアルに従ってターゲットを作成してください。公式の Wiki にも、ストレージ装置ごとの推奨設定はベンダーのドキュメントを確認するよう書かれています。

ターゲット側の準備(参考)

ターゲットには、3 台のノードのイニシエーター名(IQN)を登録して、アクセスを許可しておきます。イニシエーター名は、各ノードで次のコマンドで確認できます。

cat /etc/iscsi/initiatorname.iscsi

検証環境のターゲット(LIO)では、次のように作成しました(/dev/sdc を LUN にした例)。

targetcli /backstores/block create name=lun0 dev=/dev/sdc
targetcli /iscsi create iqn.2026-10.local.lab:pvedoc-lun
targetcli /iscsi/iqn.2026-10.local.lab:pvedoc-lun/tpg1/portals delete 0.0.0.0 3260
targetcli /iscsi/iqn.2026-10.local.lab:pvedoc-lun/tpg1/portals create 10.20.81.10 3260
targetcli /iscsi/iqn.2026-10.local.lab:pvedoc-lun/tpg1/portals create 10.20.82.10 3260
targetcli /iscsi/iqn.2026-10.local.lab:pvedoc-lun/tpg1/luns create /backstores/block/lun0
targetcli /iscsi/iqn.2026-10.local.lab:pvedoc-lun/tpg1/acls create <ノードのイニシエーター名>
targetcli saveconfig

ACL の作成は、3 台のノードのイニシエーター名ごとに行います。

iSCSI のタイムアウトの変更とマルチパスのインストール

経路が切れたとき、iSCSI は既定で 120 秒間つながるのを待ってから、その経路を使えないと判断します。公式の Wiki では、この時間を 15 秒にすることを推奨しています。短くすると、マルチパスが早く残りの経路に切り替えられます。

(1) pve01 の [Shell] で次のコマンドを実行し、タイムアウトを 15 秒に変更して、マルチパスのパッケージ(multipath-tools)をインストールします。

sed -i 's/^node.session.timeo.replacement_timeout = .*/node.session.timeo.replacement_timeout = 15/' /etc/iscsi/iscsid.conf
grep ^node.session.timeo.replacement_timeout /etc/iscsi/iscsid.conf
apt update
apt install -y multipath-tools
タイムアウトの変更とインストール

(2) pve02 と pve03 でも、同じコマンドを実行します。

iscsid.conf の変更は、この後に作るセッションから使われます。既にセッションがある場合は、ログインし直すと反映されます。

iSCSI ストレージの追加

(1) [Datacenter] → [Storage] を開き、[Add] → [iSCSI] をクリックします。

iSCSI の追加

(2) [Add: iSCSI] が表示されます。次のとおり入力して [Add] をクリックします。

iSCSI の設定
項目説明設定値
IDストレージの名前ですiscsi-pvedoc
Portalターゲットのポータルの IP アドレスです。1 つ指定すると、ターゲットが公開しているほかのポータル(この例では 10.20.82.10)も自動で見つけて接続します10.20.81.10
Target接続するターゲットです。Portal を入力すると一覧から選べますiqn.2026-10.local.lab:pvedoc-lun
Nodesこのストレージを使うノードですAll (No restrictions)
Enableストレージを有効にしますオン
Use LUNs directlyオンにすると、LUN をそのまま仮想マシンのディスクとして使います。今回は LUN の上に LVM を作るので、オフにしますオフ

(3) 一覧に iscsi-pvedoc が追加されます。すべてのノードが、ターゲットにログインします。

iSCSI の追加後

(4) pve01 の Shell で、セッションとディスクを確認します。

iscsiadm -m session
lsblk -o NAME,SIZE,TYPE,TRAN,VENDOR,MODEL

2 つのポータルそれぞれにセッションがあり、同じ LUN が 2 つのディスク(sdc と sdd)として見えています。このままでは同じ LUN を 2 つの別のディスクとして扱ってしまうため、次の手順でマルチパスで 1 つにまとめます。

セッションとディスク

マルチパスの設定

(1) 2 つのディスクの WWID(LUN を識別する番号)を確認します。同じ LUN なので、同じ WWID が表示されます。

/lib/udev/scsi_id -g -u -d /dev/sdc
/lib/udev/scsi_id -g -u -d /dev/sdd
WWID の確認

(2) /etc/multipath.conf を作成します。公式の Wiki では、ストレージ装置のベンダーから指定がなければ、既定の設定(装置ごとの既定値の一覧を含みます)を使い、find_multipaths を strict にしておくことを推奨しています。ここでは、分かりやすいように WWID に別名(mpath-pvedoc)を付けました。

defaults {
    find_multipaths strict
}
multipaths {
    multipath {
        wwid "3600140597f52cf2ace44d60b65264303"
        alias mpath-pvedoc
    }
}
項目説明
find_multipaths strict/etc/multipath/wwids に登録した WWID の LUN だけをマルチパスにします。ローカルのディスクなどが誤ってマルチパスにされるのを防ぎます。Proxmox VE 9.2 の既定値も strict ですが、分かりやすいように明記しています
wwid別名を付ける LUN の WWID です
aliasマルチパスのデバイスの名前です。/dev/mapper/mpath-pvedoc として使えます。指定しない場合は WWID の名前になります

(3) WWID を登録して、マルチパスの設定を読み込み直し、状態を確認します。

multipath -a 3600140597f52cf2ace44d60b65264303
multipath -r
multipath -ll

mpath-pvedoc の下に 2 つの経路(sdc と sdd)があり、どちらも「active ready running」になっていれば、マルチパスで束ねられています。

マルチパスの状態
表示説明
mpath-pvedoc (3600…) dm-6マルチパスのデバイス名、WWID、デバイスマッパーの番号です
features=’1 queue_if_no_path’すべての経路が切れたとき、I/O をすぐにエラーにせず、経路が戻るのを待ちます。待つ時間は装置ごとの既定値(no_path_retry)で決まり、LIO では 12 回 × 5 秒(約 60 秒)です。multipath -t で確認できます
policy=’service-time 0′経路の選び方です。処理待ちの I/O が少なく、早く処理できる経路に振り分けます(既定値)
active ready running経路が使える状態です。切れると「failed faulty offline」になります

(4) pve02 と pve03 でも、(2)〜(3) を同じように行います。WWID は LUN ごとに決まっているので、すべてのノードで同じです。

共有 LVM の作成

(1) pve01 の Shell で、マルチパスのデバイスに物理ボリュームとボリュームグループを作ります。この操作は 1 台で行います。

pvcreate /dev/mapper/mpath-pvedoc
vgcreate vg-pvedoc /dev/mapper/mpath-pvedoc
vgs vg-pvedoc

必ず /dev/mapper/ のマルチパスのデバイスに作ります。sdc や sdd に直接作ると、マルチパスを通らなくなります。

ボリュームグループの作成

(2) pve02 と pve03 の Shell で次のコマンドを実行し、vg-pvedoc が見えることを確認します。

pvscan --cache
vgs vg-pvedoc

(3) [Datacenter] → [Storage] を開き、[Add] → [LVM] をクリックします。

LVM の追加

(4) [Add: LVM] が表示されます。[ID] を入力し、[Volume group] の一覧から [vg-pvedoc] を選びます。

ボリュームグループの選択

(5) [Shared] をオンにして [Add] をクリックします。

LVM の設定
項目説明設定値
IDストレージの名前ですlvm-pvedoc
Base storageLVM を作る元です。[Existing volume groups] は既にあるボリュームグループを使います。iSCSI のストレージを選ぶと、LUN の上にボリュームグループを作ることもできますExisting volume groups
Volume group使うボリュームグループですvg-pvedoc
Content置くデータの種類ですDisk image, Container
Nodesこのストレージを使うノードですAll (No restrictions)
Enableストレージを有効にしますオン
Shared共有ストレージとして扱います。すべてのノードから同じ LUN が見えているときにオンにします。オンにすると、ライブマイグレーションのときにディスクをコピーしませんオン
Wipe Removed Volumesディスクを削除するときに、中身をゼロで消去します。消去に時間がかかりますオフ
Allow Snapshots as Volume-Chain共有 LVM でスナップショットを使えるようにします。Proxmox VE 9 の新しい機能で、まだ技術プレビュー(Technology Preview)ですオフ

共有 LVM は、シンプロビジョニング(LVM-Thin)が使えず、ディスクの容量をはじめから確保します。スナップショットは [Allow Snapshots as Volume-Chain] をオンにしない限り使えません。

(6) 一覧に lvm-pvedoc が追加され、[Shared] が [Yes] になったことを確認します。

LVM の追加後

仮想マシンのディスクの移動

NFS に置いていた仮想マシン(VM 100)のディスクを、動かしたまま lvm-pvedoc に移します。

(1) 仮想マシンの [Hardware] で [Hard Disk] を選択し、[Disk Action] → [Move Storage] をクリックします。

Move Storage

(2) [Target Storage] の一覧から [lvm-pvedoc] を選びます。

移動先の選択

(3) [Delete source] をオンにして [Move disk] をクリックします。LVM には qcow2 のファイルを置けないので、[Format] は [Raw disk image (raw)] になります。

ディスクの移動
項目説明設定値
Target Storage移動先のストレージですlvm-pvedoc
Format移動先のディスクの形式です。LVM では raw だけですRaw disk image (raw)
Delete source移動が終わったら、移動元のディスクを削除します。オフにすると、移動元は未使用のディスク(Unused Disk)として残りますオン

(4) タスクビューアーに [TASK OK] と表示されたら完了です。仮想マシンを動かしたまま、ディスクがコピーされ(drive mirror)、移動元が削除されています。

移動の完了

(5) [Hard Disk] が lvm-pvedoc に変わったことを確認します。

移動後のディスク

動作の確認

ライブマイグレーション

(1) 仮想マシンの右上の [Migrate] をクリックし、[Target node] を選んで [Migrate] をクリックします。

ライブマイグレーション

(2) タスクのログで、ディスクのコピーが行われず、メモリーの内容(VM-state)だけが転送されて、数秒で終わったことを確認します。共有ストレージ(Shared がオン)のディスクは、すべてのノードから見えているためです。

ライブマイグレーションのログ

経路の障害

仮想マシンが動いているノードで、ストレージへの経路を 1 本止めて、仮想マシンが動き続けることを確認します。

検証のための手順です。本番環境で行う場合は、メンテナンスの時間に行ってください。

(1) 仮想マシンが動いているノード(この例では pve02)の Shell で、経路 A の NIC(nic1)を止めます。25 秒ほど待ってから、マルチパスの状態、マルチパスのデバイスの読み込み、仮想マシンの状態を確認します。

ip link set nic1 down
sleep 25
multipath -ll
dd if=/dev/mapper/mpath-pvedoc of=/dev/null bs=1M count=200 iflag=direct
qm status 100

経路の 1 本が「failed faulty offline」になりますが、残りの経路で読み込みができ、仮想マシンは「running」のままです。

経路の障害

(2) NIC を元に戻します。30 秒ほど待ってから、セッションとマルチパスの状態を確認します。

ip link set nic1 up
sleep 30
iscsiadm -m session
multipath -ll

2 つのセッションが戻り、2 つの経路が「active ready running」に戻ります。

経路の復旧

次の手順

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次