FSx for NetApp ONTAP を作成し、EC2 インスタンス(RHEL9)に NFS マウントしてみた(スタンダード作成)
コーヒーが好きな emi です。
FSx for NetApp ONTAP を AWS マネジメントコンソールから作成する際、クイック作成とスタンダード作成が選べます。設定値を確認したかったので、スタンダード作成から作成してみました。
クイック作成の方法についてはこちらのブログをご参照ください。
FSx for NetApp ONTAP のコンポーネント(ファイルシステム、SVM、ボリューム等)については以下のブログを参照ください。
また、作成した FSx for NetApp ONTAP を EC2 インスタンス(RHEL9)に NFS マウントして動作確認しました。
構成図
今回作成した構成はこちらです。
事前準備
事前準備では VPC、セキュリティグループ、EC2 を作成します。
VPC
RHEL9 に SSM Agent と mount
コマンドをインストールする必要があるので NAT Gateway を設置します。
今回は以下の図のように CIDR を設定しました。
セキュリティグループ
EC2 用セキュリティグループと FSx for NetApp ONTAP のファイルシステム用セキュリティグループを二つ作成します。
- EC2 用セキュリティグループ(emiki_test_fsxn-ec2-sg)
- セッションマネージャー利用のためアウトバウンド TCP 443 が許可されていればよい
許可 | タイプ | プロトコル | ポート範囲 | ソース | 説明 |
---|---|---|---|---|---|
アウトバウンド | すべてのトラフィック | すべて | すべて | 0.0.0.0/0 | default |
- FSx for NetApp ONTAP のファイルシステム用セキュリティグループ(emiki_test_fsxn-fs-sg)
- ファイルシステムのクラスター間エンドポイント(優先サブネット)に付与するセキュリテイグループ
- 本検証では NFS マウントを実施するため、EC2 からの NFS 通信が許可されていればよい
許可 | タイプ | プロトコル | ポート範囲 | ソース | 説明 |
---|---|---|---|---|---|
インバウンド | NFS | TCP | 2049 | EC2 用セキュリティグループ(emiki_test_fsxn-ec2-sg) | from ec2_nfs |
アウトバウンド | すべてのトラフィック | すべて | すべて | 0.0.0.0/0 | default |
EC2
FSx for NetApp ONTAP ストレージを NFS マウントするのに RHEL9 を作成します。
FSx for NetApp ONTAP ファイルシステムが作成されるまで 25~45 分程度待ち時間が発生するので、検証される方は先にファイルシステムを作成してから EC2 を作成する方がいいと思います。
セキュリティグループは先ほど作成した EC2 用のセキュリティグループを設定します。
RHEL9 はデフォルトで SSM Agent がインストールされていないので、ユーザーデータで SSM Agent をインストールします。以下のブログを参照しました。
EC2 を起動したら、セッションマネージャーで接続できるか確認しておきます。
FSx for NetApp ONTAP スタンダード作成
FSx for NetApp ONTAP を作成していきます。FSx コンソール画面を開き、「ファイルシステムを作成」をクリックします。
FSx for NetApp ONTAP を選択して「次へ」をクリックします。
「スタンダード作成」を選択します。
- ファイルシステム名(今回は
emiki_test_fsxn
と指定)- 最大 256 文字までで、空白、数字、記号(+ - = . _ : /)が使えます。
- デプロイタイプ(今回はマルチ AZ を指定)
- マルチ AZ かシングル AZ が選べます。
- SSD ストレージ容量(今回は 1024 GiB と指定)
- 最小 1024 GiB ~最大 192 TiB
- プロビジョンド SSD IOPS(今回は「自動 (SSD ストレージ 1 GiB あたり 3 IOPS)」を指定)
- Amazon FSx ではストレージ容量の 1 GiB あたり 3 IOPS を提供します。必要に応じて追加の SSD IOPS をプロビジョンすることもできます。
- 「自動 (SSD ストレージ 1 GiB あたり 3 IOPS)」「ユーザープロビジョンド」が選べます。
- スループットキャパシティ(今回は「推奨されるスループット容量(128 MB/秒)」を指定)
- 「推奨されるスループット容量(128 MB/秒)」「スループットキャパ容量を指定」が選べます。
作成済みの VPC とセキュリティグループを指定します。
- 推奨サブネット
- マルチ AZ 構成を選択したので、優先サブネットとスタンバイサブネットを指定します。ap-northeast-1a のプライベートサブネットにしました。
- スタンバイサブネット
- ap-northeast-1c のプライベートサブネットにしました。
- VPC ルートテーブル情報
- ファイルシステムに関連付ける VPC ルートテーブルを指定します。「VPC のメインルートテーブル」「1 つ以上の VPC ルートテーブルを選択」を選べます。
- 「推奨サブネット」と「スタンバイサブネット」に紐づいているルートテーブルを指定したいので、「1 つ以上の VPC ルートテーブルを選択」を選びました。
- エンドポイント IP アドレス範囲情報
- ファイルシステムにアクセスするエンドポイントが作成される IP アドレス範囲を指定します。
- 「VPC から未割り当ての IP アドレス範囲」「VPC 外のフローティング IP アドレス範囲」「IP アドレス範囲を入力」が選べます。
- 他の AWS サービス、VPC ピアリング、オンプレミスからのアクセスなどを加味すると「VPC から未割り当ての IP アドレス範囲」を選択するのが最もシンプルです。
- ファイルシステムにアクセスするエンドポイントが作成される IP アドレス範囲を指定します。
暗号化キーはデフォルトのままにします。
- ファイルシステム管理パスワード
- ONTAP CLI または REST API にアクセスするために使用できる、ファイルシステムの「fsxadmin」ユーザーのパスワードを指定します。
- 後からでも設定できるので今回は「パスワードを指定しない」で進めました。
- ストレージ仮想マシン名(emiki_test_fsxn_svm01)
- SVM の名前を指定します。SVM については ストレージ仮想マシン(Storage Virtual Machine, SVM) を参照ください。
- SVM 管理パスワード
- ONTAP CLI または REST API にアクセスするために使用できる、SVM の「vsadmin」ユーザーのパスワードを指定します。
- 後からでも設定できるので今回は「パスワードを指定しない」で進めました。
- ボリュームのセキュリティスタイル(今回は Linux で NFS マウントをするので「Unix (Linux)」を指定)
- NTFS ACL と UNIX ACL のどちらが優先されるか指定します。
- 「Unix (Linux)」「NTFS」「混合」から選べます。
- 混合(MIXED)モードは上級ユーザーにのみ推奨されるようです。
- Active Directory
- Active Directory ドメインへの参加有無を指定します。今回は指定しません。
- ボリューム名(今回は
emiki_test_fsxn_vol01
と指定)- 最大 203 文字の英数字と記号(_ .)が使えます。
- ボリュームサイズ(今回は 10240 MiB = 10 GiB と指定)
- 最小 20 MiB ~最大 314,572,800 MiB
- ボリュームタイプ(今回は Read-Write (RW) を指定)
- ファイルシステムの最初のボリュームを Read-Write (RW) ボリュームにするか、SnapMirror で使用する読み取り専用 Data Protection (DP) ボリュームにするかを選択します。
- ジャンクションパス
- ボリュームがマウントされるファイルシステム内の場所を指定します。
- 何も指定せずデフォルトだと「
/vol
」になります。
- ストレージ効率(今回は有効 (推奨)を指定)
- ボリュームで ONTAP ストレージ効率 (重複排除、圧縮、コンパクト化) を有効にするかどうかを選択します。
- スナップショットポリシー(今回は Default を指定)
- ボリュームのスナップショットポリシーによって、ボリュームのスナップショットが自動的に作成されるスケジュールが決まります。
- 「Default」「Default-weekly」「None」「カスタムポリシー」が選べます。
- 容量プールの階層化ポリシー(今回は自動のまま)
- 低コストの容量プールストレージへのデータの自動階層化を有効にできます。
- 階層化ポリシーの冷却期間(今回は 31 日のまま)
- アクセスされていないデータがコールドとしてマークされ、キャパシティプールストレージに移動されるまでの日数を定義します。自動ポリシーとスナップショットのポリシーにのみ影響します。
- デフォルト値は 31 日です。有効な値は 2~183 日です。
バックアップとメンテナンスのスケジュールを指定します。検証のためバックアップは無効にしました。
週次メンテナンスウィンドウは UTC で指定します。金曜日 16:00 UTC = 土曜日 1:00 JST です。
タグは指定せず「次へ」をクリックします。
ちなみに Name タグを指定しようとしたらエラーになりました。一番最初に指定したファイルシステム名が Name タグとして使われるようです。
確認画面が表示されます。作成後に編集可能かどうかわかるのがいいですね。
最後に「ファイルシステムを作成」をクリックします。
ファイルシステムができるまで 25~45 分待ち時間が発生します。今回は 23 分で作成完了しました。
FSx for NetApp ONTAP の詳細確認
作成した FSx for NetApp ONTAP のファイルシステム、SVM、ボリュームを確認してみましょう。
FSx for NetApp ONTAP のファイルシステム、SVM、ボリュームについては以下のブログを参照ください。
ファイルシステム
ファイルシステムの詳細画面を開くと以下のようになっています。SSD ストレージ容量、スループットキャパシティ、プロビジョンド IOPS が変更できるのが分かります。
ネットワークとセキュリティタブでは VPC や各種エンドポイントの DNS 名と IP アドレスが確認できます。
ちなみにセキュリテイグループの変更は優先サブネットのネットワークインターフェースのリンクから実施できます。
詳細は以下ブログを参照ください。
管理タブからも各種エンドポイントが確認できます。ファイルシステムの ONTAP 管理者(fsxadmin)のパスワードはここから設定できます。
ストレージ仮想マシンタブでは、ファイルシステムに存在するストレージ仮想マシン(SVM)の一覧が確認できます。
ストレージ仮想マシン(SVM)
SVM の詳細画面はこのようになっています。エンドポイントタブで各種エンドポイントの DNS 名や IP アドレスを確認できます。
管理タブを開きます。SVM 管理(svmadmin)のパスワードはここから設定できます。
ボリュームタブでは、SVM に存在するボリュームの一覧が確認できます。末尾に「_root
」がついたボリュームは自動作成されるシステム領域のようなので、通常業務には使わない方がいいと思います。
ボリューム
ボリュームの詳細画面ではジャンクションパスなどを確認できます。
ルートテーブル
ここで、ファイルシステム作成時に指定したルートテーブルを見てみましょう。
このように、ファイルシステムの管理エンドポイントと、SVM の管理エンドポイント向けのルートが追記されていることが分かります。
ファイルシステムを作成するサブネットに紐づいたルートテーブルにルートを追加するように設定しないと、管理エンドポイント経由の通信がうまくいかないので注意してください。
EC2 インスタンスに NFS マウントする
以下ドキュメントを参考に FSx for NetApp ONTAP のボリュームを RHEL9 に NFS マウントしてみます。
セッションマネージャーで RHEL9 にログインします。
まず RHEL9 に mount
コマンド(に必要な NFS ヘルパープログラム)がインストールされていないので、インストールしておきます。Amazon Linux 2 の場合はインストール済みですので不要です。
sudo yum install nfs-utils
実行結果(クリックで展開)
sh-5.1$ sudo yum install nfs-utils Updating Subscription Management repositories. Unable to read consumer identity This system is not registered with an entitlement server. You can use subscription-manager to register. Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs) 500 kB/s | 24 MB 00:48 Red Hat Enterprise Linux 9 for x86_64 - BaseOS from RHUI (RPMs) 52 MB/s | 13 MB 00:00 Red Hat Enterprise Linux 9 Client Configuration 34 kB/s | 3.4 kB 00:00 Last metadata expiration check: 0:00:01 ago on Wed 30 Aug 2023 01:33:44 PM UTC. Dependencies resolved. ============================================================================================================================================================ Package Architecture Version Repository Size ============================================================================================================================================================ Installing: nfs-utils x86_64 1:2.5.4-18.el9 rhel-9-baseos-rhui-rpms 459 k Installing dependencies: gssproxy x86_64 0.8.4-5.el9_2 rhel-9-baseos-rhui-rpms 114 k keyutils x86_64 1.6.3-1.el9 rhel-9-baseos-rhui-rpms 78 k libev x86_64 4.33-5.el9 rhel-9-baseos-rhui-rpms 56 k libnfsidmap x86_64 1:2.5.4-18.el9 rhel-9-baseos-rhui-rpms 66 k libtirpc x86_64 1.3.3-1.el9 rhel-9-baseos-rhui-rpms 96 k libverto-libev x86_64 0.3.2-3.el9 rhel-9-baseos-rhui-rpms 15 k quota x86_64 1:4.06-6.el9 rhel-9-baseos-rhui-rpms 202 k quota-nls noarch 1:4.06-6.el9 rhel-9-baseos-rhui-rpms 81 k rpcbind x86_64 1.2.6-5.el9 rhel-9-baseos-rhui-rpms 62 k sssd-nfs-idmap x86_64 2.8.2-2.el9 rhel-9-baseos-rhui-rpms 44 k Transaction Summary ============================================================================================================================================================ Install 11 Packages Total download size: 1.2 M Installed size: 3.2 M Is this ok [y/N]: y Downloading Packages: (1/11): libverto-libev-0.3.2-3.el9.x86_64.rpm 347 kB/s | 15 kB 00:00 (2/11): libev-4.33-5.el9.x86_64.rpm 1.1 MB/s | 56 kB 00:00 (3/11): quota-nls-4.06-6.el9.noarch.rpm 1.5 MB/s | 81 kB 00:00 (4/11): rpcbind-1.2.6-5.el9.x86_64.rpm 3.9 MB/s | 62 kB 00:00 (5/11): quota-4.06-6.el9.x86_64.rpm 8.0 MB/s | 202 kB 00:00 (6/11): nfs-utils-2.5.4-18.el9.x86_64.rpm 20 MB/s | 459 kB 00:00 (7/11): sssd-nfs-idmap-2.8.2-2.el9.x86_64.rpm 2.9 MB/s | 44 kB 00:00 (8/11): libtirpc-1.3.3-1.el9.x86_64.rpm 3.9 MB/s | 96 kB 00:00 (9/11): keyutils-1.6.3-1.el9.x86_64.rpm 6.5 MB/s | 78 kB 00:00 (10/11): libnfsidmap-2.5.4-18.el9.x86_64.rpm 5.5 MB/s | 66 kB 00:00 (11/11): gssproxy-0.8.4-5.el9_2.x86_64.rpm 5.3 MB/s | 114 kB 00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------ Total 8.9 MB/s | 1.2 MB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : libtirpc-1.3.3-1.el9.x86_64 1/11 Installing : libnfsidmap-1:2.5.4-18.el9.x86_64 2/11 Running scriptlet: rpcbind-1.2.6-5.el9.x86_64 3/11 Installing : rpcbind-1.2.6-5.el9.x86_64 3/11 Running scriptlet: rpcbind-1.2.6-5.el9.x86_64 3/11 Created symlink /etc/systemd/system/multi-user.target.wants/rpcbind.service → /usr/lib/systemd/system/rpcbind.service. Created symlink /etc/systemd/system/sockets.target.wants/rpcbind.socket → /usr/lib/systemd/system/rpcbind.socket. Installing : keyutils-1.6.3-1.el9.x86_64 4/11 Installing : libev-4.33-5.el9.x86_64 5/11 Installing : libverto-libev-0.3.2-3.el9.x86_64 6/11 Installing : gssproxy-0.8.4-5.el9_2.x86_64 7/11 Running scriptlet: gssproxy-0.8.4-5.el9_2.x86_64 7/11 Installing : quota-nls-1:4.06-6.el9.noarch 8/11 Installing : quota-1:4.06-6.el9.x86_64 9/11 Running scriptlet: nfs-utils-1:2.5.4-18.el9.x86_64 10/11 Installing : nfs-utils-1:2.5.4-18.el9.x86_64 10/11 Running scriptlet: nfs-utils-1:2.5.4-18.el9.x86_64 10/11 Installing : sssd-nfs-idmap-2.8.2-2.el9.x86_64 11/11 Running scriptlet: sssd-nfs-idmap-2.8.2-2.el9.x86_64 11/11 Verifying : quota-nls-1:4.06-6.el9.noarch 1/11 Verifying : libverto-libev-0.3.2-3.el9.x86_64 2/11 Verifying : libev-4.33-5.el9.x86_64 3/11 Verifying : quota-1:4.06-6.el9.x86_64 4/11 Verifying : rpcbind-1.2.6-5.el9.x86_64 5/11 Verifying : nfs-utils-1:2.5.4-18.el9.x86_64 6/11 Verifying : libtirpc-1.3.3-1.el9.x86_64 7/11 Verifying : sssd-nfs-idmap-2.8.2-2.el9.x86_64 8/11 Verifying : keyutils-1.6.3-1.el9.x86_64 9/11 Verifying : libnfsidmap-1:2.5.4-18.el9.x86_64 10/11 Verifying : gssproxy-0.8.4-5.el9_2.x86_64 11/11 Installed products updated. Installed: gssproxy-0.8.4-5.el9_2.x86_64 keyutils-1.6.3-1.el9.x86_64 libev-4.33-5.el9.x86_64 libnfsidmap-1:2.5.4-18.el9.x86_64 libtirpc-1.3.3-1.el9.x86_64 libverto-libev-0.3.2-3.el9.x86_64 nfs-utils-1:2.5.4-18.el9.x86_64 quota-1:4.06-6.el9.x86_64 quota-nls-1:4.06-6.el9.noarch rpcbind-1.2.6-5.el9.x86_64 sssd-nfs-idmap-2.8.2-2.el9.x86_64 Complete! sh-5.1$
EC2 インスタンスで FSx for NetApp ONTAP 用に新しいディレクトリを作成します。以下のコマンドでは /fsx
というディレクトリを作成しています。
sudo mkdir /fsx
実行結果(クリックで展開)
sh-5.1$ sudo mkdir /fsx sh-5.1$
FSx for NetApp ONTAP のボリュームをマウントします。マウントするには以下のコマンドを実行します。
sudo mount -t nfs svm-dns-name:/volume-junction-path /fsx
svm-dns-name
と volume-junction-path
には、作成した FSx for NetApp ONTAP の SVM の DNS 名とボリュームのジャンクションパスを入れてください。
SVM の DNS 名は SVM のエンドポイントタブで、ジャンクションパスはボリュームの詳細画面で確認できます。
また、ボリュームの詳細画面の右上の「アタッチ」をクリックするとマウントコマンドを確認することができます。
svm-dns-name
と volume-junction-path
に値を入れたコマンドは以下になります。
sudo mount -t nfs svm-0e6e78bcada1526ec.fs-0c942e8e70a3ec0d9.fsx.ap-northeast-1.amazonaws.com:/vol1 /fsx
実行結果(クリックで展開)
sh-5.1$ sudo mount -t nfs svm-0e6e78bcada1526ec.fs-0c942e8e70a3ec0d9.fsx.ap-northeast-1.amazonaws.com:/vol1 /fsx sh-5.1$
マウントはすぐに終わりました。
動作確認
NFS マウントが正常に行われたかを確認するには、df
コマンドまたは mount
コマンドを使用します。
df
コマンドはマウントされたファイルシステムのディスクスペースの使用状況を表示します。-h
オプション(--human-readable
)を付けると、サイズに応じて読みやすい単位で表示します。実行結果の出力の中に、マウントした NFS ボリュームのパスが表示されていれば、マウントが成功しています。
df -h
実行結果(クリックで展開)
sh-5.1$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 372M 0 372M 0% /dev/shm tmpfs 149M 3.6M 146M 3% /run /dev/nvme0n1p4 9.4G 1.4G 8.0G 15% / /dev/nvme0n1p3 495M 153M 343M 31% /boot /dev/nvme0n1p2 200M 8.0K 200M 1% /boot/efi svm-0e6e78bcada1526ec.fs-0c942e8e70a3ec0d9.fsx.ap-northeast-1.amazonaws.com:/vol1 9.5G 448K 9.5G 1% /fsx sh-5.1$
ハイライトで示したこの行が FSx NetApp ONTAP のボリュームですね。
svm-0e6e78bcada1526ec.fs-0c942e8e70a3ec0d9.fsx.ap-northeast-1.amazonaws.com:/vol1 9.5G 448K 9.5G 1% /fsx
mount
コマンドは、システム上のすべてのマウントされたファイルシステムを表示します。
実行結果の出力の中に、マウントした NFS ボリュームのパスとともに type nfs
または type nfs4
が表示されていれば、マウントが成功しています。出力が多かったので grep
で結果を絞りました。
mount | grep svm
実行結果(クリックで展開)
sh-5.1$ mount | grep svm svm-0e6e78bcada1526ec.fs-0c942e8e70a3ec0d9.fsx.ap-northeast-1.amazonaws.com:/vol1 on /fsx type nfs4 (rw,relatime,vers=4.2,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.10.226,local_lock=none,addr=10.0.255.236) sh-5.1$
マウントが成功しているようですね。
では 動作確認 を参考に、1GB の書き込み操作を実施してみます。
sudo dd if=/dev/zero of=/fsx/test.tmp ibs=1M obs=1M count=1000
dd
:ファイルを変換し、コピーします。if=/dev/zero
:入力ファイルif
として/dev/zero
を指定しています。/dev/zero
は特殊なファイルで、中身は大量の NULL 文字です。読み取り要求があると無限に NULL を出力します。of=/fsx/test.tmp
:出力ファイルof
として/fsx/test.tmp
を指定しています。/fsx/test.tmp
という名前の新しいファイルを作成(または上書き)します。ibs=1M obs=1M
:入力ブロックサイズibs
と出力ブロックサイズobs
を 1MB に設定します。dd
コマンドが一度に読み書きするデータの単位を指定しています。count=1000
:dd
コマンドがコピーを行うブロックの数を指定します。1000 ブロックをコピーするとしており、ブロックサイズが 1MB なので、合計で約 1GB のデータをコピーすることを意味します。
実行結果(クリックで展開)
sh-5.1$ sudo dd if=/dev/zero of=/fsx/test.tmp ibs=1M obs=1M count=1000 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB, 1000 MiB) copied, 2.46326 s, 426 MB/s sh-5.1$
1048576000 bytes (1.0 GB, 1000 MiB) copied, 2.46326 s, 426 MB/s
より、コピーされた総バイト数が 1048576000 bytes
、コピーにかかった時間が 2.46326 s
、スループット(データ転送速度)が 426 MB/s
であると分かります。
ファイルシステムのスループットキャパシティが 128 MB/秒 なので、思ったより早いですね。
ボリュームのモニタリングタブを見ると、スループットや IOPS の合計が計測されているのが分かります。
アンマウントも試してみましょう。
sudo umount /fsx
実行結果(クリックで展開)
sh-5.1$ sudo umount /fsx sh-5.1$
おわりに
FSx for NetApp ONTAP を作成し、RHEL9 にマウント・アンマウントしてみました。FSx for NetApp ONTAP の作成自体は簡単ですが、EC2 インスタンスにマウントする際通信設定がうまくいっていなかったり mount
コマンドをインストールする必要があったりしたのでそこの確認に時間がかかりました。
どなたかのお役に立てば幸いです。