1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ONTAP管理操作】iSCSI用Data LIFのActive/Active化について

1
Last updated at Posted at 2026-08-28

はじめに

ONTAP 9.19.1からA70などのAFF機器では、iSCSIおよびNVMe/TCPプロトコルにおいてActive/ActiveなMultipath構成をサポートするようになってます。
この機能では、LIFを構成するPortに異常を検知した際には、LIFが自動的に別のPortへ移行する仕組みを採用する事で、最適化されたPathへの切り替えが迅速に行われ、Failover影響を最小限に抑えます。
本記事ではLinux環境のActive/Active化したiSCSI構成の作成手順について記載いたします。

006.png

Active/Active化における制約事項

利用にあたっての詳細な制約事項については、マニュアルを参照頂ければと思いますが、要点としては以下の内容になります。

  • ONTAP9.19.1で新規作成したSVMのみ利用可能
    (既存構成からの変換はできない)
  • High Availability構成間におけるActive/Active化
    (4 Node間で自由にLIF移動できるということではない)

記事における環境情報

本記事では、以下の環境で実施した内容となります。
分かり易くするために、Network構成は単純化しています。

  • ONTAP:9.19.1 (A400の2 Node構成)
  • Red Hat Enterprise Linux 9.8
qiita-square

iSCSI用のActive/Active環境作成手順

1. SVMの作成及び設定

1-1. SVMの新規作成

san-multipathingをactive-activeとして指定し、SVMの作成を実施します。

> vserver create -vserver iscsi_test01 -subtype default -san-multipathing active-active
[Job 3058] Job succeeded:
Vserver creation completed.


# 状態の確認
> vserver show -vserver iscsi_test01 -fields san-multipathing
vserver      san-multipathing
------------ ----------------
iscsi_test01 active-active

1-2. SVMへLIFの作成

各NodeをHomeとしたiSCSi用のLIFを作成します。
作成時はfailover-policy指定することなく、sfo-partner-onlyで作成されます。

# Node1用のLIF
> net int create -vserver iscsi_test01 -lif data01 -service-policy default-data-iscsi -address 172.16.21.55 -netmask 255.255.255.0 -home-node PS-A400-01 -home-port a0a-21
  (network interface create)

# Node2用のLIF
> net int create -vserver iscsi_test01 -lif data02 -service-policy default-data-iscsi -address 172.16.21.56 -netmask 255.255.255.0 -home-node PS-A400-02 -home-port a0a-21
  (network interface create)


# 状態の確認
> net int show -vserver iscsi_test01 -fields address,service-policy,curr-node,curr-port,failover-policy
  (network interface show)
vserver      lif    service-policy     address      curr-node  curr-port failover-policy
------------ ------ ------------------ ------------ ---------- --------- ----------------
iscsi_test01 data01 default-data-iscsi 172.16.21.55 PS-A400-01 a0a-21    sfo-partner-only
iscsi_test01 data02 default-data-iscsi 172.16.21.56 PS-A400-02 a0a-21    sfo-partner-only
2 entries were displayed.

1-3. VolumeとLUNの作成

本記事では、シンプロ構成でVolumeとLUNを作成します。
また、容量溢れが起きないように、pace-allocationも有効化しておきます。
(LinuxのファイルシステムとONTAP上のWAFLの空きを同期させる)

# Volumeの作成
> volume create -vserver iscsi_test01 -volume iscsivol01 -state online -aggregate aggr1_node1 -size 10g -space-guarantee none -snapshot-policy none
[Job 3059] Job succeeded: Successful


# LUNの作成
> lun create -vserver iscsi_test01 -path /vol/iscsivol01/lun01 -size 8g -ostype linux -space-reserve disabled -space-allocation enabled

Created a LUN of size 8g (8589934592)

1-4. iSCSIの有効化

SVMへiSCSIを有効化させます。

> iscsi create -vserver iscsi_test01:

1-5. igroupの作成とLUNとのMapping

igroupの作成は実施しますが、Linux側ではiscsiに必要なモジュールをまだ導入していないので、Initiator登録は後で実施します。

# igroupの作成
> igroup create -vserver iscsi_test01 -igroup ig01 -protocol iscsi -ostype linux


# LunとのMapping
> lun mapping create -vserver iscsi_test01 -path /vol/iscsivol01/lun01 -igroup ig01


# LunとのMapping確認
> lun show -m -vserver iscsi_test01
Vserver    Path                                      Igroup   LUN ID  Protocol
---------- ----------------------------------------  -------  ------  --------
iscsi_test01
           /vol/iscsivol01/lun01                     ig01          0  iscsi

2. Linux側のiSCSI設定

2-1. iSCSI Initiatorの導入

iSCSI Initiatorが必要になるので、iscsi-initiator-utilsの導入を実施します。

> sudo dnf install iscsi-initiator-utils

サブスクリプション管理リポジトリーを更新しています。
<中略>
完了しました!


# iscsidサービスの有効化
> sudo systemctl start iscsid

> sudo systemctl enable iscsid
Created symlink /etc/systemd/system/multi-user.target.wants/iscsid.service → /usr/lib/systemd/system/iscsid.service

2-2. ONTAPのigroupへInitiatorの追加

Linux側のIQN(iSCSI Qualified Name)を確認します。

> cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:982ba056d7a

Linux側のIQNが確認できるようになったので、ONTAP側でigroupへIQNの追加を実施します。

# ONTAP側で操作
> igroup add -vserver iscsi_test01 -igroup ig01 -initiator iqn.1994-05.com.redhat:982ba056d7a

2-3. iSCSI Targetの探索

ONTAPで作成したiSCSI用SVMの探索を実施します。

> sudo iscsiadm -m discovery -t sendtargets -p 172.16.21.55
172.16.21.55:3260,1048 iqn.1992-08.com.netapp:sn.968f261ca1d511f1ba79d039ead56cfd:vs.36
172.16.21.56:3260,1049 iqn.1992-08.com.netapp:sn.968f261ca1d511f1ba79d039ead56cfd:vs.36

2-4. iSCSI Targetにログイン

探索したiSCSI Target(SVM)へloginを実施します。

> sudo iscsiadm -m node --login -p 172.16.21.55
Login to [iface: default, target: iqn.1992-08.com.netapp:sn.968f261ca1d511f1ba79d039ead56cfd:vs.36, portal: 172.16.21.55,3260] successful.


> sudo iscsiadm -m node --login -p 172.16.21.56
Login to [iface: default, target: iqn.1992-08.com.netapp:sn.968f261ca1d511f1ba79d039ead56cfd:vs.36, portal: 172.16.21.56,3260] successful.


# ログインセッションが確立したことを確認
> sudo iscsiadm -m session
tcp: [1] 172.16.21.55:3260,1048 iqn.1992-08.com.netapp:sn.968f261ca1d511f1ba79d039ead56cfd:vs.36 (non-flash)
tcp: [2] 172.16.21.56:3260,1049 iqn.1992-08.com.netapp:sn.968f261ca1d511f1ba79d039ead56cfd:vs.36 (non-flash)

2-5. ONTAPのLUNデバイスの確認

fdiskコマンドを実行するとONTAPに作成してあるLUNが見えるので、確認できたデバイスのwwidを確認しておきます。
(後のMultipath設定の部分で利用)

まだMultipathの設定は実施していないので、同じLUNが別デバイスとして2つ見えてるはずです。

qiita-square
> sudo fdisk -l
<中略>
ディスク /dev/sdb: 8 GiB, 8589934592 バイト, 16777216 セクタ
ディスク型式: LUN C-Mode
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 65536 バイト


ディスク /dev/sdc: 8 GiB, 8589934592 バイト, 16777216 セクタ
ディスク型式: LUN C-Mode
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 65536 バイト
> sudo /lib/udev/scsi_id --whitelisted --device=/dev/sdb
3600a0980383152454f242f3845393573

> sudo /lib/udev/scsi_id --whitelisted --device=/dev/sdc
3600a0980383152454f242f3845393573

3. Linux側でMultipath設定

3-1. device-mapper-multipathの導入

> sudo dnf install device-mapper-multipath
サブスクリプション管理リポジトリーを更新しています。
<中略>
インストール済み:
  device-mapper-multipath-0.8.7-45.el9.x86_64                                 device-mapper-multipath-libs-0.8.7-45.el9.x86_64
完了しました!


# multipathサービスの有効化
> sudo systemctl start multipathd

> sudo systemctl enable multipathd

3-2. Multipathの設定

Linuxのroot領域は ONTAP上のLUNでは無く、本記事ではMultipath設定にする必要が無いので、multipath.confのblacklistの項目に追記を行います。
追記に必要なroot領域のwwidを確認しておきます。

> sudo /lib/udev/scsi_id --whitelisted --device=/dev/sda
3600224807514249494f4b536145885eb

multipath.confの修正を実施しますが、本記事では以下の内容を加味して修正しています。

  • root領域は対象外なので、black listに追記
  • 認識するONTAP LUNに対してmpathXXというMultipath Device名となるように設定
    (指定しない場合は、長い英数字で表示)
  • path_selectorは記載しないので、デフォルトのround-robin 0を利用
# multipathの設定ファイルを編集
> cat /etc/multipath.conf

defaults {
        user_friendly_names yes
        find_multipaths yes
}

devices {
   device {
      vendor         "NETAPP  "
      product         "LUN.*"
      no_path_retry     queue
      path_checker      tur
   }
}


blacklist {
            wwid       3600224807514249494f4b536145885eb
            devnode    "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
            devnode    "^hd[a-z]"
            devnode     "^cciss.*"
}
multipaths {
            multipath {
                       wwid                 3600a0980383152454f242f3845393573
                       alias                mpath0
            }
}

3-3. Multipathの認識

マルチパスデバイスの一覧を更新してから、パスの状態を確認します。

qiita-square

表示されるPathがactiveのみなっていることが確認できるかと思います。

> sudo multipath -r

> sudo multipath -ll
mpath0 (3600a0980383152454f242f3845393573) dm-3 NETAPP,LUN C-Mode
size=8.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=50 status=active
  |- 2:0:0:0 sdc 8:32 active ready running
  `- 3:0:0:0 sdb 8:16 active ready running

ONTAP9.19.1以前だと以下のようにactiveとenabledと表示されていたかと思います。

> multipath -ll
mpath1 (3600a098038313951683f576a526d3138) dm-5 NETAPP,LUN C-Mode
size=3.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 4:0:0:1 sde 8:64 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  `- 5:0:0:1 sdg 8:96 active ready running

4. クライアントからのアクセス

LUNからファイルシステムを作成し、アクセス時に両Pathを使用していることを確認するために、まずはパーティション作成を実施します。

4-1. ファイルシステムの作成とmount

> sudo fdisk /dev/mapper/mpath0
<中略>
新しい DOS ディスクラベルを作成しました。識別子は 0x73dac415 です。

コマンド (m でヘルプ): n
パーティションタイプ
   p   基本パーティション (0 プライマリ, 0 拡張, 4 空き)
   e   拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (1-4, 既定値 1): 1
最初のセクタ (2048-16777215, 既定値 2048):
最終セクタ, +/-セクタ番号 または +/-サイズ{K,M,G,T,P} (2048-16777215, 既定値 16777215):

新しいパーティション 1 をタイプ Linux、サイズ 8 GiB で作成しました。

作成したパーティションからファイルシステムを作成します。

> sudo mkfs.ext4 /dev/mapper/mpath0p1
<中略>
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

ファイルシステムをmountします。

# mountポイントの作成
> sudo mkdir /ontap
> sudo chmod 777 /ontap


# mountを実施と確認
> sudo mount /dev/mapper/mpath0p1 /ontap
> df -h /ontap
ファイルシス         サイズ  使用  残り 使用% マウント位置
/dev/mapper/mpath0p1   7.8G   24K  7.4G    1% /ontap

4-2. fioで負荷を掛けて両パスを使用している事の確認

Linuxからfioで負荷を掛けた際にONTAP側の両Node間で負荷を確認します。
均等に負荷が掛かっているか確認するため、ONTAP上のLUNにQoSを設定しNetworkのPortがボトルネックにならない形としています。

qiita-square
# 最大100mb/secのPolicyが作成されている事の確認
> qos policy-group show -vserver iscsi_test01 -policy-group policy01 -fields max-throughput
policy-group max-throughput
------------ --------------
policy01     100MB/s


# 作成したPolicyがLUNに設定されている事の確認
> lun show -vserver iscsi_test01 -fields qos-policy-group
vserver      path                  qos-policy-group
------------ --------------------- ----------------
iscsi_test01 /vol/iscsivol01/lun01 policy01

Linuxからfioで負荷を掛け、その際の両Node間で負荷を確認します。

# fioによる負荷掛け
> sudo fio --directory="/ontap" --name=random-write --ioengine=libaio --rw=randwrite --bs=16k --size=1G --numjobs=4 --time_based --runtime=60s
random-write: (g=0): rw=randwrite, bs=(R) 16.0KiB-16.0KiB, (W) 16.0KiB-16.0KiB, (T) 16.0KiB-16.0KiB, ioengine=libaio, iodepth=1
...
fio-3.35
Starting 4 processes
Jobs: 4 (f=4): [w(4)][52.5%][eta 00m:28s]

各Nodeの負荷状況を確認します。

# Node1側の負荷
> node run -node PS-A400-01 sysstat -i 1
 CPU     NFS    CIFS   iSCSI     Net   kB/s    Disk   kB/s   iSCSI   kB/s  Cache
                                  in    out    read  write      in    out    age
  2%       0       0       0      17     10       0      0       0      0    15
  3%       0       0       0       9      4       0      0       0      0    15
  4%       0       0     200    4156     47    4712     24    4407      0    15
  8%       0       0    2230   66979    426    1032  11664   62931      0    15
 11%       0       0    2317   65215    430       0     24   61997      0    15
  9%       0       0    1894   65151    399      12      0   61706      0    15
  8%       0       0    2071   65036    405    1708   3152   61850      0    15
  8%       0       0    1488   63680    355       0     24   60658      0    15
  9%       0       0    1793   64111    377      24     12   61346      0    15
<中略>


# Node2側の負荷
> node run -node PS-A400-02 sysstat -i 1
 CPU     NFS    CIFS   iSCSI     Net   kB/s    Disk   kB/s   iSCSI   kB/s  Cache
                                  in    out    read  write      in    out    age
  1%       0       0       0      12     12     404    960       0      0   >60
  4%       0       0       1       9      4      12      0       0      0   >60
  3%       0       0    1459   30502    217       0     24   38289      0   >60
  3%       0       0    2205   66229    405      12     12   62882      0   >60
  6%       0       0    2075   65828    414       0     24   62194      0   >60
  4%       0       0    1869   64588    385       0      0   61665      0   >60
  3%       0       0    1862   64628    386      24      0   61366      0   >60
  6%       0       0    1584   64513    354       0     24   61452      0   >60
  3%       0       0    1611   64990    360       0     12   61633      0   >60
  <中略>

4-3. LIFの移動を実施した際の負荷確認

ONTAP側でNode1側のLIFをNode2に移動した際、Node2側でもI/Oの停止が発生しない事を確認します。
合わせて、Node2側のNetwork負荷が最終的に倍増する点も確認します。
(100mb/secが片Nodeに集中する点を確認)

qiita-square
# fio実行中にLIFのMigrate
> net int migrate -vserver iscsi_test01 -lif data01 -destination-node PS-A400-02 -destination-port a0a-21
  (network interface migrate)


# LIFが移動している事の確認
> net int show -vserver iscsi_test01
  (network interface show)
            Logical    Status     Network            Current       Current Is
Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
----------- ---------- ---------- ------------------ ------------- ------- ----
iscsi_test01
            data01       up/up    172.16.21.55/24    PS-A400-02    a0a-21  false
            data02       up/up    172.16.21.56/24    PS-A400-02    a0a-21  true
2 entries were displayed.

# Node1側の負荷
> node run -node PS-A400-01 sysstat -i 1
 CPU     NFS    CIFS   iSCSI     Net   kB/s    Disk   kB/s   iSCSI   kB/s  Cache
                                  in    out    read  write      in    out    age
  1%       0       0       0       9      6      24     12       0      0    16
  5%       0       0     808   24585    144    4380  13880   29819      0    22
  9%       0       0    2445   65703    434       0     24   62865      0    22
 10%       0       0    2041   64650    420      12      0   61325      0    22
  9%       0       0    2098   64805    393       0     24   61424      0    22
  7%       0       0    1844   64300    391      12     12   60719      0    22
  9%       0       0    1748   64155    362      12      0   61440      0    22
  7%       0       0    1664   64063    368       0     24   60178      0    22
  7%       0       0    1350   62062    322     648   1004   60129      0    22
  9%       0       0     536   29009    199      32     24   20447      0    22
  2%       0       0       0      11      6      12     12       0      0    22
 17%       0       0       0      12      7    2840 230440       0      0    22
 12%       0       0       0       8      5    1036 361752       0      0    22
 10%       0       0       0      18     11    1024 364032       0      0    22
<中略>


# Node2側の負荷
> node run -node PS-A400-02 sysstat -i 1
 CPU     NFS    CIFS   iSCSI     Net   kB/s    Disk   kB/s   iSCSI   kB/s  Cache
                                  in    out    read  write      in    out    age
  2%       0       0       0       8      6       0     24       0      0   >60
  3%       0       0     241    1233     14       0     12    8274      0   >60
  4%       0       0    2131   66795    406      12     24   62800      0   >60
  5%       0       0    2491   65507    473       0      0   62669      0   >60
  5%       0       0    1668   63731    350      12      0   60408      0   >60
  4%       0       0    2217   64345    422    1444   2512   61161      0   >60
  3%       0       0    1332   64246    328       0     12   60961      0   >60
  4%       0       0    2063   64824    400       0     24   61751      0   >60
  6%       0       0    1082   63198    306      12      0   60670      0   >60
  5%       0       0    2068   70332    402      12      0   71868      0   >60
  3%       0       0     692   57637    247       0     24   42476      0   >60
  4%       0       0     605   32740    127      12     12   44462      0   >60
  5%       0       0    2624  124973    630       0     24  118219      0   >60
  5%       0       0    1700  111133    532       0      0  104980      0   >60
  6%       0       0    1853  109461    482      24      0  104923      0   >60
  5%       0       0    1914  110928    540    1644   2500  104792      0   >60
  <中略>

参考及びリンク

Learn about SAN multipath and automatic LIF failover support for ONTAP systems

【今から覚えるONTAPの操作】iSCSI用のSVMを作成する

SAN環境におけるONTAPへの移行【pvmoveを使ったLVM環境のデータ移行】

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?