仮想化基盤サーバーストレージ

ProxmoxとEverpure(旧 Pure Storage)のFlashArrayをiSCSI接続して動作確認しました。

ProxmoxとFlashArrayのiSCSI接続の設定手順と、設定後の動作確認結果についてまとめました。

本記事では、ProxmoxとFlashArrayをiSCSIマルチパス構成で接続し、共有ストレージ(LVM)として利用する手順と、冗長構成が正しく機能しているかの動作確認結果をまとめました。

本記事で分かること
・ProxmoxとFlashArrayをiSCSIマルチパスで接続する際の構成例
・open-iscsiを用いたiSCSIターゲットのdiscovery/ログイン手順
・マルチパス設定(multipath.conf)の考え方と設定理由
・FlashArrayのLUNが複数パスで認識される仕組み
・共有ストレージ(LVM)としてProxmoxに登録する手順
・ケーブル抜線によるマルチパス冗長化の動作確認結果

検証ベースの記事のため、実際の構築・設定時の参考資料として利用できる内容となっています。
※本記事は1台構成での検証結果ですが、マルチノード構成や本番環境にも応用可能な考え方を含んでいます。

用語

iSCSI接続 EthernetなどのIPネットワーク経由でSCSIコマンドを転送し、離れた場所にあるストレージ(ディスク)を、ローカルに接続されたハードディスクのように認識させる技術です。
マルチパス接続 コンピュータやサーバーと、外部ストレージやネットワークの間に、物理的に複数の経路(パス)を設けて接続する技術のことです。単一の経路ではなく、複数の通信経路を並列に持つことで、高い信頼性とパフォーマンス向上を実現します。

今回の構成図
構成図

                               ※カッコ内はホスト名

1台のサーバーにProxmoxを導入し、FlashArrayにiSCSI接続する構成となります。
本構成では、Proxmoxサーバーの2つのNICを異なるネットワークセグメントに接続し、FlashArray側も各コントローラに対して冗長なiSCSIパスを提供しています。これにより、スイッチ障害やネットワーク障害発生時にもストレージアクセスを継続できる構成としています。

1.前提条件

FlashArray側でボリュームの作成、およびProxmox側のiSCSIイニシエータ名(IQN)を含めたProxmoxホスト情報の登録を行います。
FlashArrayは2つのコントローラ(CT0 / CT1) を持ち、それぞれ2つのiSCSIポートを持つため、合計で4つのIPアドレスを持ちます。

                          FlashArray設定
FlashArray設定図

2.iSCSI接続の流れ

ここでは、Proxmox(iSCSIイニシエータ)からFlashArray(iSCSIターゲット)に接続する手順について説明します。

2.1 Proxmox GUIのシェルをクリックします。
iSCSI接続の流れの図1

2.2 open-iscsiのインストールをします。
# apt-get update
# apt-get install open-iscsi
iSCSI接続の流れの図2

2.3 iSCSI サービスの有効化と起動をします。
# systemctl enable iscsid
# systemctl start iscsid
iSCSI接続の流れの図3

2.4 IQN ファイルの生成を確認します。
インストール後、自動的に以下のファイルが生成されます。
/etc/iscsi/initiatorname.iscsi
iSCSIイニシエータ名(IQN)を取得します。
iSCSI接続の流れの図4
※ 取得したIQNは、FlashArrayにて設定します。

2.5 Proxmoxから iSCSI ターゲットにログインします。
FlashArrayのLUN(ボリューム)を Proxmox から利用するには、iSCSIセッションを確立してOSにLUNを見せる必要があるため、ログインが必要となります。

# iscsiadm -m discovery -t sendtargets -p 192.168.203.13
iSCSI接続の流れの図5

同様に他のIPに対しても実行します。
# iscsiadm -m discovery -t sendtargets -p 192.168.203.14
# iscsiadm -m discovery -t sendtargets -p 192.168.204.13
# iscsiadm -m discovery -t sendtargets -p 192.168.204.14

※ FlashArrayは、2コントローラ×各2ポート構成のため、1つのターゲットに対して複数のiSCSI IPアドレスが存在します。そのため、すべてのiSCSIターゲットIPに対してdiscoveryを実行する必要があります。

2.6 セッションを永続化するため、以下のコマンドを実行します。
# iscsiadm -m node –op update -n node.startup -v automatic
iSCSI接続の流れの図6

2.7 ターゲットにログインします。
# iscsiadm -m node –loginall=automatic
iSCSI接続の流れの図7

2.8 マルチパスI/O管理ツールのインストールをします。
# apt install multipath-tools
iSCSI接続の流れの図8

2.9 サービスが有効であることを確認します。
# systemctl status multipathd.service
iSCSI接続の流れの図9

3.マルチパス設定の流れ

ここでは、複数パスを1つの論理デバイスに統合する手順について説明します。

3.1 Everpure社の推奨に従って/etc/multipath.confを作成します。
マルチパス設定の流れの図1
※ Everpure社 Connecting Proxmox to FlashArray using iSCSI参照

multipath.confの作成目的は以下です。
・複数の経路で見える同じストレージを1つにまとめるための設定ファイルです。
・どのディスクをマルチパス対象にするか/しないかを決める場所です。
・ストレージの動作(フェイルオーバーや負荷分散)を最適化するための設定を記述します。
※ FlashArrayでは、LUNが単一パスで認識された場合でも確実にマルチパス管理下に置くため、find_multipaths offが推奨されています。
※ blacklist + exception方式を採用する理由は、OSが認識するすべてのディスクを無条件にマルチパス対象とせず、意図したストレージ(FlashArrayのLUN)のみを確実にマルチパス管理下に置くためです。
これにより、OSのローカルディスクやUSBデバイスなどが誤ってマルチパス管理されることを防ぎ、安定したストレージ運用が可能になります。特に仮想化基盤では、誤ったマルチパス設定がホスト起動不能やデータ破損につながる可能性があるため、blacklist + exception 方式による明示的な制御が重要です。

3.2 以下のコマンドで設定を適用します。
# multipath -r
マルチパス設定の流れの図2

ここまでの手順で複数の物理パス(sdb, sdc, sdd, sde)が、マルチパスによって1つのデバイスにまとめられ、その結果 /dev/mapper/<DEVICE_NAME> というファイルが作成されます。
※DEVICE_NAME・・・マルチパスが生成するマルチパスデバイスの名前です。

マルチパスデバイスが正しく構成され、アクティブであることを確認します。
# multipath -ll
マルチパス設定の流れの図3

出力には、パスがアクティブで準備完了状態のFlashArrayデバイスが表示されます。
※ FlashArrayで作成したボリュームが確認できます(上図、赤枠)。
※4つ(sdb, sdc, sdd, sde)見える理由
マルチパス構成における複数パス認識によるものです。
FlashArrayとProxmoxをFC接続やiSCSI接続した際、ストレージ側の1つのLUN(ボリューム)は、一般的に、冗長構成によりあるホストに対して複数のパスで見えます。FlashArrayは2コントローラ構成で、各コントローラに複数ポートがあります。検証環境では、2コントローラ×2ポートずつあるため、1つのLUNが4パスで示され、OSは4つのデバイスとして認識します。

4.共有ストレージ(LVM)作成と登録の流れ

ここでは、VM(仮想マシン)のディスクを置くためのストレージ領域として使えるように共有ストレージ(LVM)を作成し、ボリュームグループを登録する手順について説明します。

4.1 マルチパスデバイス名を確認します。
lsblkコマンドを実行し、マルチパスで統合されたデバイス名を確認します。
# lsblk
共有ストレージ(LVM)作成と登録の流れの図1
※ lsblk・・・Linuxシステムでディスクやパーティションなどのブロックデバイスをツリー形式で一覧表示するコマンドです。

4.2 マルチパスデバイスをPV(物理ボリューム)として初期化します。
PVはLVMで利用するための物理ディスクの単位であり、この操作により対象デバイスがLVM管理下に置かれます。
# pvcreate /dev/mapper/<DEVICE_NAME>
共有ストレージ(LVM)作成と登録の流れの図2

4.3 PVからVG(pure-vg)を作成します。
作成したPVを用いて、pure-vgという名前のVG(ボリュームグループ)を作成します。
VGは複数のPVをまとめたストレージプールで、ProxmoxからはこのVGを共有ストレージとして利用します。
# vgcreate <VG名> /dev/mapper/<DEVICE_NAME>
共有ストレージ(LVM)作成と登録の流れの図3

これらの手順が完了すると、共有LVMストレージをProxmox GUIに追加できるようになります。

4.4 Proxmox GUIからLVMストレージを追加します。
GUIの「データセンター」> 「ストレージ」> 「追加」に進み、「LVM」を選択します。
共有ストレージ(LVM)作成と登録の流れの図4

4.5 作成したVGをストレージとして登録します。
共有ストレージ(LVM)作成と登録の流れの図5
※新たにボリュームグループが登録されます(下図、赤枠)。

共有ストレージ(LVM)作成と登録の流れの図6
以上で共有ストレージの作成と登録は完了しました。次章では、作成したLVMストレージが正しく利用できるかを動作確認します。

5.動作確認と結果

5.1 LVM確認
本検証では、以下の観点で動作確認を行いました。
・複数VMが共有LVM上に正常に作成できること。
・マルチパス構成により、通信経路断が発生してもVMの動作に影響が出ないこと。

5.1.1 設定概要
Proxmox GUIでVM(Windows 11)を3台新規作成します。
その際にストレージ指定で、今回作成したボリュームグループ「pure-vg」を選択します。

5.1.2 確認結果
複数のVMを作成することができました(下図、赤枠)。
動作確認と結果の図1
※ Win01-Pure、Win02-Pure、Win03-Pureを新規作成

また、それぞれの仮想マシンのディスクがFlashArrayのボリュームに配置されていることを確認しました(下図、赤枠)。
動作確認と結果の図2

5.2 マルチパス(ストレージパスの冗長化)確認
冗長化した結線の片方を抜線しても、仮想マシンの画面表示や動作に影響がないことを確認します。

5.2.1 確認手順
① サーバーに接続しているケーブルの下図Ⓐを抜線します。
② 各VMのOS画面で画面操作を行い、画面表示や動作に問題ないかを確認します。
③ 抜線したケーブルを元通りに結線し、下図Ⓑを抜線します。
④ 先程と同様に各VMのOS画面で画面操作を行い、画面表示や動作に問題ないかを確認します。

動作確認と結果の図3

5.2.2 確認結果
それぞれのケーブルを抜線しても、各仮想マシンの画面表示や動作に影響がないことを確認しました。

6.まとめ

ProxmoxとFlashArrayをiSCSI接続して動作確認しました。
・FlashArrayに共有ストレージ(LVM)を作成したことで、複数のVMが作成できることを確認しました。
・マルチパス(ストレージパスの冗長化)を設定したことで、それぞれのケーブルを抜線しても仮想マシンの画面表示や動作に影響がないことを確認しました。

7.終わりに

当社では多数のシステム構築案件の導入実績があり、ProxmoxやEverpure社製品の構築も承ります。
ご相談は下記フォームよりお問い合わせください。

この記事に関連する製品・サービス