はじめに
本記事では、NetApp社の提供するStorageであるONTAPにおいて、オンプレミス環境でNFS用仮想ストレージ(SVM)を作成する手順について説明します。
具体的なワークロードのチューニングやCLIコマンドの使用方法やパラメータの解説には触れませんが、環境構築の流れを説明することで、Ansibleを使用した自動化によるNFS用SVM環境の構築に必要な項目を把握することに繋がるかと思います。
なお、NFSを利用する際のベストプラクティスについてはNFS in NetApp ONTAP Best practice and implementation guideを参照下さい。
何をしたい?できる?
- ONTAPにNFS用SVMMの作成をCLIで実行
- LinuxからのNFS mount
NFS用の仮想ストレージ(SVM)作成の流れ
基本的な設定作業の流れは下図の通りになります。
本記事では手順1のラッキングや初期設定が完了してリモートからONTAPにSSHアクセスできるような状態となっていることを想定しての記載です。
記事における環境情報
本記事では、以下の環境で実施した内容となります。
- Rocky Linux : 9.2
- 機種: FAS8200+SATA Disk
- ONTAP : 9.13.1
実施手順
既存環境へNFS用SVM追加ということであれば、仮想ストレージ作成からの実施となりますが、本記事では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データの通る物理NICの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に登録しているインターフェース間で実施されます。
既に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 nfs100 -rootvolume nfs100_root -aggregate aggr1_node01 -language C.UTF-8 -rootvolume-security unix -snapshot-policy default
# NASでのみ利用できる仮想ストレージ設定へ変更(必須では無い)
> vserver remove-protocols -vserver nfs100 -protocols fcp,iscsi,ndmp
3-2. LIFの作成
VLANインターフェースからIPを付与する為にLIFの作成を実施します。
LIFの作成時には、IPの他に普段の通信経路となるコントローラとPortを指定を行い、NAS利用時はservice-policyをdefault-data-filesに指定します。
また、Network障害時には作成しておいたBroadcast Domainに追加したインターフェース間で切り替えを実施できるように、failover-policyを broadcast-domain-wideに指定します。
> network interface create -vserver nfs100 -lif lif001 -service-policy default-data-files -home-node PS-8200cl-01 -home-port a0a-10 -address 172.16.10.240 -netmask 255.255.255.0 -failover-policy broadcast-domain-wide
> network interface create -vserver nfs100 -lif lif002 -service-policy default-data-files -home-node PS-8200cl-02 -home-port a0a-10 -address 172.16.10.241 -netmask 255.255.255.0 -failover-policy broadcast-domain-wide
> 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の作成
NFSアクセス先のデータ置き場であるVolumeの作成を実施します。
この例では、シンプロビジョニング構成の10GBのVolumeを作成し、Snapshot領域はサイズを5%を確保し、NFSアクセス許可の設定であるExport policyはDefaultのままで設定します。
(Export policyの中の設定は後で実施)
> volume create -vserver nfs100 -volume nfsvol -aggregate aggr1_node01 -size 10GB -percent-snapshot-space 5 -space-guarantee none -policy default -security-style unix -junction-path /nfsvol
Warning: The export-policy "default" has no rules in it. The volume will therefore be inaccessible over NFS and CIFS
protocol.
Do you want to continue? {y|n}: y
5. プロトコル設定
5-1. NFSサービスの開始
SVMでNFSサービスを開始し、必要なオプション設定を実施します。
デフォルトでは、NFSのv3, v4, v4.1が有効な形でサービス開始になります。
この記事では、NFSv4でmountしますが、LDAPサーバは用意しないので、ユーザ名がマッピングできない場合にはNFS v3のようにUID/GIDを利用する方法を採用(v4-numeric-idsの有効化) します。
> vserver nfs create -vserver nfs100 -v4-numeric-ids enabled -v4-id-domain "example.com"
> vserver nfs show
Vserver: nfs100
General Access: true
v3: enabled
v4.0: enabled
4.1: enabled
UDP: enabled
TCP: enabled
RDMA: enabled
Default Windows User: -
Default Windows Group: -
5-2. Export Policyへのルール追加
VolumeやqtreeへのNFSアクセスを特定のパラメータが一致するクライアントだけに制限します。
**SVM Root Volume(/の部分)は、配下のVolumeを使用する全クライアントからアクセス可能なように設定する必要**があります。
本記事では、作成されるVolumeはSVMのroot Volumeを含めデフォルト値のdefaultというExport Policyを利用しているので、defaultというPolicyへのルール追加をのみを実施します。
> vserver export-policy rule create -vserver nfs100 -policyname default -protocol nfs4 -clientmatch 172.16.10.0/24 -rorule any -rwrule any -anon 0
6. LinuxからのNFS mount
事前にidmapd.confのDomain名をSVM側で設定したものと合わせておき、mountを実行します。
# Domain名の確認
> cat /etc/idmapd.conf |grep Domain
Domain = example.com
# the old method (comparing the domain in the string to the Domain value,
# NFS version4.0 でMount
> mount -o vers=4.0 172.16.10.240:/nfsvol /mnt
# mountされている事を確認し、ファイルの作成
> df -h /mnt
ファイルシス サイズ 使用 残り 使用% マウント位置
172.16.10.240:/nfsvol 9.5G 320K 9.5G 1% /mnt
> date >/mnt/file01
> ls -l /mnt
合計 0
-rw-r--r--. 1 root daemon 43 10月 26 18:16 file01
> cat /mnt/file01
2023年 10月 26日 木曜日 18:16:53 JST