2020年5月13日水曜日

iSCSI + DM-multipathを使ってRHELにiSCSIストレージを認識させる

以前Windowsでは以下記事にてiSCSIイニシエータの設定手順を記載している。
今回はRHELにおいて、iSCSIイニシエータの設定を行いiSCSIストレージを認識させ、さらにDM-multipathを使ったマルチパス設定の手順検証をしてみた。

環境

  • OS:Red Hat Enterprise Linux 7.6
  • iSCSIターゲット:QNAP NAS
  • iSCSIディスク:5GB、2GB、1GBの3つ



iSCSI (iscsi-initiator-utils) の設定

1. 「iscsi-initiator-utils」をインストール

RHELでiSCSIを認識させるため、「iscsi-initiator-utils」をインストールする。「iscsi-initiator-utils」を使うためには、iscsi-initiator-utilsとiscsi-initiator-utils-iscsiuioの2つのパッケージをインストールする必要がある。
# rpm -ivh iscsi-initiator-utils-6.2.0.874-10.el7.x86_64.rpm iscsi-initiator-utils-iscsiuio-6.2.0.874-10.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:iscsi-initiator-utils-iscsiuio-6.################################# [ 50%]
   2:iscsi-initiator-utils-6.2.0.874-1################################# [100%]

2. イニシエータのiqnの確認

イニシエータのiqnは/etc/iscsi/initiatorname.iscsiに記載される。これを確認し必要に応じて修正して、ストレージ側でアクセス許可を設定しておく。
# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:9122a7a91a1
なお、今回はQNAPでiSCSIターゲットの設定をしているが、手順は割愛する。

3. ターゲットを登録

iSCSIの各種設定はiscsiadmコマンドで行う。
まずは、ターゲットの検出を行う。-t stは「sendtargets」の略となり、-pでターゲットのIPアドレスを指定する。
# iscsiadm -m discovery -t st -p 192.168.11.13
192.168.33.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.t3013qnap.06d5ba
192.168.11.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.t3013qnap.06d5ba
192.168.33.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.target.06d5ba
192.168.11.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.target.06d5ba
登録されたターゲットの確認コマンドはiscsiadm -m nodeとなる。
# iscsiadm -m node
192.168.33.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.t3013qnap.06d5ba
192.168.11.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.t3013qnap.06d5ba
192.168.33.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.target.06d5ba
192.168.11.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.target.06d5ba

4. ターゲットにログイン

iscsiサービスはターゲットが登録されていない場合、起動しない設定となっている。
# systemctl status iscsi
● iscsi.service - Login and scanning of iSCSI devices
   Loaded: loaded (/usr/lib/systemd/system/iscsi.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
Condition: start condition failed at 金 2020-03-20 14:43:08 JST; 6min ago
           none of the trigger conditions were met
     Docs: man:iscsid(8)
           man:iscsiadm(8)
ターゲット登録後はiscsiサービスを起動させることができる。iscsiサービスを起動すると、登録されたターゲットに自動ログインする。
# systemctl start iscsi
# systemctl status iscsi
● iscsi.service - Login and scanning of iSCSI devices
   Loaded: loaded (/usr/lib/systemd/system/iscsi.service; enabled; vendor preset: disabled)
   Active: active (exited) since 金 2020-03-20 14:50:30 JST; 1s ago
     Docs: man:iscsid(8)
           man:iscsiadm(8)
  Process: 16041 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS)
  Process: 16038 ExecStart=/usr/libexec/iscsi-mark-root-nodes (code=exited, status=0/SUCCESS)
 Main PID: 16041 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/iscsi.service

 3月 20 14:50:30 localhost.localdomain iscsi-mark-root-nodes[16038]: iscsiad...
 3月 20 14:50:30 localhost.localdomain systemd[1]: Started Login and scannin...
 3月 20 14:50:30 localhost.localdomain iscsiadm[16041]: Logging in to [iface...
~(以下略)~
ターゲットへのログイン状態の確認コマンドはiscsiadm -m sessionとなる。
# iscsiadm -m session
tcp: [1] 192.168.33.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.t3013qnap.06d5ba (non-flash)
tcp: [2] 192.168.11.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.t3013qnap.06d5ba (non-flash)
tcp: [3] 192.168.33.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.target.06d5ba (non-flash)
tcp: [4] 192.168.11.13:3260,1 iqn.2004-04.com.qnap:ts-231p:iscsi.target.06d5ba (non-flash)

5, ディスクの認識状況を確認

OSにてiSCSIのディスクを認識するはずなので、ログから確認しておく。今回の環境では、3つのディスクが2パスのマルチパス構成となっていることから、sdb、sdc、sdd、sde、sdf、sdgの計6個のディスクが認識される。
# cat /var/log/messages | grep SCSI
~(中略)~
Mar 20 14:50:30 localhost kernel: scsi 35:0:0:0: Direct-Access     QNAP     iSCSI Storage    4.0  PQ: 0 ANSI: 5
Mar 20 14:50:30 localhost kernel: scsi 36:0:0:0: Direct-Access     QNAP     iSCSI Storage    4.0  PQ: 0 ANSI: 5
Mar 20 14:50:30 localhost kernel: scsi 35:0:0:2: Direct-Access     QNAP     iSCSI Storage    4.0  PQ: 0 ANSI: 5
Mar 20 14:50:30 localhost kernel: scsi 36:0:0:2: Direct-Access     QNAP     iSCSI Storage    4.0  PQ: 0 ANSI: 5
Mar 20 14:50:30 localhost kernel: scsi 35:0:0:1: Direct-Access     QNAP     iSCSI Storage    4.0  PQ: 0 ANSI: 5
Mar 20 14:50:30 localhost kernel: scsi 36:0:0:1: Direct-Access     QNAP     iSCSI Storage    4.0  PQ: 0 ANSI: 5
Mar 20 14:50:30 localhost systemd: Started Login and scanning of iSCSI devices.
Mar 20 14:50:30 localhost kernel: sd 36:0:0:1: [sdg] Attached SCSI disk
Mar 20 14:50:30 localhost kernel: sd 35:0:0:1: [sdf] Attached SCSI disk
Mar 20 14:50:30 localhost kernel: sd 36:0:0:2: [sde] Attached SCSI disk
Mar 20 14:50:30 localhost kernel: sd 35:0:0:2: [sdd] Attached SCSI disk
Mar 20 14:50:31 localhost kernel: sd 36:0:0:0: [sdc] Attached SCSI disk
Mar 20 14:50:31 localhost kernel: sd 35:0:0:0: [sdb] Attached SCSI disk

マルチパス (DM-multipath) の設定

ここまでの手順でiSCSIのディスクを認識させることができたが、同一ディスクを複数ディスクとして認識してしまっているため、「DM-multipath」にてマルチパス設定を行う。

1. 「DM-multipath」をインストール

# rpm -vih device-mapper-multipath-0.4.9-123.el7.x86_64.rpm device-mapper-multipath-libs-0.4.9-123.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:device-mapper-multipath-libs-0.4.################################# [ 50%]
   2:device-mapper-multipath-0.4.9-123################################# [100%]

2. multipath.confを作成

# multipath -ll
Mar 20 15:19:50 | DM multipath kernel driver not loaded
Mar 20 15:19:50 | /etc/multipath.conf does not exist, blacklisting all devices.
Mar 20 15:19:50 | A default multipath.conf file is located at
Mar 20 15:19:50 | /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf
Mar 20 15:19:50 | You can run /sbin/mpathconf --enable to create
Mar 20 15:19:50 | /etc/multipath.conf. See man mpathconf(8) for more details
Mar 20 15:19:50 | DM multipath kernel driver not loaded
# ls -l /etc/multipath.conf
ls: /etc/multipath.conf にアクセスできません: そのようなファイルやディレクトリはありません

# mpathconf --enable --with_multipathd y

# ls -l /etc/multipath.conf
-rw-------. 1 root root 2415  3月 20 15:27 /etc/multipath.conf

3. ストレージ用の設定をmultipath.confに追記

大抵のストレージにおいてはDM-multipathの推奨設定が公開されており、必要とされる場合はmultipath.confに設定を追記する必要がある。なお、DM-multipathに設定済みのストレージも多数あり、その設定はmultipath -tにて確認できる。例えばNetAppの設定が組み込み済みであることが、以下の通り確認できる。
[root@localhost ~]# multipath -t
~(中略)~

        device {
                vendor "NETAPP"
                product "LUN.*"
                path_grouping_policy "group_by_prio"
                path_checker "tur"
                features "3 queue_if_no_path pg_init_retries 50"
                hardware_handler "0"
                prio "ontap"
                failback immediate
                rr_weight "uniform"
                rr_min_io 128
                flush_on_last_del "yes"
                dev_loss_tmo "infinity"
                user_friendly_names no
                retain_attached_hw_handler yes
                detect_prio yes
        }

~(以下略)~
QNAPの場合は、以下URLに推奨されるマルチパス設定が記載されている。
ただし、上記はdefaults設定を書き換える手順となっているため、少し修正して、QNAPのストレージのみに設定がされるよう、以下の通りdevice設定を追加する。
# cat /etc/multipath.conf | grep -v -e "^#" -e "^$"
~(中略)~

devices {
        device {
                vendor                  "QNAP"
                product                 "iSCSI Storage"
                user_friendly_names     yes
                path_selector           "round-robin 0"
                path_grouping_policy    multibus
                uid_attribute           ID_SERIAL
                prio                    alua
                path_checker            readsector0
                rr_min_io               100
                rr_weight               priorities
                failback                immediate
                no_path_retry           fail
        }
}

~(以下略)~

4. 設定反映

設定反映のため、DM-multipathのサービスを再起動する。
# systemctl restart multipathd
通常これだけで、マルチパスのディスクを自動認識するはずだ。以下の通り、mpatha、mpathb、mpathcの3つのiSCSIディスクを認識していることがわかる。
# multipath -ll
mpathc (36e843b6ffaab030d3806d4741db0c1d5) dm-3 QNAP    ,iSCSI Storage
size=1.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=50 status=active
  |- 35:0:0:2 sdd 8:48 active ready running
  `- 36:0:0:2 sde 8:64 active ready running
mpathb (36e843b658a5009cd6630d4824d923fde) dm-4 QNAP    ,iSCSI Storage
size=2.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=50 status=active
  |- 35:0:0:1 sdf 8:80 active ready running
  `- 36:0:0:1 sdg 8:96 active ready running
mpatha (36e843b6fcf19e40dadaed44f9d978ad1) dm-2 QNAP    ,iSCSI Storage
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=50 status=active
  |- 35:0:0:0 sdc 8:32 active ready running
  `- 36:0:0:0 sdb 8:16 active ready running

5. ファイルシステムのとしてフォーマット

後は通常のディスクと同様、パーティションを作成し、ファイルシステムとしてフォーマットする。指定するストレージデバイスは、/dev/mapper/mpathN (Nはアルファベット連番(a,b,c,…)) となる。
以前記載した以下記事通りに作成すればよい。
# dev="/dev/mapper/mpathc"
# parted -s ${dev} "mklabel gpt mkpart ' ' 0% 100% set 1 lvm on print"
モデル: Linux device-mapper (multipath) (dm)
ディスク /dev/mapper/mpathc: 1074MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前  フラグ
 1    1049kB  1073MB  1072MB                          lvm

# pvcreate "${dev}1"
  Physical volume "/dev/mapper/mpathc1" successfully created.
# vgcreate "vg_${dev##*/}1" "${dev}1"
  Volume group "vg_mpathc1" successfully created
# lvcreate -n "lv_${dev##*/}1" -l 100%FREE "vg_${dev##*/}1"
  Logical volume "lv_mpathc1" created.
# mkfs.xfs /dev/"vg_${dev##*/}1"/"lv_${dev##*/}1"
meta-data=/dev/vg_mpathc1/lv_mpathc1 isize=512    agcount=8, agsize=32640 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=261120, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
/mntにマウントしてみる。
# mount /dev/mapper/"vg_${dev##*/}1"-"lv_${dev##*/}1" /mnt/
# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
/dev/mapper/rhel-root                14G  1.1G   13G    8% /
devtmpfs                            908M     0  908M    0% /dev
tmpfs                               920M     0  920M    0% /dev/shm
tmpfs                               920M  8.9M  911M    1% /run
tmpfs                               920M     0  920M    0% /sys/fs/cgroup
/dev/sda1                          1014M  146M  869M   15% /boot
tmpfs                               184M     0  184M    0% /run/user/0
/dev/mapper/vg_mpathc1-lv_mpathc1  1017M   33M  985M    4% /mnt

まとめ

以上で設定は完了となる。iSCSIもDM-multipathも、何一つ設定方法を知らなかったので躊躇していたが、今回調査と検証をすることで設定手順を整理することができたので、今後は迷わずに設定をすることができそうだ。

参考

0 件のコメント:

コメントを投稿

人気の投稿