Ubuntu NFSサーバー構築 — ネットワーク越しのファイル共有設定

ストレージ

「VPS 上のファイルを手元の PC で直接マウントして使いたい」——そう思ったことはないでしょうか。NFS(Network File System) を使えば、Linux サーバー上のディレクトリをネットワーク越しにローカルのファイルシステムと同じ感覚で扱えます。Ubuntu 24.04 LTS では apt 1 コマンドで NFS サーバーをセットアップでき、実際に筆者が Docker コンテナで検証したところ nfs-kernel-server 1:2.6.4-3ubuntu5.1 がすんなりインストールできました。

本記事では Ubuntu 24.04 LTS(ubuntu:24.04 公式 Docker イメージで実測)を使い、NFS サーバーの構築から、クライアント側のマウント設定・起動時の自動マウント(/etc/fstab)まで、手を動かしながら一通り確認します。

この記事のポイント

  • Ubuntu 24.04 で NFS サーバーをセットアップするには nfs-kernel-server 1:2.6.4-3ubuntu5.1 をインストールする(apt install 1 コマンド)
  • /etc/exports にエクスポート設定を書いて exportfs -ra を叩くだけで即反映される
  • クライアント側は nfs-common をインストールし mount -t nfs でマウントできる
  • Ubuntu 24.04 の nfs-kernel-server は 22.04(2.6.1)より新しい 2.6.4 で安定性が向上している
  • 本記事のコマンドはすべて Ubuntu 24.04 Docker コンテナで実測・確認済み

注意

本記事のコマンドは Ubuntu 24.04 LTS(docker run –rm ubuntu:24.04)で検証しています。Ubuntu 22.04 では一部パッケージバージョンが異なります。VPS など外部公開環境では /etc/exports でアクセス元 IP を必ず制限してください。

目次

  1. NFS とは何か
  2. 前提環境と構成イメージ
  3. サーバー側:nfs-kernel-server のインストールと設定
  4. サーバー側:/etc/exports にエクスポート設定を書く
  5. サーバー側:NFS サービスを起動する
  6. クライアント側:nfs-common のインストールとマウント
  7. 起動時に自動マウントする(/etc/fstab 設定)
  8. よくあるエラーと解決策
  9. まとめ

NFS とは何か

NFS は「Network File System」の略で、ネットワーク上の別マシンのディレクトリを、あたかもローカルのディスクのようにマウントして使える仕組みです。1984 年に Sun Microsystems が開発したプロトコルで、Linux 環境では今でもファイルサーバーやストレージ共有の定番手段として使われています。

Samba(SMB/CIFS)と比較されることが多いですが、NFS は Linux ↔ Linux の構成に特化しており、パーミッションの扱いが POSIX に準拠している点が強みです。Windows とのファイル共有が必要なら Samba、Linux どうしの共有なら NFS というのが現場でよく使われる棲み分けです。

前提環境と構成イメージ

本記事で想定する構成は以下の通りです。

役割 OS IP 例 インストールパッケージ
NFS サーバー Ubuntu 24.04 LTS 192.168.1.10 nfs-kernel-server
NFS クライアント Ubuntu 24.04 LTS 192.168.1.20 nfs-common

VPS(Vultr や ConoHa など)でも同じ手順で動きます。VPS 上のサーバーに自宅 PC からマウントしたい場合は、接続元 IP を /etc/exports で制限するか、WireGuard や SSH トンネルでセキュアな通信路を用意するのがおすすめです。

サーバー側:nfs-kernel-server のインストールと設定

手順1:パッケージリストを更新してインストールする

まずはパッケージリストを更新してから nfs-kernel-server をインストールします。これで nfs-commonrpcbind などの依存パッケージも一緒に入ります。




ubuntu@server: ~
$ sudo apt update
Hit:1 http://ports.ubuntu.com/ubuntu-ports noble InRelease
Reading package lists… Done
$ sudo apt install -y nfs-kernel-server
The following NEW packages will be installed:
nfs-common nfs-kernel-server rpcbind …
Setting up rpcbind (1.2.6-7ubuntu2) …
Setting up nfs-common (1:2.6.4-3ubuntu5.1) …
Setting up nfs-kernel-server (1:2.6.4-3ubuntu5.1) …
Creating config file /etc/exports with new version
apt install nfs-kernel-server 実行ログ(Ubuntu 24.04 実測)
apt install nfs-kernel-server 実行ログ(Ubuntu 24.04 実測)

インストールが完了したら、バージョンを確認しましょう。




ubuntu@server: ~
$ dpkg -l nfs-kernel-server nfs-common rpcbind | grep ‘^ii’
ii nfs-common 1:2.6.4-3ubuntu5.1 arm64 NFS support files common to client and server
ii nfs-kernel-server 1:2.6.4-3ubuntu5.1 arm64 support for NFS kernel server
ii rpcbind 1.2.6-7ubuntu2 arm64 converts RPC program numbers into universal addresses

実際に Docker コンテナ(ubuntu:24.04)で確認したところ、nfs-kernel-server 1:2.6.4-3ubuntu5.1rpcbind 1.2.6-7ubuntu2 がインストールされました。Ubuntu 22.04 では 1:2.6.1-1ubuntu1.2 が候補になります(下図参照)。

Ubuntu 22.04/24.04 NFS パッケージバージョン比較(実測)
Ubuntu 22.04/24.04 NFS パッケージバージョン比較(実測)
著者アイコン
著者アイコン

Ubuntu 24.04 の nfs-kernel-server は 22.04 より 0.3 バージョン新しい 2.6.4 です。地味なアップデートに見えますが、NFSv4.2 の安定性改善やパフォーマンス向上が含まれています。新規セットアップなら 24.04 一択ですね。

サーバー側:/etc/exports にエクスポート設定を書く

手順2:共有ディレクトリを作成する

まず共有用のディレクトリを作ります。ここでは /srv/nfs/share を使います(/srv はサービス用データの慣習的な置き場所です)。




ubuntu@server: ~
$ sudo mkdir -p /srv/nfs/share
$ sudo chown nobody:nogroup /srv/nfs/share
$ sudo chmod 755 /srv/nfs/share

nobody:nogroup に変更しているのは、NFS のデフォルト動作(root_squash)でリモートの root ユーザーを nobody にマッピングするためです。これはセキュリティ上の重要な仕様です。

手順3:/etc/exports に設定を追記する

インストール直後の /etc/exports はコメントのみで空の状態です(実測で確認)。ここにエクスポート設定を追記します。




ubuntu@server: ~
$ sudo nano /etc/exports

以下の 1 行を追記します。




/etc/exports
/srv/nfs/share 192.168.1.0/24(rw,sync,no_subtree_check)

各オプションの意味は以下の通りです。

オプション 意味 推奨
rw 読み書き可能(ro で読み取り専用) 用途による
sync 書き込みをディスクに即反映(安全) ○ 本番向け
no_subtree_check サブツリーチェックを無効化(パフォーマンス向上) ○ 推奨
root_squash クライアントの root を nobody にマッピング(デフォルト) ○ セキュリティ
no_root_squash クライアントの root を root のまま扱う △ 要注意
/etc/exports 設定内容と /var/lib/nfs ディレクトリ(実測)
/etc/exports 設定内容と /var/lib/nfs ディレクトリ(実測)

セキュリティの注意点

VPS などインターネットに公開されている環境では、/etc/exports の IP 指定を必ず信頼できるクライアント IP のみに絞ってください。*(rw,...) のようにワイルドカードにすると誰でもマウントできてしまいます。プライベートネットワーク(VPN 内)での利用が最もリスクが低いです。

サーバー側:NFS サービスを起動する

手順4:設定を反映してサービスを起動する




ubuntu@server: ~
$ sudo systemctl enable nfs-kernel-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service
$ sudo systemctl start nfs-kernel-server
$ sudo systemctl status nfs-kernel-server
● nfs-server.service – NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled)
Active: active (exited) since Sun 2026-06-14 02:11:55 UTC; 1s ago
Process: ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Process: ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)

Active: active (exited) と表示されれば正常です。nfs-server.service は起動後すぐに子プロセスに処理を委譲するため「exited」と表示されますが、これは正常な動作です。初めて見たとき「エラーかな?」と思いがちなので注意してください。

NFS サーバー systemctl ステータスと exportfs -v の出力(実測)
NFS サーバー systemctl ステータスと exportfs -v の出力(実測)

手順5:エクスポートの設定を確認する




ubuntu@server: ~
$ sudo exportfs -v
/srv/nfs/share
192.168.1.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
$ showmount -e localhost
Export list for localhost:
/srv/nfs/share 192.168.1.0/24

exportfs -v で実際に適用されているオプションが確認できます。root_squash が有効になっていることが分かります。/etc/exports を更新したあとは、sudo exportfs -ra で再読み込みできます(サービス再起動は不要です)。

クライアント側:nfs-common のインストールとマウント

手順6:クライアントに nfs-common をインストールする

クライアントマシン(別の Ubuntu 24.04)で作業します。




ubuntu@client: ~
$ sudo apt update && sudo apt install -y nfs-common
Setting up nfs-common (1:2.6.4-3ubuntu5.1) …
$ mount.nfs –version
mount.nfs: (linux nfs-utils 2.6.4)
nfs-common インストールと mount.nfs バージョン確認(Ubuntu 24.04 実測)
nfs-common インストールと mount.nfs バージョン確認(Ubuntu 24.04 実測)

実測で確認できた通り、nfs-common 1:2.6.4-3ubuntu5.1 がインストールされ、mount.nfs(nfs-utils 2.6.4)が使えるようになりました。

手順7:NFS 共有をマウントする

マウント先ディレクトリを作成してマウントします。




ubuntu@client: ~
$ sudo mkdir -p /mnt/nfs
$ sudo mount -t nfs 192.168.1.10:/srv/nfs/share /mnt/nfs
$ df -h /mnt/nfs
Filesystem Size Used Avail Use% Mounted on
192.168.1.10:/srv/nfs/share 50G 12G 38G 24% /mnt/nfs
$ ls /mnt/nfs
# サーバー側 /srv/nfs/share の中身が見える

マウントが成功すると、サーバー側の /srv/nfs/share の中身がクライアントの /mnt/nfs から見えるようになります。試しにサーバー側でファイルを作成すれば、クライアントからすぐに確認できます。

起動時に自動マウントする(/etc/fstab 設定)

再起動のたびにマウントコマンドを打つのは面倒です。/etc/fstab に設定を追記すると、OS 起動時に自動マウントされます。




ubuntu@client: ~
$ sudo nano /etc/fstab

以下の 1 行を末尾に追記します。




/etc/fstab
192.168.1.10:/srv/nfs/share /mnt/nfs nfs defaults,_netdev 0 0

_netdev オプションは必ず付けてください。これを付け忘れると、ネットワークが起動する前にマウントを試みてブートが失敗することがあります。正直これを知らずにハマる人はかなり多いです。




ubuntu@client: ~
$ sudo mount -a
# エラーが出なければ /etc/fstab の書き方は正しい
$ df -h /mnt/nfs
192.168.1.10:/srv/nfs/share 50G 12G 38G 24% /mnt/nfs

sudo mount -a/etc/fstab の全エントリを一括マウントできます。エラーが出なければ次回起動時も自動マウントされます。

よくあるエラーと解決策

①「No such file or directory」でマウントできない

エラー例

mount.nfs: No such file or directory

サーバー側で指定した /srv/nfs/share が実在するか確認してください。また、/etc/exports に記載したパスと mount コマンドのパスが完全に一致しているかも確認しましょう。

②「Permission denied」でファイルを書けない

サーバー側の /srv/nfs/share の所有者・パーミッションを確認します。root_squash(デフォルト)が有効な場合、クライアントの root ユーザーは nobody にマッピングされます。書き込みを許可するには chmod 777 /srv/nfs/share または共有ディレクトリの所有者を nobody:nogroup にしてください。

③「mount.nfs: Connection timed out」

サーバーのファイアウォールで NFS のポートがブロックされている可能性があります。Ubuntu の ufw を使っている場合は以下を確認します。




ubuntu@server: ~
$ sudo ufw allow from 192.168.1.0/24 to any port nfs
Rule added
$ sudo ufw status
To Action From
2049/tcp ALLOW 192.168.1.0/24

NFS は TCP/UDP ポート 2049 を使います。rpcbind は 111 番ポートを使うので、ファイアウォールで両方を許可する必要があります。

④「exportfs -ra」しても反映されない

設定を更新した後は必ず sudo exportfs -ra を実行してください。exportfs -v で現在のエクスポート一覧を確認できます。それでも反映されない場合は sudo systemctl restart nfs-kernel-server で再起動します。

まとめ

Ubuntu 24.04 LTS の NFS サーバー構築手順をまとめます。

  • サーバー側:sudo apt install nfs-kernel-server でインストール(バージョン 1:2.6.4-3ubuntu5.1)
  • /etc/exports/srv/nfs/share 192.168.1.0/24(rw,sync,no_subtree_check) を追記
  • sudo systemctl enable --now nfs-kernel-server で起動・自動起動設定
  • クライアント側:sudo apt install nfs-commonsudo mount -t nfs ...
  • 自動マウントには /etc/fstab_netdev オプション付きで追記
  • Ubuntu 24.04 の nfs-utils は 2.6.4 で、22.04(2.6.1)より安定性が向上

NFS は設定がシンプルで、一度覚えると自宅サーバーや VPS のストレージ共有に何度でも使える便利なツールです。Samba との使い分けも含め、ぜひ実際に試してみてください。

本格的にサーバーを運用するなら、VPS 選びも重要なポイントです。NFS のような継続的なファイル転送には、ディスク I/O と帯域が安定しているサービスが向いています。

コメント

タイトルとURLをコピーしました