クラウド接続ストレージとIaaSサーバのiSCSI接続

この記事での構成

ここでは、IaaSサーバからクラウド接続ストレージをiSCSIプロトコルを使用してマウントする方法をご紹介します。

使用する構成は下図になります

ブロックストレージのマウント

接続元サーバ側のiSCSIイニシエータの準備

接続元のサーバに対して、あらかじめパッケージをインストールし、iSCSIイニシエータを作成する必要があります。
作成したiSCSIイニシエータのiQN(InitiatorName) の値を、ポータルでのHost登録に利用します

RHEL/CentOSの場合

iSCSIイニシエータ作成に必要なパッケージをリポジトリからインストールします。

[shell]sudo yum install iscsi-initiator-utils device-mapper-multipath sg3_utils[/shell]

パッケージインストール後に作成されたiSCSIイニシエータの IQNを下記コマンドで確認し、 出力されたInitiatorName の値をコピー等で控えます。

[shell]cat /etc/iscsi/initiatorname.iscsi 出力結果 InitiatorName=<iscsiイニシエータの iqn>[/shell]

IQN確認(CentOS/RHEL)

上記で取得した InitiatorName の値は、ポータルでのHost登録に利用します。

Ubuntsuの場合

iSCSIイニシエータ作成に必要なパッケージをリポジトリからインストールします。

[shell]sudo apt install open-iscsi scsitools multipath-tools[/shell]

パッケージインストール後に作成されたiSCSIイニシエータの IQNを下記コマンドで確認し、 出力されたInitiatorName の値をコピー等で控えます。

[shell]cat /etc/iscsi/initiatorname.iscsi 出力結果 InitiatorName=<iscsiイニシエータの iqn>[/shell]

上記で取得した InitiatorName の値は、ポータルでのHost登録に利用します。

クラウド接続ストレージの設定

ポータルの切り替え

ここからの操作は、ポータル画面を「クラウド接続ストレージ」に切り替えて操作します。
ポータル画面右上のタブで対象をリソースプールからクラウド接続ストレージに変更します。

ポータル画面(クラウド接続ストレージ)

クラウド接続ストレージのHost登録

左メニューから「クラウドストレージ」ー「Host」を選択します。
ホスト画面で「ホスト新規作成」ボタンを押します

ホスト新規登録

ホスト情報を登録します。IQNには、サーバのiSCSIイニシエータインストールの手順で調べた InitiatorName の値を入力します。

ホスト新規作成
ホスト作成完了

Block Storage ボリューム作成

左メニューから「クラウドストレージ」ー「storage」を選択します。
ストレージ画面で「新規作成」タブから「ボリューム新規作成」を選択します。

ボリューム新規作成

作成するボリュームのパラメータを入力し、確定します。

ボリューム作成

ブロックストレージのボリュームが作成されます。

作成されたブロックストレージ

作成したブロックストレージ ボリュームの左端のボックスをクリックしてチェックし、表示されたメニューから「ボリュームマッピング」を選択します

ブロックストレージ操作メニュー

対象のボリュームに接続するホストを、登録したものから選択し「マップ」

ボリュームマッピング

マップされたホストが、対象のボリュームに対しiSCSI接続可能になります。

iSCSI接続用パラメータの取得

ボリュームを選択し、メニューから「マウントコマンド確認」を選択すると、OSで使用するCLI・Powershellコマンドやボリューム側のiSCSIターゲットIPが確認できます。

マウントコマンド確認

ファイアーウォールルールの作成

ホスト用サーバからブロックストレージボリュームへアクセスするための、iSCSI通信用のファイヤーウォールポリシーを作成します。

iSCSI通信用FWポリシー作成

今回は、内部サーバセグメント(172.24.0.0/24)からブロックストレージのインターフェースに割り当てられたIPアドレス(172.16.62.65~172.16.62.70)へのiSCSI通信のみを許可するファイアーウォールポリシーを作成します。

リソースプール用ポータルで対象のNSX-Edgeに、ファイヤーウォールポリシーを作成します。

iSCSI用FWルール作成
送信元IP送信先IPプロトコルターゲットポートアクション備考
172..24.0.0/24172.16.62.65-17216.62.70TCP3260acceptiSCSI通信に限定

iSCSI接続の作成(Linux OSの場合)

iSCSIターゲットへのログイン

ボリュームをマウントするOS上で下記コマンドを実行し、ターゲットへログインします

[shell]#iSCSIターゲットを走査 sudo iscsiadm -m discovery -t sendtargets -p ISCSIボリュームのターゲットIP #発見したiSCSIターゲットにログイン sudo iscsiadm -m node –login[/shell]

[shell]#iSCSIセッションのステータスを確認 sudo iscsiadm -m session 実行結果 tcp: [1] 172.18.62.66:3260,4099 iqn.2009-11.com.infinidat:storage:infinibox-sn-2822 (non-flash) tcp: [2] 172.18.62.67:3260,4099 iqn.2009-11.com.infinidat:storage:infinibox-sn-2822 (non-flash) tcp: [3] 172.18.62.68:3260,4099 iqn.2009-11.com.infinidat:storage:infinibox-sn-2822 (non-flash) tcp: [4] 172.18.62.69:3260,4099 iqn.2009-11.com.infinidat:storage:infinibox-sn-2822 (non-flash) tcp: [5] 172.18.62.70:3260,4099 iqn.2009-11.com.infinidat:storage:infinibox-sn-2822 (non-flash) tcp: [6] 172.18.62.65:3260,4099 iqn.2009-11.com.infinidat:storage:infinibox-sn-2822 (non-flash) [/shell]

接続したiSCSIターゲットからボリュームを検出します

Ubuntuの場合 [shell]sudo /sbin/rescan-scsi-bus[/shell]
Redhat/Cent OSの場合 [shell]sudo /usr/bin/rescan-scsi-bus.sh[/shell]

マルチパスの構成

マルチパスが有効になっているか確認します。初回起動時で /etc/multipath.confが存在しない場合には作成を行います。

[shell]multipathd -l 実行結果(/etc/multipath.confが存在しない場合) Oct 07 15:51:40 | /etc/multipath.conf does not exist, blacklisting all devices. Oct 07 15:51:40 | You can run “/sbin/mpathconf –enable” to create Oct 07 15:51:40 | /etc/multipath.conf. See man mpathconf(8) for more details Oct 07 15:51:40 | DM multipath kernel driver not loaded #/etc/multipath.confが存在しない場合、作成 /sbin/mpathconf –enable[/shell]

ログインしたiSCSIセッションでマルチパスが構成されていること確認します

[shell]multipath -l 実行結果 mpatha (36742b0f000000b06000000000000c595) dm-2 NFINIDAT,InfiniBox size=100G features=’0′ hwhandler=’1 alua’ wp=rw `-+- policy=’round-robin 0′ prio=0 status=active |- 33:0:0:1 sdb 8:16 active undef running |- 34:0:0:1 sdc 8:32 active undef running |- 35:0:0:1 sdd 8:48 active undef running |- 37:0:0:1 sdf 8:80 active undef running |- 36:0:0:1 sde 8:64 active undef running `- 38:0:0:1 sdg 8:96 active undef running[/shell]

実行結果から、6つのターゲットIPでそれぞれディスク(sdb~sdg)を検出していますがmultipathdにより同じボリュームとして認識され、マルチパス接続のボリューム(mpatha)が認識されていることが確認できます。

ディスクのフォーマット(GPTディスクの場合)

ここでは、2TB以上の容量のディスク利用を想定し、接続したボリュームの初期設定(GPTテーブルの作成)を行います。
(2TB以下のディスク容量でのご利用の場合、MBRでのフォーマットでも問題ありません。)

[shell]#接続したmpathaボリュームに対し、gdiskツールを実行 gdisk /dev/mapper/mpatha 実行結果 GPT fdisk (gdisk) version 1.0.5 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries in memory. #oコマンドで GPTテーブルを作成 Command (? for help):o This option deletes all partitions and creates a new protective MBR. Proceed? (Y/N): Y #構成を書き込み Command (? for help): wq[/shell]

パーティションについては、gdiskツールを使用して作成できますが、作成せずにボリュームに直接ファイルシステムを展開することが可能ですパーティションを使用せずに直接ファイルシステムを使用することのメリット・デメリットについては、外部サイトにナレッジが紹介されておりますのでのでご参考ください。

ここでは、パーティションを作成せず直接ボリュームにファイルシステムを作成しています

[shell]#ext4ファイルシステムでのフォーマット mkfs -t ext4 /dev/mapper/mpatha mke2fs 1.45.5 (07-Jan-2020) Found a gpt partition table in /dev/mapper/mpatha Proceed anyway? (y,N) y 実行結果 Discarding device blocks: done Creating filesystem with 26214400 4k blocks and 6553600 inodes Filesystem UUID: bb0ff9f9-c484-469f-9f49-6d4b2b227604 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: done Writing inode tables: done Creating journal (131072 blocks): done Writing superblocks and filesystem accounting information: done [/shell]

フォーマットしたボリュームを /mnt/iSCSIにマウントします

[shell]#マウントポイントを作成 mkdir /mnt/iSCSI #ボリュームをマウント mount -t ext4 /dev/mapper/mpatha /mnt/iSCSI[/shell]

起動時の自動マウント設定(Linux OS)

サービスの自動起動

iSCSIサービスとmultipathサービスの自動起動設定(RHEL/CentOS) [shell]systemctl enable iscsid.service systemctl enable multipathd.service [/shell]

ファイルシステムの自動マウント

Linuxの場合、/etc/fstab にマウントポイントを追記します。

[マウントポイント/mnt/iSCSI を作成して、ext4ファイルシステムの/dev/mapper/mpatha1をマウントする場合]
まず、マウントするパーティションのUUIDを調べます。

[shell]blkid |grep /dev/mapper/mpatha1[/shell]

実行結果から、対象のパーティションのUUIDの値を調べます。

UUID確認

UUIDをベースにマウント設定をfstabに追記します。

[shell]echo “UUID=対象パーティションのUUID /mnt/iSCSI ext4 _netdev 0 0 >> /etc/fstab[/shell]