複数の Linux OS から vSAN の iSCSI Target にマルチパス接続してみる。(Oracle RAC などむけ)

複数の Linux OS から vSAN の iSCSI Target にマルチパス接続してみる。(Oracle RAC などむけ)

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 から見ると仮想マシンと同様にストレージ ポリシーを利用できることもわかりやすいと思います。

vsan-iscsi-01.png

Initiator Group も Target に割り当てられています。

vsan-iscsi-02.png

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/mpatha1 --init

[root@db11 ~]# asmcmd afd_label DATA2 /dev/mapper/mpathb1 --init

[root@db11 ~]# asmcmd afd_label DATA3 /dev/mapper/mpathc1 --init

[root@db11 ~]# asmcmd afd_lslbl '/dev/mapper/mpath*'

--------------------------------------------------------------------------------

Label                     Duplicate  Path

================================================================================

DATA1                                 /dev/mapper/mpatha1

DATA2                                 /dev/mapper/mpathb1

DATA3                                 /dev/mapper/mpathc1

[root@db11 ~]#

vSAN の iSCSI Target を利用する場合は、耐障害性 / 可用性を考慮すると

接続先として複数の(ESXi ホストの) IP アドレスを指定することになるはずなのです。

実際に利用するとなると Initiator 側では、マルチパス構成やノードをまたいだデバイス共有に対応する工夫が必要になりそうです。

以上、Linux から vSAN の iSCSI Target に接続してみる話でした。

Version history
Revision #:
1 of 1
Last update:
‎03-25-2018 07:14 AM
Updated by: