手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 NFS サーバー構築 – NFSv4 と exports の基本

この記事の位置づけ

Ubuntu 22.04 で NFS サーバーを構築する記事です。NFSv4 を前提に、共有ディレクトリ、exports、サービス反映、クライアントから見える状態までを確認します。

Ubuntu 22.04 サーバー構築・運用メモへ戻る

NFS サーバーの位置づけ

NFS は Linux / UNIX 系の環境でよく使われるネットワークファイル共有です。Samba が Windows 互換のファイル共有を意識するのに対し、NFS は Linux サーバー同士の共有や、検証環境、仮想化基盤の補助ストレージなどで扱いやすい仕組みです。

この記事では NFS サーバー側を扱います。クライアント側の mount や fstab は別記事に分け、サーバーが何をどの範囲へ公開するのかに集中します。

インストールする

NFS サーバーに必要な nfs-kernel-server をインストールします。

sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt -y install nfs-kernel-server

共有ディレクトリを作成する

共有するディレクトリを作成します。ここでは例として /srv/nfs/share を使います。実際の運用では、データ配置、バックアップ、権限設計に合わせてパスを決めます。

sudo mkdir -p /srv/nfs/share
sudo chown nobody:nogroup /srv/nfs/share
sudo chmod 0775 /srv/nfs/share

/etc/exports を設定する

NFS で公開するディレクトリと、許可するクライアントネットワークを /etc/exports に記述します。以下は 192.0.2.0/24 向けの例です。自分の管理ネットワークに置き換えてください。

sudo tee /etc/exports <<'EOF'
/srv/nfs/share 192.0.2.0/24(rw,sync,no_subtree_check)
EOF

rw は読み書き許可、sync は同期書き込み、no_subtree_check はサブディレクトリ単位の検査を無効化する指定です。NFS はネットワーク越しにファイルシステムを見せるため、公開範囲を広くしすぎないことが重要です。

設定を反映する

exports を反映し、NFS サーバーを有効化します。反映後は公開状態を確認します。

sudo exportfs -rav
sudo systemctl enable --now nfs-server
sudo systemctl status nfs-server --no-pager
sudo exportfs -v

到達性を確認する

NFS サーバー側で待ち受け状態を確認します。ファイアウォールを使っている場合は、クライアントから NFS に到達できるように許可します。

sudo ss -lntup | grep -E ':(111|2049)'
showmount -e 127.0.0.1

設計上の注意

  • NFS の公開先は管理ネットワークや特定クライアントに限定する。
  • ユーザー ID / グループ ID の対応関係を意識する。
  • 重要データを置く場合はバックアップと権限設計を別途考える。
  • 起動時の依存関係はクライアント側の fstab / systemd mount と合わせて確認する。

NFS サーバーで注意すること

NFS は簡単に共有ディレクトリを公開できますが、認証や暗号化を NFS 単体に期待しすぎない方が安全です。公開先ネットワーク、export オプション、UID / GID の一致、root squash の扱いを明確にします。

複数サーバーで使う共有ストレージとして扱う場合は、バックアップ、排他制御、障害時の再マウントも含めて設計します。

次に読む記事

Ubuntu 22.04 サーバー構築・運用メモへ戻る

参考書籍

参考書籍
参考書籍

ストーリーで覚える Linux CLI 入門

Linux のコマンドライン操作を基礎から確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

Ubuntu 22.04 NFS サーバー構築 – NFSv4 と exports の基本

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る