0
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?

FSx for OpenZFSを作ってマウントするまでやってみた

0
Posted at

はじめに

案件でFSx for OpenZFSを扱う機会があったのですが、EFSやFSx for Windows File Serverと比べると圧倒的に情報が少なく、触ったことがある人もかなり限られている印象です。そこで、まずはファイルシステムを作成してEC2からマウントするところまでの基本的な手順を整理しておこうと思い、この記事を書きました。

構築自体はそこまで難しくありませんが、NFSのバージョン選択やマウントオプションなど、実際にやってみないとわからない部分もあったので、そのあたりも含めて共有します。

想定読者

  • AWSの基本的なサービスを理解しているインフラエンジニア
  • FSx for OpenZFSをこれから触ってみたい方
  • NFSベースのファイルストレージに興味がある方

この記事でわかること

  • OpenZFS(ZFS)の成り立ちと特徴
  • FSx for OpenZFSのファイルシステム作成手順と各パラメータの意味
  • EC2インスタンスからNFSマウントする手順と動作確認方法

OpenZFSとは何か

FSx for OpenZFSの「OpenZFS」について、少しだけ歴史を振り返っておきます。

ZFS(Zettabyte File System)は、2001年にSun MicrosystemsがSolaris向けに開発を始めたファイルシステムです。従来のファイルシステムとボリュームマネージャーを統合した設計が特徴で、スナップショット、圧縮、データ整合性チェック(チェックサム)といった機能を標準で備えていました。2005年にはSolarisの一部がOpenSolarisとしてオープンソース公開され、ZFSのソースコードも利用可能になりました。

2009〜2010年にOracleがSun Microsystemsを買収した後、OpenSolarisの開発は打ち切られ、ZFSのソースコードは非公開に戻されます。これを受けて2010年にillumosプロジェクトがOpenSolarisの最終版をforkし、オープンソースとしての開発を継続しました。その後、2013年にLinuxやFreeBSDなど複数のプラットフォームにまたがるZFS開発を統括する目的でOpenZFSプロジェクトが設立されました。2020年にはOpenZFS 2.0がリリースされ、LinuxとFreeBSDが同一リポジトリからサポートされるようになっています。

AWSのFSx for OpenZFSは、このOpenZFSをベースにしたフルマネージドのファイルストレージサービスです。ZFSの強力な機能(スナップショット、圧縮、クローンなど)をそのまま活かしつつ、インフラの運用管理をAWSに任せられるという位置付けになります。

ここまで聞くと「結構いい感じのファイルシステムなんだな〜」と思われる方が大半なのではないでしょうか。今後の記事でFSx for OpenZFSの深い内容まで扱っていくので、その記事を見た上で再度こちらの内容を振り返っていただければと思います。

ファイルシステムの作成

作成方法の選択

AWSマネジメントコンソールからFSxの画面を開き、「ファイルシステムを作成」を選択します。作成方法は「クイック作成」と「スタンダード作成」の2つがありますが、今回はパラメータを確認しながら進めたいので「スタンダード作成」を選択しました。

ファイルシステムの詳細

以下の設定でファイルシステムを作成しました。

スクリーンショット 2026-07-18 11.35.35.png

今回の設定値

設定項目 設定値 補足
ファイルシステム名 redbull-dev-OpenZFS-tky 任意の名前
ストレージクラス SSD Intelligent-Tieringも選択可能。全データへの低レイテンシアクセスが必要な場合はSSD
デプロイタイプ マルチAZ(HA) 本番環境を想定して高可用性構成を選択
SSDストレージ容量 64 GB 最小構成。後からオンラインで拡張可能
プロビジョンドSSD IOPS 自動(ストレージ1 GBあたり3 IOPS) 今回はデフォルトのまま
スループットキャパシティ 160 MB/s マルチAZ(HA)の場合、160 MB/sが最小値

今回は検証用であるため、ほぼ最小構成で動かしていますが利用用途に応じて調整してください。

ネットワークとセキュリティ

スクリーンショット 2026-07-18 11.35.50.png

今回の設定値

設定項目 設定値
VPC 既存のVPCを選択
VPCセキュリティグループ NFS用に作成したセキュリティグループ
優先サブネット ap-northeast-1aのプライベートサブネット
スタンバイサブネット ap-northeast-1cのプライベートサブネット
ネットワークタイプ IPv4
ルートテーブル VPCのルートテーブルを指定

マルチAZ(HA)構成では、優先サブネットとスタンバイサブネットを異なるAZに配置する必要があります。フローティングIPアドレスによるフェイルオーバーのため、ルートテーブルの指定も必要です。

セキュリティグループではNFSに必要なポートを開放しておきます。FSx for OpenZFSで必要なインバウンドルールは以下のとおりです。

プロトコル ポート範囲 用途
TCP 111 NFS portmapper
UDP 111 NFS portmapper
TCP 2049 NFS
UDP 2049 NFS
TCP 20001-20003 NFS mount
UDP 20001-20003 NFS mount

ソースにはマウント元のEC2インスタンスが属するセキュリティグループやCIDRを指定します。

暗号化とルートボリュームの設定

スクリーンショット 2026-07-18 11.36.02.png

今回の設定値

設定項目 設定値
暗号化キー aws/fsx(デフォルト)
データ圧縮タイプ LZ4
タグをスナップショットにコピー 有効
NFSエクスポートオプション rw,crossmnt
レコードサイズ 128 KiB(デフォルト)

データ圧縮はLZ4を選択しました。Z-Standard(zstd)のほうが圧縮率は高いですが、CPU負荷が大きくなるため、一般的なユースケースではLZ4が無難です。

バックアップとメンテナンス

今回の設定値

設定項目 設定値
毎日の自動バックアップ 無効
S3アクセス 無効
週次メンテナンスウィンドウ プリファレンスなし

今回は検証目的なのでバックアップは無効にしていますが、本番環境ではAWS Backupとの連携で自動バックアップを有効にすることを推奨します。

確認画面で「作成後に編集可能」かどうかがわかる

作成前の確認画面では、各パラメータの横に「作成後に編集可能」かどうかがアイコンで表示されます。これがかなり便利で、作成前にどのパラメータが後から変更できるのか一目でわかります。

スクリーンショット 2026-07-18 11.36.27.png

スクリーンショット 2026-07-18 11.36.46.png

整理すると以下のとおりです。

パラメータ 作成後に変更可能か
ストレージクラス、デプロイタイプ 不可
VPC、サブネット 不可
暗号化キー(KMS) 不可
ストレージ容量 可能
プロビジョンドSSD IOPS 可能
スループットキャパシティ 可能
データ圧縮タイプ、レコードサイズ 可能
バックアップ設定、メンテナンスウィンドウ 可能

ストレージクラスやデプロイタイプ、ネットワーク関連は作成後に変更できないため、最初の設計段階で慎重に決める必要があります。一方、容量やスループットは後からスケールアップできるので、最初は最小構成で始めて様子を見るという判断もしやすいです。

手動で作成する際にはこの画面と巡り合えるのですが、CloudFormationやTerraformではこの画面と遭遇することなく進んでしまうので、やはり手動で1度作っておくのは重要だなと思わされました。

作成完了

設定を確認して「ファイルシステムを作成」で作成が開始されます。ファイルシステムのステータスが「利用可能」になるまで待ちます。今回は10分ほどで作成が完了しました。この部分はシングルAZなのかマルチAZなのかによって変わります。

スクリーンショット 2026-07-18 11.39.59.png

EC2からマウントする

マウント方式: DNSベースとIPアドレスベース

FSx for OpenZFSのボリュームをマウントする方法は2つあります。

マウント方式 指定例 制約
DNSベース fs-xxxxx.fsx.ap-northeast-1.amazonaws.com:/fsx/ AWSが自動作成するDNSレコードは同一VPC内からのみ名前解決が可能
IPアドレスベース 10.8.15.221:/fsx/ 別VPCからアクセスする場合はこちらを使う

今回はEC2とFSxが同一VPC内にあるため、DNSベースでマウントします。別VPCからアクセスする場合、AWSが提供するデフォルトのDNS名(fs-xxxxx.fsx.region.amazonaws.com)は同一VPC内からしか解決できないため、IPアドレスを直接指定する必要があります。Route 53のPrivate Hosted ZoneにFSxのIPアドレスを登録し、そのPHZを別VPCに関連付ければDNS名でのアクセスも可能ですが、マルチAZ(HA)構成ではフローティングIPを使用するため、PHZへの静的なIP登録は推奨されません。

また、別VPCからのアクセス経路についても注意が必要です。マルチAZ(HA)構成ではフローティングIPのルーティングの都合上、VPCピアリングやDirect Connect、Site-to-Site VPNではアクセスできません。Transit Gatewayの利用が必須となります。Single-AZ構成であればVPCピアリングでもアクセス可能です。

NFSバージョンの選択: v3とv4の違い

FSx for OpenZFSはNFSv3、v4.0、v4.1、v4.2をサポートしています。どのバージョンを使うかはユースケースによって変わります。

比較項目 NFSv3 NFSv4
パフォーマンス レイテンシ、スループット、IOPSで有利な場合がある v3よりやや劣る場合がある
ファイルロック 別プロトコル(NLM)で処理 プロトコル内蔵で堅牢
クライアントキャッシュ デリゲーションによるキャッシュなし 読み取りデリゲーションによりクライアント側キャッシュが可能
Windows対応 Windowsクライアントで使用可能 Windows NFSクライアントは非対応
ポート 111、2049、20001-20003が必要 2049のみで動作

パフォーマンス重視ならNFSv3、複数クライアントからの同時アクセスが多い場合やファイルロックの堅牢性を求めるならNFSv4が適しています。今回はパフォーマンスを重視してNFSv3を選択しました。

前提条件の確認

マウント先のEC2インスタンス(Amazon Linux 2023)にSSMセッションマネージャーで接続し、まずは前提条件を確認します。

nfs-utilsのインストール確認:

rpm -q nfs-utils
nfs-utils-2.5.4-2.rc3.amzn2023.0.3.x86_64

Amazon Linux 2023ではnfs-utilsがデフォルトでインストールされています。もしインストールされていなければsudo yum install -y nfs-utilsで導入します。

カーネルバージョンの確認:

uname -r
6.18.3+eb1.138.amzn2023.x86_64

ポートの疎通確認

マウントする前に、EC2からFSxのエンドポイントに対してNFS関連ポートの疎通を確認しておきます。

sudo yum install -y nmap-ncat
nc -vz fs-0e2fe071d9452224c.fsx.ap-northeast-1.amazonaws.com 111
Ncat: Connected to 10.8.15.221:111.
nc -vz fs-0e2fe071d9452224c.fsx.ap-northeast-1.amazonaws.com 2049
Ncat: Connected to 10.8.15.221:2049.

スクリーンショット 2026-07-18 11.54.27.png

ポート111(portmapper)と2049(NFS)の両方に接続できることを確認しました。もしここで接続できない場合は、セキュリティグループやルートテーブルの設定を見直してください。

マウントの実行

マウントポイントを作成してマウントします。

sudo mkdir -p /mnt/fsx
sudo mount -t nfs -o noatime,nfsvers=3,async,nconnect=16,rsize=1048576,wsize=1048576 \
  fs-0e2fe071d9452224c.fsx.ap-northeast-1.amazonaws.com:/fsx/ /mnt/fsx

主なマウントオプションの意味は以下のとおりです。

オプション 意味
noatime ファイルアクセス時にタイムスタンプを更新しない(パフォーマンス向上)
nfsvers=3 NFSv3を使用
async 非同期書き込み(パフォーマンス優先)
nconnect=16 NFSサーバーへの接続数を16に増やす(スループット向上)
rsize=1048576 読み取りブロックサイズを1 MBに設定
wsize=1048576 書き込みブロックサイズを1 MBに設定

マウントの確認

df -hでマウントされていることを確認します。

df -h /mnt/fsx
Filesystem                                              Size  Used Avail Use% Mounted on
fs-0e2fe071d9452224c.fsx.ap-northeast-1.amazonaws.com:/fsx/  64G     0   64G   0% /mnt/fsx

スクリーンショット 2026-07-18 12.05.51.png

64 GBのボリュームが/mnt/fsxにマウントされていることが確認できました。

アンマウント

検証後はアンマウントして元に戻します。

sudo umount /mnt/fsx
df -h /mnt/fsx
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1   30G  1.5G   29G   7% /

スクリーンショット 2026-07-18 12.07.24.png

FSxのマウントが解除され、ローカルディスクの情報に戻っていることが確認できます。

まとめ

FSx for OpenZFSのファイルシステム作成からEC2でのNFSマウントまでの手順を整理しました。

手順 ポイント
ファイルシステム作成 デプロイタイプは可用性要件に合わせて選択。本番ならマルチAZ(HA)
セキュリティグループ TCP/UDP 111、2049、20001-20003を許可
疎通確認 マウント前にnmap-ncatでポートの疎通を確認しておくとトラブルシュートが楽
マウント nconnectやrsize/wsizeなどのオプションでパフォーマンスチューニングが可能

構築自体はEFSと大きく変わりませんが、NFSのバージョンやマウントオプションの選択肢が多い分、要件に合わせた調整の余地があります。本番利用に向けては、/etc/fstabへの永続化設定やAWS Backupの有効化も忘れずに検討してください。

次回はスナップショットやクローンなど、OpenZFSならではの機能についても触れてみたいと思います。

参考資料

0
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
0
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?