はじめに
本記事では、NetApp社の提供するStorageであるONTAPにおいてオンプレミス環境でiSCSI用仮想ストレージ(SVM)を作成する手順について記載します。
特定のワークロードのためのチューニングやCLIコマンドの具体的な使用方法やパラメータの解説については記載しませんが、具体的な環境構築の流れを説明することで、Ansibleを使用した自動化によるiSCSI用SVM環境の提供に必要な項目の把握につながる事になるかと思います。
なお、iSCSI利用時のベストプラクティスはBest practices for modern SAN ONTAP 9を参照下さい。
何をしたい?できる?
- ONTAPにiSCSI用SVMMの作成をCLIで実行
- WindowsからのiSCSIでLUN接続
NFS用の仮想ストレージ(SVM)作成の流れ
基本的な設定作業の流れは下図の通りになります。
本記事では、手順1のラッキングや初期設定を実施してリモートからONTAPにSSHアクセスできるような状態となっていることを想定しての記載です。
記事における環境情報
本記事では、以下の環境で実施した内容となります。
- Windows Server 2019
- 機種: FAS8200+SATA Disk
- ONTAP : 9.13.1
実施手順
既存環境へSVM追加ということであれば、手順4からの実施となりますが、ここではAggregate作成からの記載となります。
1. Aggregateの作成
データアクセス用Aggregateを作成します。
本記事ではSATA Diskの環境で名前やDisk数以外はデフォルト値で作成する為、RAID DPで最大14個でRAID Groupを組む構成で作成されます。
既にデータ用Aggregate作成済の場合は、本手順は割愛して下さい。
> storage aggregate create -aggregate aggr1_node01 -diskcount 7 -node PS-8200cl-01
> storage aggregate show -aggregate aggr1_node01 -fields size,raidtype,maxraidsize
aggregate maxraidsize raidtype size
------------ ----------- -------- -------
aggr1_node01 14 raid_dp 16.34TB
2. Network構成の設定
2-1. InterfaceGroupの作成
NFSデータの通る物理Portについて、InterfaceGroupという機能を使い論理的な1つの仮想ポートを作成します。
InterfaceGroupの作成にあたっては、後述する何かしらのBroadcast Domainに所属していると作成時にエラーが出るため、事前に対象のBroadcast DomainからInterfaceGroupで利用予定のPortを外します。
本記事ではIEEE802.3ad(dynamic)に準拠したLACPを利用し、各コントローラに対して作成を実行します。
既にInterfaceGroup作成済の場合は、本手順は割愛して下さい。
# InterfaceGroupに利用するPortをBroadcast Domainから除外
> broadcast-domain remove-ports -broadcast-domain Default -ports PS-8200cl-01:e0e
> broadcast-domain remove-ports -broadcast-domain Default -ports PS-8200cl-01:e0f
# InterfaceGroup作成
> network port ifgrp create -node PS-8200cl-01 -ifgrp a0a -distr-func ip -mode multimode_lacp
# InterfaceGroupに物理NICのPortを追加
> network port ifgrp add-port -node PS-8200cl-01 -ifgrp a0a -port e0e
> network port ifgrp add-port -node PS-8200cl-01 -ifgrp a0a -port e0f
> network port ifgrp show -instance -node PS-8200cl-01 -ifgrp a0a
Node: PS-8200cl-01
Interface Group Name: a0a
Distribution Function: ip
Create Policy: multimode_lacp
MAC Address: 02:a0:98:af:de:57
Port Participation: full
Network Ports: e0e, e0f
Up Ports: e0e, e0f
Down Ports: -
#他のコントローラに対しても同様にifgrpの作成を実行
2-2. VLANインターフェースの作成
次に作成したifgrpからVLAN インターフェースを切り出します。
> network port vlan create -node PS-8200cl-01 -vlan-name a0a-10
> network port vlan show -node PS-8200cl-01
Network Network
Node VLAN Name Port VLAN ID MAC Address
------ --------- ------- -------- -----------------
PS-8200cl-01
a0a-10 a0a 10 02:a0:98:af:de:57
2-3. Broadcast Domainの作成
作成したVLAN インターフェースをBroadcast Domainに含めます。
Network障害時におけるPortの切り替え範囲は、Broadcast Domainに登録しているインターフェース間で実施されますが、iSCSI環境ではLIF作成時に切り替えは無効にする必要があります。
(Broadcast DomainにPortを登録していないとLIF作成ができないので作成する形)
既にVLAN インターフェース作成済の場合は、本手順は割愛して下さい。
> network port broadcast-domain create -broadcast-domain data_vlan10 -mtu 1500 -ports PS-8200cl-01:a0a-10, PS-8200cl-02:a0a-10
> broadcast-domain show -broadcast-domain data_vlan10
(network port broadcast-domain show)
IPspace Broadcast Update
Name Domain Name MTU Port List Status Details
------- ----------- ------ ----------------------------- --------------
Default data_vlan10 1500
PS-8200cl-01:a0a-10 complete
PS-8200cl-02:a0a-10 complete
3. 仮想ストレージの作成
3-1. 仮想ストレージの作成
仮想ストレージ(SVM)の作成を実行します。
指定された内容は、Volume作成時のDefault値になります。(languageやsecurity等)
> vserver create -vserver iscsi100 -rootvolume iscsi100_root -aggregate aggr1_node01 -language C.UTF-8 -rootvolume-security unix -snapshot-policy default
# iSCSIのみ利用できる仮想ストレージ設定へ変更(必須では無い)
> vserver remove-protocols -vserver iscsi100 -protocols fcp,nfs,cifs,ndmp
3-2. LIFの作成
VLANインターフェースからIPを付与する為にLIFの作成を実施します。
LIFの作成時には、IPの他に普段の通信経路となるコントローラとPortを指定を行い、iSCSI利用時はservice-policyをdefault-data-iscsiに指定します。
また、iSCSI環境におけるNetwork経路の障害は、サーバ側のマルチパスソフトウェアで管理をする為、ONTAP側で切り替え設定については無効にする必要があり、failover-policyをdisabledに指定します。
> network interface create -vserver iscsi100 -lif lif001 -service-policy default-data-iscsi -home-node PS-8200cl-01 -home-port a0a-10 -address 172.16.10.240 -netmask 255.255.255.0 -failover-policy disabled
> network interface create -vserver iscsi100 -lif lif002 -service-policy default-data-iscsi -home-node PS-8200cl-02 -home-port a0a-10 -address 172.16.10.241 -netmask 255.255.255.0 -failover-policy disabled
> network interface show -vserver nfs100
Logical Status Network Current Current Is
Vserver Interface Admin/Oper Address/Mask Node Port Home
----------- ---------- ---------- ------------------ ------------- ------- ----
nfs100
lif001 up/up 172.16.10.240/24 PS-8200cl-01 a0a-10 true
lif002 up/up 172.16.10.241/24 PS-8200cl-02 a0a-10 true
4. Volumeの作成
iSCSI用のLUN作成先のデータ置き場であるVolumeの作成を実施します。
この例では、シンプロビジョニング構成の20GBのVolumeを作成し、Snapshot領域はサイズを0%で設定し、自動拡張を有効化します。
iSCSI環境ではLUNと接続をする為、junction-pathの設定は不要になります。
> volume create -vserver iscsi100 -volume iscsivol -aggregate aggr1_node01 -size 20GB -percent-snapshot-space 5 -space-guarantee none -policy default -security-style unix
# 書き込み保障の為にVolumeの自動拡張を有効化する
> volume autosize -vserver iscsi100 -volume iscsivol -mode grow -maximum-size 30g
5. プロトコル設定
SVMでiSCSIサービスを開始します。
> vserver iscsi create -vserver iscsi100
> vserver iscsi show
Target Target Status
Vserver Name Alias Admin
---------- -------------------------------- ---------------------------- ------
iscsi100 iqn.1992-08.com.netapp:sn.a16aeec0741011ee925700a098afde57:vs.24
iscsi100 up
6. LUNの作成
iSCSI用のVolumeにLUNを作成します。
Windows Server 2019に接続しますが、LUNのTypeはwindows_2008の指定を実施します。
また、LUNをNTFSでフォーマットされた後に、Windows側と空き領域の同期を取るためにspace-allocationを有効化します。
LUNとVolumeの関係が分かりにくいかもしれませんが、NAS用のアクセスができるSVMのVolumeへLUNを作成するとLUNはONTAPでいうVolume内における1ファイルのような形で確認することができます。
LUN作成後に、iSCSIクライアントから接続してフォーマットする事でCドライブのような形で利用することができます。
> lun create -vserver iscsi100 -path /vol/iscsivol/lun001 -size 5g -ostype windows_2008 -space-reserve enabled -space-allocation enabled
Created a LUN of size 5g (5368709120)
7. ONTAP内操作におけるLUNのMapping
ONTAP側からiSCSIクライアント(Windows)のイニシエータ名を登録してマスキングを実施します。
iSCSIクライアントのイニシエータ名は、Windowsの管理ツールのあるiSCSIイニシエータを立ち上げ、[構成]タブから確認できます。
7-1. igroupの作成
iSCSIイニシエータのノード名をグループ化したigroup (Initiator Group)を作成し、イニシエータ名の登録を実施します。
定義したigroupをLUNに紐づける事(Mapping)で、igroupに登録されているイニシエータからのみLUNアクセスを許可する事ができるようになります。
> igroup create -vserver iscsi100 -igroup igroup001 -protocol iscsi -ostype windows -initiator iqn.1991-05.com.microsoft:win2019-01
7-2. igroupとLUNの紐づけ(Mapping)
igroupに登録したイニシエータに作成したLUNをMappingします。
> lun map -vserver iscsi100 -path /vol/iscsivol/lun001 -igroup igroup001
> lun show -mapped mapped -vserver iscsi100
Vserver Path State Mapped Type Size
--------- ------------------------------- ------- -------- -------- --------
iscsi100 /vol/iscsivol/lun001 online mapped windows_2008 5GB
8. Windows ServerからのLUN接続操作
ここからはiSCSIクライアントであるWindows上の操作を実施します。
8-1. ターゲットポータルの探索
ONTAPで作成した、iSCSI用のLIFのIPアドレスをiSCSIイニシエータに登録します。
Windowsの管理ツールのあるiSCSIイニシエータを立ち上げ、【探索】タブから【ポータルの探索】をクリックします。
表示された画面にONTAP用のiSCSI LIFのIPを入力し、【詳細設定】をクリックします。
表示された画面で、【ローカルアダプタ】にMicrosoft iSCSI Initiatorを選択し、
【イニシエータIP】で入力したONTAPのiSCSI LIFと通信するWindows ServerのIPを選択し、
【OK】をクリックします。
8-2. 検出したONTAP側ターゲット名との接続実施
この作業を設定する経路分、繰り返し実施します(本記事の場合は2経路分)
iSCSIイニシエータの、【ターゲット】タブから検出されたターゲットを選択し、【接続】をクリックします。
(2経路目を登録する際は、状態が接続完了と表示されていても繰り返し設定を実施する)
マルチパス構成で構築する為、表示された画面で【複数パスを有効にする】にチェックを入れ、【詳細設定】をクリックします。
表示された画面で、【ローカルアダプタ】にMicrosoft iSCSI Initiatorを選択し、
【イニシエータIP】で入力したONTAPのiSCSI LIFと通信するWindows ServerのIPを選択し、
【ターゲットポータルIP】にONTAPのiSCSI LIFを選択します。
2経路分の接続完了時点で【ターゲット】タブのデバイスをクリックすると、ONTAP上の1つのLUNが、Windows上では2つの経路から別Diskとして見えているのが確認できます。
8-3. マルチパス機能の追加
複数の物理パスを使用してデータの入出力を行うためマルチパス機能を利用します。
これにより、複数パスから見えるデバイス(LUN)を1つとして見なすことができます。
また、接続経路が管理され、Activeパスで障害が発生した場合、自動的に残りのパスに切り替わり、通信を継続できるようになります。
Windows Serverの【役割と機能の追加】からマルチパスI/Oを追加します。
マルチパスI/O追加後には再起動が必要になります。
再起動後にWindowsの管理ツールからMPIOを選択します。
【マルチパスの検出】タブで、iSCSIデバイスのサポートを追加するにチェックを入れ、【追加】をクリックします。
iSCSIデバイスのサポート追加後には再起動が必要になります。
8-4. LUNの接続とフォーマット
LUNをフォーマットしてドライブレターを割り振る為、Windowsの管理ツールからコンピュータの管理を選択します。
【記憶域】の【ディスクの管理】を選択し、表示されているLUNを選択し右クリックから【オンライン】を選択します。
未割り当てのディスクで右クリックし、【新しいシンプルボリューム】を選択します。
ドライブレターの割り振りやフォーマットを実行して、LUNを利用可能な状態にします。