vm.gowatana.jp

NEOにほんごVMware(仮)

vSAN iSCSI ターゲットに Linux から接続してみる。(入門編3)

個人的な vSAN Advent Calendar 24日目です。

自宅ラボの vSAN 7.0 U 1 Advent Calendar 2020 - Adventar

今回は、vSAN iSCSI ターゲットに、マルチパスで接続してみます。

今回の環境

今回も、4ノードの vSAN 7.0 U1 クラスタです。

下記投稿のように、iSCSI ターゲット、LUN、イニシエータ グループを作成ずみです。

今回は、iSCSI ターゲットに 3つの LUN を作成してあります。

f:id:gowatana:20201225015925p:plain



iSCSI イニシエータ(クライアント)として、Linux を用意してあります。

[root@lab-vm-01 ~]# cat /etc/system-release
Oracle Linux Server release 7.9

Linux から vSAN iSCSI ターゲットへの接続(複数台の ESXi)

vSAN iSCSI ターゲットは、ESXi の VMkernel ポートで iSCSI LUN を提供します。今回は、3台の ESXi に接続することでマルチパス構成にしてみます。

iSCSI ターゲットへの接続

それでは、iSCSI ターゲットに接続します。

[root@lab-vm-01 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.41.171
192.168.41.171:3260,259 iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245
[root@lab-vm-01 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.41.172
192.168.41.172:3260,259 iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245
[root@lab-vm-01 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.41.173
192.168.41.173:3260,259 iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245
[root@lab-vm-01 ~]# iscsiadm -m node -p 192.168.41.171 --login
Logging in to [iface: default, target: iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245, portal: 192.168.41.171,3260] (multiple)
Login to [iface: default, target: iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245, portal: 192.168.41.171,3260] successful.
[root@lab-vm-01 ~]# iscsiadm -m node -p 192.168.41.172 --login
Logging in to [iface: default, target: iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245, portal: 192.168.41.172,3260] (multiple)
Login to [iface: default, target: iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245, portal: 192.168.41.172,3260] successful.
[root@lab-vm-01 ~]# iscsiadm -m node -p 192.168.41.173 --login
Logging in to [iface: default, target: iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245, portal: 192.168.41.173,3260] (multiple)
Login to [iface: default, target: iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245, portal: 192.168.41.173,3260] successful.

ターゲットに接続されました。

[root@lab-vm-01 ~]# iscsiadm -m session
tcp: [2] 192.168.41.171:3260,259 iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245 (non-flash)
tcp: [3] 192.168.41.172:3260,259 iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245 (non-flash)
tcp: [4] 192.168.41.173:3260,259 iqn.1998-01.com.vmware:52be41f45ddec495-da2d1e9c99234245 (non-flash)

Linux でのマルチパス LUN の認識

3つの LUN が接続されたはずなので確認すると、「3つの LUN x 3 経路」なので、9つのデバイスが認識されてしまいます。

[root@lab-vm-01 ~]# lsscsi
[0:0:0:0]    disk    VMware   Virtual disk     2.0   /dev/sda
[3:0:0:0]    cd/dvd  NECVMWar VMware SATA CD00 1.00  /dev/sr0
[33:0:0:0]   disk    VMware   Virtual SAN      0001  /dev/sdb
[33:0:0:1]   disk    VMware   Virtual SAN      0001  /dev/sdc
[33:0:0:2]   disk    VMware   Virtual SAN      0001  /dev/sdd
[34:0:0:0]   disk    VMware   Virtual SAN      0001  /dev/sde
[34:0:0:1]   disk    VMware   Virtual SAN      0001  /dev/sdf
[34:0:0:2]   disk    VMware   Virtual SAN      0001  /dev/sdg
[35:0:0:0]   disk    VMware   Virtual SAN      0001  /dev/sdh
[35:0:0:1]   disk    VMware   Virtual SAN      0001  /dev/sdi
[35:0:0:2]   disk    VMware   Virtual SAN      0001  /dev/sdj

lsblk では、下記のように見えます。

[root@lab-vm-01 ~]# lsblk --ascii
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdf           8:80   0   20G  0 disk
sdd           8:48   0   30G  0 disk
sdb           8:16   0   10G  0 disk
sdi           8:128  0   20G  0 disk
sr0          11:0    1 1024M  0 rom
sdg           8:96   0   30G  0 disk
sde           8:64   0   10G  0 disk
sdc           8:32   0   20G  0 disk
sda           8:0    0   16G  0 disk
|-sda2        8:2    0   15G  0 part
| |-ol-swap 252:1    0  1.6G  0 lvm  [SWAP]
| `-ol-root 252:0    0 13.4G  0 lvm  /
`-sda1        8:1    0    1G  0 part /boot
sdj           8:144  0   30G  0 disk
sdh           8:112  0   10G  0 disk

ソートしてみると、10G、20G、30G のデバイスが、3セット認識されていることが分かります。

[root@lab-vm-01 ~]# lsblk --ascii | grep ^sd | sort
sda           8:0    0   16G  0 disk
sdb           8:16   0   10G  0 disk
sdc           8:32   0   20G  0 disk
sdd           8:48   0   30G  0 disk
sde           8:64   0   10G  0 disk
sdf           8:80   0   20G  0 disk
sdg           8:96   0   30G  0 disk
sdh           8:112  0   10G  0 disk
sdi           8:128  0   20G  0 disk
sdj           8:144  0   30G  0 disk

ここで OS を再起動してみます。

[root@lab-vm-01 ~]# reboot

Linux では、デバイス名が認識順で付与されるので、再起動のたびに不規則に変わってしまいます。

[root@lab-vm-01 ~]# lsblk --ascii | grep ^sd | sort
sda           8:0    0   16G  0 disk
sdb           8:16   0   10G  0 disk
sdc           8:32   0   20G  0 disk
sdd           8:48   0   30G  0 disk
sde           8:64   0   10G  0 disk
sdf           8:80   0   10G  0 disk
sdg           8:96   0   20G  0 disk
sdh           8:112  0   20G  0 disk
sdi           8:128  0   30G  0 disk
sdj           8:144  0   30G  0 disk

マルチパス対応(multipathd)

このままでは、デバイス名の指定が困難なので、何かしらの方法でマルチパスに対応させます。そこで今回は、device-mapper-multipath をインストールします。

[root@lab-vm-01 ~]# yum install -y device-mapper-multipath
[root@lab-vm-01 ~]# mpathconf --enable
[root@lab-vm-01 ~]# systemctl enable multipathd
[root@lab-vm-01 ~]# systemctl start multipathd
[root@lab-vm-01 ~]# systemctl is-active multipathd
active

マルチパス対応のデバイス(mpatha ~ mpathc)が作成されました。

[root@lab-vm-01 ~]# lsblk --ascii
NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sdf           8:80   0   10G  0 disk
`-mpatha    252:2    0   10G  0 mpath
sdd           8:48   0   30G  0 disk
`-mpathc    252:4    0   30G  0 mpath
sdb           8:16   0   10G  0 disk
`-mpatha    252:2    0   10G  0 mpath
sdi           8:128  0   30G  0 disk
`-mpathc    252:4    0   30G  0 mpath
sr0          11:0    1 1024M  0 rom
sdg           8:96   0   20G  0 disk
`-mpathb    252:3    0   20G  0 mpath
sde           8:64   0   10G  0 disk
`-mpatha    252:2    0   10G  0 mpath
sdc           8:32   0   20G  0 disk
`-mpathb    252:3    0   20G  0 mpath
sda           8:0    0   16G  0 disk
|-sda2        8:2    0   15G  0 part
| |-ol-swap 252:1    0  1.6G  0 lvm   [SWAP]
| `-ol-root 252:0    0 13.4G  0 lvm   /
`-sda1        8:1    0    1G  0 part  /boot
sdj           8:144  0   30G  0 disk
`-mpathc    252:4    0   30G  0 mpath
sdh           8:112  0   20G  0 disk
`-mpathb    252:3    0   20G  0 mpath

multipath コマンドで、わかりやすくデバイス名とパスの対応を表示できます。

[root@lab-vm-01 ~]# multipath -ll

f:id:gowatana:20201225021014p:plain

ちなみに、デバイスの ID(1VMware_VITDEVID~)については、multipathd を起動しなくても、事前に確認できます。

[root@lab-vm-01 ~]# ls -l /dev/disk/by-id/scsi-1VMware_VITDEVID*
lrwxrwxrwx. 1 root root 9 12月 25 01:21 /dev/disk/by-id/scsi-1VMware_VITDEVID20a4e45fe40f887d0ff6005056b657dc -> ../../sdi
lrwxrwxrwx. 1 root root 9 12月 25 01:21 /dev/disk/by-id/scsi-1VMware_VITDEVID2aa4e45f3ee87555accf005056b657dc -> ../../sdj
lrwxrwxrwx. 1 root root 9 12月 25 01:21 /dev/disk/by-id/scsi-1VMware_VITDEVID9ed8e35f92c221295366005056b6509a -> ../../sdh

/dev/mapper/mpatha1 のようなデバイス名を指定することで、パスが切り替わっても同じ LUN にアクセスできます。

[root@lab-vm-01 ~]# echo '2048,,' | sfdisk -uS /dev/mapper/mpatha
[root@lab-vm-01 ~]# partprobe /dev/mapper/mpatha
[root@lab-vm-01 ~]# mkfs.xfs /dev/mapper/mpatha1
[root@lab-vm-01 ~]# mount /dev/mapper/mpatha1 /mnt
[root@lab-vm-01 ~]# df -h /mnt
ファイルシス        サイズ  使用  残り 使用% マウント位置
/dev/mapper/mpatha1    10G   33M   10G    1% /mnt

つづくかもしれない。