なにかの技術メモ置き場

なにかの技術メモ置き場

@インフラエンジニア

QLogicのHBAでSANブートする

f:id:none06:20210807091758j:plain

概要

FC-SAN(※)環境が整ったので、憧れのSANブートをやってみた。
※厳密にはDAS。FC-SWがないので。

環境

概念図

不要?

構成図

TBD

機器構成

ホスト名 管理NWのIP OS H/W 備考
localhost - CentOS 8.3.2011 HP ProLiant DL360 G7 SANブートする物理マシン(HBA: QLE2562-HP)
DX60 172.16.0.101 ? ETERNUS DX60 S2 FC-SANストレージ

ポートマッピング

ストレージ サーバ 備考
CM#0 Port#0 Port0 -
CM#0 Port#1 - -
CM#1 Port#0 Port1 -
CM#1 Port#1 - -

背面写真

f:id:none06:20210807091510j:plain
f:id:none06:20210807091758j:plain

前提

  • シングルパスでストレージの設定が済んでいる。
    • CM#0 Port#0のみ設定済み(過去記事参照)。当記事では追加でCM#1 Port#0も設定し、マルチパス化する。
  • 10GBのボリュームを2つ作成済み。そのうち1つ目のボリュームでSANブートを行う。
  • SANブートの確認用のOSは新規インストールする。

手順

1. ケーブリング

ポートマッピングと背面写真のとおりにFCケーブルを結線する。

2. ログイン

ETERNUS Web GUIにログインする。

3. FCホストの設定

DL360G7_0(HBA Port0)は設定済み。DL360G7_1(HBA Port1)を追加する。
f:id:none06:20210807084521p:plain
f:id:none06:20210807084622p:plain
f:id:none06:20210807084626p:plain

4. ホストアフィニティの設定

CM#0 Port#0は設定済み。追加でCM#1 Port#0に設定をする。
f:id:none06:20210807084748p:plain

CM#0 Port#0の設定を見ておく。
f:id:none06:20210807085043p:plain

DL360G7_0(HBA Port0)のみアフィニティグループを割り当てている。
f:id:none06:20210807085046p:plain

CM#1 Port#0を設定する。
f:id:none06:20210807085111p:plain

DL360G7_1(HBA Port1)のみアフィニティグループを割り当てる。
f:id:none06:20210807085114p:plain
f:id:none06:20210807085118p:plain
f:id:none06:20210807085121p:plain

設定後の状態。ホスト数がそれぞれ1であることがポイント。
f:id:none06:20210807085137p:plain

5. HBAの設定

[Ctrl+Q]キーでQLogicのFast!UTILに入る。
f:id:none06:20210807090502p:plain

Functionが0のもの(HBA Port0)を選択する。
f:id:none06:20210807092756p:plain

[Configuration Settings]を選択する。
f:id:none06:20210807090218p:plain

[Adapter Settings]を選択する。
f:id:none06:20210807090616p:plain

[Host Adapter BIOS]を[Enabled]に変更する。
f:id:none06:20210807090619p:plain
f:id:none06:20210807090623p:plain

[Esc]キーでいくつか画面を戻り、[Selectable Boot Settings]を選択する。
f:id:none06:20210807090222p:plain

[Selectable Boot]を[Enalbed]に変更する。
[Boot Port Name, Lun]の1番上のエントリを設定する。
f:id:none06:20210807090225p:plain
f:id:none06:20210807090229p:plain

Port1も同様に設定する。

6. BIOSの設定

ローカルディスクを搭載していない場合は設定不要。RAIDコントローラとHBAのブート順序の設定のため。

[F9]キーを押下する。
f:id:none06:20210807090356p:plain

[コントローラのブート順]を変更する。
f:id:none06:20210807090359p:plain
f:id:none06:20210807090402p:plain
f:id:none06:20210807090406p:plain

7. OSのインストール

OSのインストーラを起動する。手段は任意。
f:id:none06:20210807085431p:plain

[インストール先]を選択する。
f:id:none06:20210807085434p:plain

[ディスクの追加]を選択する。
f:id:none06:20210807085438p:plain

10GBのボリューム2つを認識していることを確認できる。
f:id:none06:20210807085441p:plain

マルチパスで認識していることを確認できる。
f:id:none06:20210807085444p:plain

[mpatha]を選択する。
f:id:none06:20210807085447p:plain

こちら側も自動的に設定される。[完了]ボタンを押下する。
f:id:none06:20210807085451p:plain

ディスクを選択できた。
f:id:none06:20210807085454p:plain

以降、任意に設定しOSをインストールする.
f:id:none06:20210807085458p:plain

8. SANブート

OSのインストールが完了するとサーバが再起動する。問題なければGRUBの画面が表示される。
f:id:none06:20210807090834p:plain

OSのログイン画面が表示される。
f:id:none06:20210807090837p:plain

9. 動作確認

カーネルモジュールの認識

[root@localhost ~]# lsmod | grep qla
qla2xxx               880640  8
nvme_fc                45056  1 qla2xxx
scsi_transport_fc      69632  1 qla2xxx

バイスの認識

[root@localhost ~]# ls -l /sys/class/fc_host/
合計 0
lrwxrwxrwx. 1 root root 0  8月  7 04:02 host1 -> ../../devices/pci0000:00/0000:00:09.0/0000:06:00.0/host1/fc_host/host1
lrwxrwxrwx. 1 root root 0  8月  7 04:02 host4 -> ../../devices/pci0000:00/0000:00:09.0/0000:06:00.1/host4/fc_host/host4
[root@localhost ~]# grep "" /sys/class/fc_host/host*/port_name
/sys/class/fc_host/host1/port_name:0x50014380242710b0
/sys/class/fc_host/host4/port_name:0x50014380242710b2
[root@localhost ~]# grep "" /sys/class/fc_host/host*/port_state
/sys/class/fc_host/host1/port_state:Online
/sys/class/fc_host/host4/port_state:Online
[root@localhost ~]# grep "" /sys/class/fc_host/host*/speed
/sys/class/fc_host/host1/speed:4 Gbit
/sys/class/fc_host/host4/speed:4 Gbit

ディスクの認識

[root@localhost ~]# fdisk -l
ディスク /dev/sdb: 10 GiB, 10737418240 バイト, 20971520 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト


ディスク /dev/sda: 10 GiB, 10737418240 バイト, 20971520 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x0009f1ff

デバイス   起動 開始位置 終了位置   セクタ サイズ Id タイプ
/dev/sda1  *        2048  2099199  2097152     1G 83 Linux
/dev/sda2        2099200  4196351  2097152     1G 82 Linux スワップ / Solaris
/dev/sda3        4196352 20971519 16775168     8G 83 Linux


ディスク /dev/sdd: 10 GiB, 10737418240 バイト, 20971520 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト


ディスク /dev/sdc: 10 GiB, 10737418240 バイト, 20971520 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x0009f1ff

デバイス   起動 開始位置 終了位置   セクタ サイズ Id タイプ
/dev/sdc1  *        2048  2099199  2097152     1G 83 Linux
/dev/sdc2        2099200  4196351  2097152     1G 82 Linux スワップ / Solaris
/dev/sdc3        4196352 20971519 16775168     8G 83 Linux




ディスク /dev/mapper/mpatha: 10 GiB, 10737418240 バイト, 20971520 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x0009f1ff

デバイス            起動 開始位置 終了位置   セクタ サイズ Id タイプ
/dev/mapper/mpatha1 *        2048  2099199  2097152     1G 83 Linux
/dev/mapper/mpatha2       2099200  4196351  2097152     1G 82 Linux スワップ / Solaris
/dev/mapper/mpatha3       4196352 20971519 16775168     8G 83 Linux


ディスク /dev/mapper/mpathb: 10 GiB, 10737418240 バイト, 20971520 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

マルチパスの状態

[root@localhost ~]# multipath -ll
Aug 07 04:07:26 | /etc/multipath.conf line 3, duplicate keyword: find_multipaths
mpathb (3600000e00d0000000000358500010000) dm-1 FUJITSU,ETERNUS_DXL
size=10G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
-+- policy='service-time 0' prio=50 status=active
`- 1:0:0:1 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=10 status=enabled `- 4:0:0:1 sdd 8:48 active ready running mpatha (3600000e00d0000000000358500000000) dm-0 FUJITSU,ETERNUS_DXL size=10G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
-+- policy='service-time 0' prio=50 status=active
`- 1:0:0:0 sda 8:0 active ready running
`-+- policy='service-time 0' prio=10 status=enabled `- 4:0:0:0 sdc 8:32 active ready running

起動ディスク

[root@localhost ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Fri Aug  6 18:09:05 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=a81a1d3d-cc5f-4c4d-9da4-78e3c30ff453 /                       xfs     defaults        0 0
UUID=5f897012-920b-48e9-9dd9-79a2707add73 /boot                   xfs     defaults        0 0
UUID=d6ec5a00-5f69-46f7-a4c7-af8a984bda05 none                    swap    defaults        0 0
[root@localhost ~]# blkid
/dev/mapper/mpatha3: UUID="a81a1d3d-cc5f-4c4d-9da4-78e3c30ff453" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="0009f1ff-03"
/dev/sda: PTUUID="0009f1ff" PTTYPE="dos"
/dev/sdc: PTUUID="0009f1ff" PTTYPE="dos"
/dev/mapper/mpatha: PTUUID="0009f1ff" PTTYPE="dos"
/dev/mapper/mpatha1: UUID="5f897012-920b-48e9-9dd9-79a2707add73" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="0009f1ff-01"
/dev/mapper/mpatha2: UUID="d6ec5a00-5f69-46f7-a4c7-af8a984bda05" TYPE="swap" PARTUUID="0009f1ff-02"

ベンチマーク
TBD

参考サイト

-