Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

NFS(エヌエフエス)とは | 意味や読み方など丁寧でわかりやすい用語解説

NFS(エヌエフエス)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ネットワークファイルシステム (ネットワークファイルシステム)

英語表記

Network File System (ネットワークファイルシステム)

用語解説

NFS (Network File System) は、ネットワークを通じて複数のコンピュータ間でファイルやディレクトリを共有するための分散ファイルシステムプロトコルである。これは、あるコンピュータ(クライアント)が別のコンピュータ(サーバー)のファイルシステムを、あたかも自分のローカルストレージにあるかのように利用できるようにする技術である。システムエンジニアを目指す上で、サーバーやストレージ、クラウドの基盤技術を理解する上でNFSの知識は不可欠だ。

NFSは1980年代にSun Microsystems社によって開発され、以来、UNIX系OSを中心に広く普及してきた。現在ではLinuxを含む多くのOSで標準的にサポートされている。この仕組みは、データの集中管理、複数のユーザーやアプリケーションによるデータ共有、あるいはディスクレスワークステーション(自身のストレージを持たないコンピュータ)の運用など、多岐にわたるシナリオで活用されている。クライアントはNFSサーバーが共有しているディレクトリ(これを「エクスポート」と呼ぶ)を、自身のローカルファイルシステム上の任意の場所に「マウント」することで利用可能になる。これにより、リモートのファイルやディレクトリにアクセスする際に、特別なネットワークコマンドを使うことなく、通常のファイル操作コマンド(ls, cp, mvなど)を透過的に使用できるようになる。

NFSの詳細な動作原理を理解するために、その歴史と技術要素を見ていこう。NFSには複数のバージョンが存在する。NFSv2は最初の広く普及したバージョンで、UDPを主要なトランスポートプロトコルとして利用し、ステートレスな設計を特徴とした。ステートレスとは、サーバーがクライアントの過去の状態(どのファイルを開いているか、どこまで読み込んだかなど)をほとんど記憶しない設計を指す。この設計はサーバーのクラッシュからの復旧が容易という利点があった一方で、堅牢なファイルロック機能の実装が難しい、ネットワークの信頼性に依存するという課題も抱えていた。

その後、NFSv3が登場し、主にパフォーマンスと堅牢性の向上が図られた。具体的には、大容量ファイルのサポート強化、非同期書き込みの導入、ファイルサイズやオフセットの64ビット化などが行われた。また、UDPだけでなくTCPをトランスポートプロトコルとして利用できるようになり、信頼性の高い通信やファイアウォール越えの通信が容易になった。

NFSv4はさらに大きな改良が加えられたバージョンで、特にセキュリティとファイアウォール対応が強化された。NFSv4はTCPを必須とし、すべてのNFS操作を単一のポート(通常は2049番ポート)で行うようになったため、ファイアウォール設定が大幅に簡素化された。また、Kerberos認証のサポートにより、より強力なユーザー認証と通信の暗号化が可能になった。さらに、NFSv4は「ステートフル」なプロトコルへと移行し、サーバーがクライアントのセッション状態(ファイルロック情報など)を記憶するようになった。これにより、より堅牢なファイルロック機能や、クライアントがクラッシュした場合の自動的なロック解除などの高度な機能が提供されるようになった。

NFSの基本的な通信はRPC (Remote Procedure Call) という技術に基づいている。RPCは、あるコンピュータのプログラムが、ネットワーク上の別のコンピュータで実行されているプログラムの関数やプロシージャを、あたかもローカルで実行するかのように呼び出すためのメカニズムである。NFSクライアントは、ファイル読み書きやディレクトリ参照などの操作をRPCを通じてNFSサーバーに要求し、サーバーはその要求を処理して結果を返す。このRPCサービスを協調動作させるために、ポートマッパー (portmapperまたはrpcbind) というサービスが利用される。これは、RPCプログラムが使用するポート番号を管理し、クライアントからの問い合わせに対して適切なポート番号を教えてくれる役割を担う。

NFSサーバー側では、NFSデーモン (nfsd) やマウントデーモン (mountd) などが動作し、クライアントからの接続要求やファイルアクセス要求に応答する。クライアントがNFS共有をマウントする際、まずmountdデーモンにマウント要求を送信し、許可されると、以降のファイル操作はnfsdデーモンを通じて行われる。

NFSのセキュリティに関しては、初期バージョンではIPアドレスによるアクセス制限が主な方法であり、ユーザー認証はUID (User ID) やGID (Group ID) のマッピングに依存していたため、あまり強力とは言えなかった。NFSv4では、Kerberosなどの外部認証システムと連携することで、よりセキュアな環境を構築できるようになった。しかし、依然としてNFSを運用する際には、アクセス制限の設定、適切なパーミッション管理、そしてネットワークレベルでのセキュリティ対策が重要となる。

NFSは、その透過的なファイルアクセス能力により、多くの場面で利用されている。例えば、複数のWebサーバーが同じコンテンツを共有する場合や、仮想マシンが共有ストレージからディスクイメージを読み書きする場合、あるいは大規模な計算クラスタで計算結果を共有する場合などである。NFSは、ファイル共有の基本的な要件を満たす強力なツールであり、分散システム設計の基礎として理解しておくべき重要なプロトコルである。その進化は、より高性能でセキュアな、そして管理しやすいファイル共有の実現を目指してきた歴史そのものであると言える。適切なバージョン選択と設定を行うことで、効率的かつ安定したファイル共有環境を構築することが可能だ。

関連コンテンツ