【えぬえふえす】

NFS とは?

最終更新:
💡 別サーバーのディスクを「自分のディスクのように使う」仕組み

ネットワーク経由で別のコンピューターのファイルシステムをローカルに「マウント」して使う仕組み。Linuxサーバー間でファイル共有に広く使われる。

📌 このページのポイント
別サーバーのファイルを、ローカルのパスで使う 🖥 NFSサーバー 公開するディレクトリ 📁 /shared/data 📁 /shared/docs 💻 A ローカルのパス /mnt/data 💻 B ローカルのパス /mnt/docs 💻 C ローカルのパス /mnt/data 操作の要求 マウントして、ローカルのパスで利用する 権限・キャッシュ・同時更新も考える
サーバーが公開するディレクトリを3クライアントから利用する模式例。AとCはdata、Bはdocsをマウントした想定。矢印はクライアントからサーバーへのファイル操作要求で、応答は省略。更新の即時反映や無条件の読み書きを保証する図ではない。
ひよこ ひよこ
NFSって、どうやってファイルを共有するの?
ペンギン先生 ペンギン先生
別のサーバーが公開するディレクトリをマウントして、ローカルのパスで使うよ。たとえば `/mnt/data` に見えるようにできる。読み書きできる範囲は、公開の設定や権限によるんだ。
ひよこ ひよこ
SCPでコピーするのと何が違うの?
ペンギン先生 ペンギン先生
コピー先に別のファイルを作るのに対し、NFSでは共有先のファイルへアクセスするよ。ただしキャッシュも使うので、変更が全クライアントへ常に瞬時に見えるわけではないんだ。
ひよこ ひよこ
ネットワーク越しだと遅い?
ペンギン先生 ペンギン先生
速度はネットワーク、サーバー、キャッシュや処理内容によるよ。Linuxのサーバー側のasync設定は、安定したストレージに書く前に応答できる代わりに、クラッシュ時の損失リスクがある。syncは安定したストレージへの反映後に応答する設定で、すべての障害に安全という意味ではないんだ。
ひよこ ひよこ
同じファイルに同時に書いても大丈夫?
ペンギン先生 ペンギン先生
共有できることと、同時更新が正しく調整されることは別だよ。アプリの書き方、キャッシュ、ファイルロックなどを考える必要がある。NFSv4ではロックもプロトコルに組み込まれているけれど、それだけでアプリの更新処理が自動的に整うわけではないんだ。
ひよこ ひよこ
NFSv4なら通信は必ず暗号化される?
ペンギン先生 ペンギン先生
必ずではないよ。認証や保護の方式を設定する必要がある。LinuxではKerberosのkrb5は認証、krb5iは整合性保護、krb5pは暗号化を含む方式で、クライアントとサーバーの構成が必要なんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「NFS」って出てきたら「ネットワーク越しに別サーバーのファイルをマウントして使う仕組みだな」と思えばだいたいOK!
📖 おまけ:英語の意味
「Network File System」 = ネットワークファイルシステム
💬 1984年にSun Microsystemsが開発。ネットワーク越しのファイルを、ローカルのディレクトリを使うように扱うためのプロトコルだよ。

参考資料

← 用語集にもどる