こんにちは!複数のLinuxサーバーを運用していると、「このサーバーのファイルをあのサーバーでもすぐに使いたい」と思ったことはありませんか?ファイルを毎回scpでコピーするのは面倒ですし、rsyncで同期するのも限界がありますよね。
そんな時に使うのが、まさにNFS (Network File System)です!NFSを利用すると、ネットワークで接続された他のサーバーのディレクトリを、まるで自分のコンピューターのローカルディレクトリのようにマウントして使用できます。ネットワーク経由でUSBドライブを接続するようなものだと考えると簡単です。😉
今日は、NFSサーバーを設定して特定のフォルダを他のコンピューターと共有する、最も基本的な3つのステップを見ていきましょう。

ステップ1: 共有ルールを定義する (/etc/exports ファイル) ✍️
NFSサーバー設定の心臓部は、/etc/exportsファイルです。このファイルは、「どのディレクトリを(What)、誰に(Whom)、どのような権限で(How)共有するか」を定義するルールの一覧です。
基本的なルールの形式は次のとおりです。
[공유할 디렉터리 경로] [허용할 클라이언트]([옵션])
各項目を詳しく見ていきましょう。
- ① 共有するディレクトリパス
- ネットワーク経由で共有したいフォルダの絶対パスを記述します。(例: /srv/data)
- ② 許可するクライアント
- 誰がこのディレクトリにアクセスできるかを指定します。様々な形式で指定できます。
- 単一IP: 192.168.1.100 (特定のコンピューター1台のみを許可)
- IP帯域: 10.0.0.0/24 (特定のネットワーク帯域全体を許可)
- ホスト名: client-pc.example.com
- 全体許可: * (すべてのクライアントを許可、セキュリティ上の注意が必要です!)
- ③ オプション
- 共有方法に関する詳細な設定を行います。最も重要なオプションをいくつか見ていきましょう。
- ro: **読み取り専用(Read-Only)**で共有します。クライアントはファイルを表示したりコピーしたりできますが、修正したり削除したりすることはできません。(デフォルト)
- rw: **読み書き(Read-Write)**の両方を許可します。クライアントはファイルを自由に修正・作成できます。
- sync: ファイル変更時にデータがディスクに完全に保存された後にクライアントに応答します。安定性は高いですが、若干の性能低下がある場合があります。(デフォルトであり推奨)
- no_root_squash: セキュリティ上非常に重要なオプションです。NFSはデフォルトで、クライアントのrootユーザーがサーバーにファイルを書き込む際、権限のないnfsnobodyユーザーに強制的にマッピングします(これをroot_squashと呼びます)。このオプションは、この機能をオフにし、クライアントのrootユーザーがサーバーでもroot権限を持つことを許可します。強力な権限であるため、本当に必要な場合にのみ使用すべきです。
総合例: /srv/data ディレクトリを10.0.0.0/24帯域のクライアントには読み書き権限で、server-Bというホストには読み取り専用で共有したい場合、/etc/exportsファイルに以下のように追加します。
/srv/data 10.0.0.0/24(rw,sync) server-B(ro,sync)
ステップ2: 設定を適用する (exportfs コマンド) 🔄
/etc/exportsファイルを修正して保存しただけでは、設定はすぐに適用されません。NFSサービスに変更されたルールを再度読み込むように指示する必要があります。このときに使用するコマンドがexportfsです。
sudo exportfs -r
- -r オプションは、/etc/exportsファイルを再読み込み(re-read)して、現在の共有リストを最新の状態に更新する役割を果たします。NFSサービスを再起動する必要なく、すぐに設定を適用できるため非常に便利です。
ステップ3: 共有状態を確認する (showmount コマンド) ✅
設定が正しく適用されたかを確認することは必須です。showmountコマンドは、NFSサーバーが現在どのディレクトリを誰と共有しているかを表示する役割を果たします。
# 自分のサーバー(localhost)の共有リストを確認します。
showmount -e localhost
このコマンドを実行したときに、ステップ1で/etc/exportsに追加した内容がそのまま表示されれば、設定は正常に完了しています!
Export list for localhost:
/srv/data 10.0.0.0/24,server-B
まとめ
いかがでしたか?思ったより簡単でしょう?
- /etc/exportsファイルに共有ルールを記述し、
- exportfs -r コマンドで設定を適用し、
- showmount -e コマンドで確認する!
この3つのステップを覚えておけば、LinuxでNFSを利用したファイル共有を自由に設定できます。残るは、クライアントサーバーでこの共有されたディレクトリをmountコマンドで接続して使用するだけです。その話は、また別の機会に詳しく取り上げたいと思います。
タグ: NFS, Linux, サーバー, ネットワーク, ファイル共有, DevOps, システムエンジニアリング, ITインフラ
コメントを残す