vSAN には、iSCSI Target を提供する機能があります。
これは物理マシンにブロック デバイスを提供する目的の機能のようで、
下記の KB によると、物理マシンの Oracle RAC でも利用してよいようです。
vSAN 6.5 iSCSI デバイスを使用するためのベスト プラクティス (2151966)
https://kb.vmware.com/s/article/2151966
そこで、ためしに Oracle Linux 7 から vSAN の iSCSI Target に接続してみました。
今回は機能確認のために仮想マシンの Linux から接続していますが、
現状では、仮想マシンの Oracle RAC は vSAN iSCSI Target のサポート対象外です。
vSAN で仮想マシンで RAC を構築する場合は、以前に投稿した(下記)ように、
共有ディスクは VMDK ファイルを共有する方式になります。(厳密な手順ではありませんので、参考まで)
PowerCLI で vSphere / vSAN 環境での Oracle RAC むけ VM を設定してみる。(2 Node 構成)
それでは iSCSI Target を構成して、Linux OS から接続してみます。
vSAN iSCSI Target の準備。
iSCSI Target は vSphere Web Client で構成できますが、今回も PowerCLI 10.0(Linux の)を利用します。
クラスタでは vSAN / iSCSI Target のサービスを有効にします。
デフォルトのポートは vmk1 を設定しています。
PS /home/gowatana> Get-VsanClusterConfiguration vsan-cluster-02 | Set-VsanClusterConfiguration -IscsiTargetServiceEnabled:$true -DefaultIscsiNetworkInterface vmk1
iSCSI Target のサービスが有効になりました。
PS /home/gowatana> Get-Cluster vsan-cluster-02 | Get-VsanClusterConfiguration | select VsanEnabled,IscsiTargetServiceEnabled | fl
VsanEnabled : True
IscsiTargetServiceEnabled : True
iSCSI Target を作成します。
PS /home/gowatana> Get-Cluster vsan-cluster-02 | New-VsanIscsiTarget -Name vsan-rac-target-01
IQN は、今回は自動生成されたものを使用します。LUN はまだゼロです。
PS /home/gowatana> Get-VsanIscsiTarget -Cluster vsan-cluster-02 -Name vsan-rac-target-01 | select IscsiQualifiedName,NetworkInterface,NumLuns | fl
IscsiQualifiedName : iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2
NetworkInterface : vmk1
NumLuns : 0
今回の環境では、iSCSI Initiator は vSAN クラスタに所属している ESXi ホストの vmk1 の IP アドレス宛に接続することになります。
PS /home/gowatana> Get-Cluster vsan-cluster-02 | Get-VMHost | Get-VMHostNetworkAdapter -Name vmk1 | select Name,VMHost,IP,SubnetMask | Sort-Object VMHost
Name VMHost IP SubnetMask
---- ------ -- ----------
vmk1 hv-n11.go-lab.jp 192.168.51.211 255.255.255.0
vmk1 hv-n12.go-lab.jp 192.168.51.212 255.255.255.0
vmk1 hv-n13.go-lab.jp 192.168.51.213 255.255.255.0
Target に LUN を作成します。今回は 3つ作成します。
PS /home/gowatana> New-VsanIscsiLun -Target vsan-rac-target-01 -Name lun0 -CapacityGB 30
PS /home/gowatana> New-VsanIscsiLun -Target vsan-rac-target-01 -Name lun1 -CapacityGB 30
PS /home/gowatana> New-VsanIscsiLun -Target vsan-rac-target-01 -Name lun2 -CapacityGB 30
Target の LUN 数が 3になりました。
PS /home/gowatana> Get-VsanIscsiTarget -Cluster vsan-cluster-02 -Name vsan-rac-target-01 | select IscsiQualifiedName,NetworkInterface,NumLuns | fl
IscsiQualifiedName : iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2
NetworkInterface : vmk1
NumLuns : 3
iSCSI Initiator Group を作成して、Target への接続を許可する Initiator の IQN を追加します。
今回は、iSCSI Initiator (クライアントとなる Linux 側)の IQN をあらかじめ決定しておきます。
PS /home/gowatana> Get-Cluster vsan-cluster-02 | New-VsanIscsiInitiatorGroup -Name iqn-rac-group-01
PS /home/gowatana> Get-Cluster vsan-cluster-02 | Get-VsanIscsiInitiatorGroup -Name iqn-rac-group-01 | Set-VsanIscsiInitiatorGroup -AddInitiator iqn.1988-12.com.oracle:db11
PS /home/gowatana> Get-Cluster vsan-cluster-02 | Get-VsanIscsiInitiatorGroup -Name iqn-rac-group-01 | Set-VsanIscsiInitiatorGroup -AddInitiator iqn.1988-12.com.oracle:db12
Initiator Group に IQN が登録されました。
PS /home/gowatana> Get-Cluster vsan-cluster-02 | Get-VsanIscsiInitiatorGroup -Name iqn-rac-group-01 | select InitiatorName
InitiatorName
-------------
{iqn.1988-12.com.oracle:db11, iqn.1988-12.com.oracle:db12}
Target に Initiator Group を関連付けます。
PS /home/gowatana> Get-Cluster vsan-cluster-02 | Get-VsanIscsiTarget -Name vsan-rac-target-01 | New-VsanIscsiInitiatorGroupTargetAssociation -InitiatorGroup iqn-rac-group-01
vSphere Web Client で見ると、下記のように設定してきた内容が反映されています。
Target には、作成したとおりの LUN が接続されています。
今回はふれていませんが、GUI から見ると仮想マシンと同様にストレージ ポリシーを利用できることもわかりやすいと思います。
Initiator Group も Target に割り当てられています。
iSCSI Target に接続するクライアント。
今回は、物理マシンのかわりに(製品としてはサポート外ですが)仮想マシンから接続してみます。
Oracle Linux 7 のゲストを 2台用意しています。
PS /home/gowatana> Get-VM db1? | Get-VMGuest | select VM,State,OSFullName | Sort-Object VM
VM State OSFullName
-- ----- ----------
db11 Running Oracle Linux 7 (64-bit)
db12 Running Oracle Linux 7 (64-bit)
vNIC はネットワークセグメントごとに 1つずつ用意しています。
Linux では Bondig を構成していません。
PS /home/gowatana> Get-VM db1? | Get-NetworkAdapter | select Parent,Name,NetworkName | Sort-Object Parent,Name
Parent Name NetworkName
------ ---- -----------
db11 Network adapter 1 dvpg-vds01-vlan-1011
db11 Network adapter 2 dvpg-vds01-vlan-0041
db11 Network adapter 3 dvpg-vds01-vlan-0051
db12 Network adapter 1 dvpg-vds01-vlan-1011
db12 Network adapter 2 dvpg-vds01-vlan-0041
db12 Network adapter 3 dvpg-vds01-vlan-0051
ゲスト OS です。
[root@db11 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.4
それぞれ、iSCSI 接続前は下記のようにディスクを認識しています。
[root@db11 ~]# lsscsi
[2:0:0:0] disk VMware Virtual disk 2.0 /dev/sda
[2:0:1:0] disk VMware Virtual disk 2.0 /dev/sdb
[3:0:0:0] cd/dvd NECVMWar VMware SATA CD00 1.00 /dev/sr0
[root@db11 ~]# lsblk -l /dev/sd?
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16G 0 disk
sda1 8:1 0 1G 0 part /boot
sda2 8:2 0 15G 0 part
ol-root 249:0 0 13.4G 0 lvm /
ol-swap 249:1 0 1.6G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
vg01-data01 249:2 0 20G 0 lvm /u01
iSCSI Initiator の準備。(Linux OS)
iSCSI Initiator をインストールします。
[root@db11 ~]# yum install -y -q iscsi-initiator-utils
[root@db11 ~]# rpm -q iscsi-initiator-utils
iscsi-initiator-utils-6.2.0.874-4.0.1.el7.x86_64
IQN を Initiator Group に事前登録したものに変更しておきます。
[root@db11 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1988-12.com.oracle:89b502eafaa
[root@db11 ~]# echo 'InitiatorName=iqn.1988-12.com.oracle:db11' > /etc/iscsi/initiatorname.iscsi
[root@db11 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1988-12.com.oracle:db11
Initiator のサービスを起動しておきます。
(ただ、実は後で自動起動されます)
[root@db11 ~]# systemctl enable iscsid
Created symlink from /etc/systemd/system/multi-user.target.wants/iscsid.service to /usr/lib/systemd/system/iscsid.service.
[root@db11 ~]# systemctl start iscsid
[root@db11 ~]# systemctl is-active iscsid
active
iSCSI Target への接続。
まず、vSAN クラスタ内のホストのうち 1台に接続してみます。
iSCSI Target のアドレスで discovery してから login します。
[root@db11 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.51.211
192.168.51.211:3260,257 iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2
[root@db11 ~]# iscsiadm -m node -T iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2 -p 192.168.51.211 --login
Logging in to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.211,3260] (multiple)
Login to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.211,3260] successful.
vSAN による iSCSI の LUN がみえるようになります。
[root@db11 ~]# lsscsi
[2:0:0:0] disk VMware Virtual disk 2.0 /dev/sda
[2:0:1:0] disk VMware Virtual disk 2.0 /dev/sdb
[3:0:0:0] cd/dvd NECVMWar VMware SATA CD00 1.00 /dev/sr0
[33:0:0:0] disk VMware Virtual SAN 0001 /dev/sdc
[33:0:0:1] disk VMware Virtual SAN 0001 /dev/sdd
[33:0:0:2] disk VMware Virtual SAN 0001 /dev/sde
接続先ターゲットが 1ホストだけではそのホストの障害にたえられないため、
のこりの 2台のホストにも接続してみます。
[root@db11 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.51.212
192.168.51.212:3260,258 iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2
[root@db11 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.51.213
192.168.51.213:3260,258 iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2
[root@db11 ~]# iscsiadm -m node -T iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2 --login
Logging in to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.212,3260] (multiple)
Logging in to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.213,3260] (multiple)
Login to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.212,3260] successful.
Login to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.213,3260] successful.
この Target には LUN を3つ作成していて、3 経路で接続しているので
9 つのデバイス(/dev/sdc ~ /dev/sdc)として認識されました。
各行の末尾にある文字列を見ると、どのデバイスが同じ LUN なのか判別できます。
例では、実際の LUN は下記の 3つだけです。
- 1VMware_VITDEVID3a37b75af079a90e5e1e0050568adec3
- 1VMware_VITDEVID6737b75a3cc0733f381a0050568adec3
- 1VMware_VITDEVID7d37b75afa00ba22f8ea0050568adec3
[root@db11 ~]# lsscsi -i
[2:0:0:0] disk VMware Virtual disk 2.0 /dev/sda -
[2:0:1:0] disk VMware Virtual disk 2.0 /dev/sdb -
[3:0:0:0] cd/dvd NECVMWar VMware SATA CD00 1.00 /dev/sr0 -
[33:0:0:0] disk VMware Virtual SAN 0001 /dev/sdc 1VMware_VITDEVID3a37b75af079a90e5e1e0050568adec3
[33:0:0:1] disk VMware Virtual SAN 0001 /dev/sde 1VMware_VITDEVID6737b75a3cc0733f381a0050568adec3
[33:0:0:2] disk VMware Virtual SAN 0001 /dev/sdh 1VMware_VITDEVID7d37b75afa00ba22f8ea0050568adec3
[34:0:0:0] disk VMware Virtual SAN 0001 /dev/sdd 1VMware_VITDEVID3a37b75af079a90e5e1e0050568adec3
[34:0:0:1] disk VMware Virtual SAN 0001 /dev/sdg 1VMware_VITDEVID6737b75a3cc0733f381a0050568adec3
[34:0:0:2] disk VMware Virtual SAN 0001 /dev/sdi 1VMware_VITDEVID7d37b75afa00ba22f8ea0050568adec3
[35:0:0:0] disk VMware Virtual SAN 0001 /dev/sdf 1VMware_VITDEVID3a37b75af079a90e5e1e0050568adec3
[35:0:0:1] disk VMware Virtual SAN 0001 /dev/sdj 1VMware_VITDEVID6737b75a3cc0733f381a0050568adec3
[35:0:0:2] disk VMware Virtual SAN 0001 /dev/sdk 1VMware_VITDEVID7d37b75afa00ba22f8ea0050568adec3
マルチパス デバイスの構成。(DM Multipath)
複数経路で LUN にアクセスしている iSCSI Initiator で /dev/sdX というデバイスのまま利用していると、
いずれかのパスで障害があったときに経路を切り替えることができません。
そこで、Linux での一般的な方法でマルチパス デバイスを構成してみます。
ここでは、Device Mapper Multipath(DM Multipath) を利用します。
device-mapper-multipath をインストールします。
[root@db11 ~]# yum install -y -q device-mapper-multipath
[root@db11 ~]# rpm -q device-mapper-multipath
device-mapper-multipath-0.4.9-111.el7_4.2.x86_64
そして構成&有効化します。
[root@db11 ~]# mpathconf --enable --with_multipathd y
[root@db11 ~]# systemctl is-active multipathd
active
[root@db11 ~]# mpathconf
multipath is enabled
find_multipaths is enabled
user_friendly_names is enabled
dm_multipath module is loaded
multipathd is running
マルチパスデバイス(/dev/mapper/mpatha ~ /dev/mapper/mpathc)が構成されました。
下記のように Virtual SAN(vSAN)の LUN による /dev/sdb ~ /dev/sdk が束ねられている様子が分かります。
[root@db11 ~]# multipath -ll
mpathc (1VMware_VITDEVID7d37b75afa00ba22f8ea0050568adec3) dm-5 VMware ,Virtual SAN
size=30G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 33:0:0:2 sde 8:64 active ready running
|-+- policy='service-time 0' prio=1 status=enabled
| `- 34:0:0:2 sdi 8:128 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
`- 35:0:0:2 sdk 8:160 active ready running
mpathb (1VMware_VITDEVID6737b75a3cc0733f381a0050568adec3) dm-4 VMware ,Virtual SAN
size=30G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 33:0:0:1 sdd 8:48 active ready running
|-+- policy='service-time 0' prio=1 status=enabled
| `- 34:0:0:1 sdg 8:96 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
`- 35:0:0:1 sdj 8:144 active ready running
mpatha (1VMware_VITDEVID3a37b75af079a90e5e1e0050568adec3) dm-3 VMware ,Virtual SAN
size=30G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 33:0:0:0 sdc 8:32 active ready running
|-+- policy='service-time 0' prio=1 status=enabled
| `- 34:0:0:0 sdf 8:80 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
`- 35:0:0:0 sdh 8:112 active ready running
[root@db11 ~]#
iSCSI Target への接続。(Linux#2)
同様に、もう1台の Linux OS から iSCSI Target に接続します。
[root@db12 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.51.211
192.168.51.211:3260,257 iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2
[root@db12 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.51.212
192.168.51.212:3260,258 iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2
[root@db12 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.51.213
192.168.51.213:3260,258 iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2
[root@db12 ~]# iscsiadm -m node -T iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2 --login
Logging in to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.211,3260] (multiple)
Logging in to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.212,3260] (multiple)
Logging in to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.213,3260] (multiple)
Login to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.211,3260] successful.
Login to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.212,3260] successful.
Login to [iface: default, target: iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2, portal: 192.168.51.213,3260] successful.
[root@db12 ~]# mpathconf --enable --with_multipathd y
[root@db12 ~]#
iSCSI Target に接続すると、1台目とはそれぞれの LUN のデバイス名(/dev/sdb~/dev/sdk)が異なっていることが分かります。
[root@db12 ~]# multipath -ll
mpathc (1VMware_VITDEVID7d37b75afa00ba22f8ea0050568adec3) dm-5 VMware ,Virtual SAN
size=30G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 33:0:0:2 sdi 8:128 active ready running
|-+- policy='service-time 0' prio=1 status=enabled
| `- 34:0:0:2 sdj 8:144 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
`- 35:0:0:2 sdk 8:160 active ready running
mpathb (1VMware_VITDEVID6737b75a3cc0733f381a0050568adec3) dm-4 VMware ,Virtual SAN
size=30G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 33:0:0:1 sdf 8:80 active ready running
|-+- policy='service-time 0' prio=1 status=enabled
| `- 34:0:0:1 sdg 8:96 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
`- 35:0:0:1 sdh 8:112 active ready running
mpatha (1VMware_VITDEVID3a37b75af079a90e5e1e0050568adec3) dm-3 VMware ,Virtual SAN
size=30G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 33:0:0:0 sdc 8:32 active ready running
|-+- policy='service-time 0' prio=1 status=enabled
| `- 34:0:0:0 sdd 8:48 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
`- 35:0:0:0 sde 8:64 active ready running
[root@db12 ~]#
LUN のデバイス名ずれの様子について。
/dev/sdX という名前は、接続した Linux OS ごとに異なる状態になります。
しかもそのままでは永続化されない(OS 再起動などで名前が変わる)ものです。
LUN の番号ごとに、接続パスをもとにした /dev/disk/by-path 配下のデバイス名を見てみます。
Target のアドレスと sdX のデバイス名をめやすに見ると、
ノードごとに認識している名前がずれていることが判別しやすいと思います。
まず Linux OS #1 での LUN とデバイス名の対応です。
[root@db11 ~]# ls -l /dev/disk/by-path/ip-* | grep lun-0
lrwxrwxrwx. 1 root root 9 3月 25 16:04 /dev/disk/by-path/ip-192.168.51.211:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-0 -> ../../sdc
lrwxrwxrwx. 1 root root 9 3月 25 16:04 /dev/disk/by-path/ip-192.168.51.212:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-0 -> ../../sdf
lrwxrwxrwx. 1 root root 9 3月 25 16:04 /dev/disk/by-path/ip-192.168.51.213:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-0 -> ../../sdh
[root@db11 ~]# ls -l /dev/disk/by-path/ip-* | grep lun-1
lrwxrwxrwx. 1 root root 9 3月 25 16:04 /dev/disk/by-path/ip-192.168.51.211:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-1 -> ../../sdd
lrwxrwxrwx. 1 root root 9 3月 25 16:04 /dev/disk/by-path/ip-192.168.51.212:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-1 -> ../../sdg
lrwxrwxrwx. 1 root root 9 3月 25 16:04 /dev/disk/by-path/ip-192.168.51.213:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-1 -> ../../sdj
[root@db11 ~]# ls -l /dev/disk/by-path/ip-* | grep lun-2
lrwxrwxrwx. 1 root root 9 3月 25 16:04 /dev/disk/by-path/ip-192.168.51.211:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-2 -> ../../sde
lrwxrwxrwx. 1 root root 9 3月 25 16:04 /dev/disk/by-path/ip-192.168.51.212:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-2 -> ../../sdi
lrwxrwxrwx. 1 root root 9 3月 25 16:04 /dev/disk/by-path/ip-192.168.51.213:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-2 -> ../../sdk
そして Linux OS #2 での LUN とデバイス名の対応です。
[root@db12 ~]# ls -l /dev/disk/by-path/ip-* | grep lun-0
lrwxrwxrwx. 1 root root 9 3月 25 16:16 /dev/disk/by-path/ip-192.168.51.211:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-0 -> ../../sdc
lrwxrwxrwx. 1 root root 9 3月 25 16:16 /dev/disk/by-path/ip-192.168.51.212:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-0 -> ../../sdd
lrwxrwxrwx. 1 root root 9 3月 25 16:16 /dev/disk/by-path/ip-192.168.51.213:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-0 -> ../../sde
[root@db12 ~]# ls -l /dev/disk/by-path/ip-* | grep lun-1
lrwxrwxrwx. 1 root root 9 3月 25 16:16 /dev/disk/by-path/ip-192.168.51.211:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-1 -> ../../sdf
lrwxrwxrwx. 1 root root 9 3月 25 16:16 /dev/disk/by-path/ip-192.168.51.212:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-1 -> ../../sdg
lrwxrwxrwx. 1 root root 9 3月 25 16:16 /dev/disk/by-path/ip-192.168.51.213:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-1 -> ../../sdh
[root@db12 ~]# ls -l /dev/disk/by-path/ip-* | grep lun-2
lrwxrwxrwx. 1 root root 9 3月 25 16:16 /dev/disk/by-path/ip-192.168.51.211:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-2 -> ../../sdi
lrwxrwxrwx. 1 root root 9 3月 25 16:16 /dev/disk/by-path/ip-192.168.51.212:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-2 -> ../../sdj
lrwxrwxrwx. 1 root root 9 3月 25 16:16 /dev/disk/by-path/ip-192.168.51.213:3260-iscsi-iqn.1998-01.com.vmware.52ecb04fd04ccfd2-0385259a575100b2-lun-2 -> ../../sdk
このような問題に対処するために、DM Multipath を利用します。
ほかにも、共有されたデバイスを識別しやすくするためにラベルを付与する仕組みがあったりします。
たとえば、Oracle RAC(で利用される自動ストレージ管理 / ASM)では ASMLib や ASM Filter Driver(ASMFD)
といったライブラリ / ドライバがあり、それらがラベルづけの機能も持ちます。
たとえば ASMFD では下記のようにラベルを付与でき、ノードをまたいでデバイス識別をしやすくします。
(イメージをお伝えするということで、いろいろ手順は省略しています。)
[root@db11 ~]# asmcmd afd_label DATA1 /dev/mapper/mpatha --init
root@db11 ~]# asmcmd afd_label DATA2 /dev/mapper/mpathb --init
[root@db11 ~]# asmcmd afd_label DATA3 /dev/mapper/mpathc --init
[root@db11 ~]# asmcmd afd_lslbl '/dev/mapper/mpath?'
--------------------------------------------------------------------------------
Label Duplicate Path
================================================================================
DATA1 /dev/mapper/mpatha
DATA2 /dev/mapper/mpathb
DATA3 /dev/mapper/mpathc
[root@db11 grid]#
vSAN の iSCSI Target を利用する場合は、耐障害性 / 可用性を考慮すると
接続先として複数の(ESXi ホストの) IP アドレスを指定することになるはずなのです。
実際に利用するとなると Initiator 側では、マルチパス構成やノードをまたいだデバイス共有に対応する工夫が必要になりそうです。
以上、Linux から vSAN の iSCSI Target に接続してみる話でした。