Network File System (NFS)詳解
Network File System (NFS)は、
UNIX系システムにおいて広く利用されている分散
ファイルシステムであり、そのプロトコルを指す場合もあります。NFSを使用することで、ネットワークを介してリモートのコンピュータに接続されたストレージを、あたかもローカルに接続されているかのように利用することが可能です。これは、データの共有やアクセスを容易にする上で非常に重要な役割を果たします。
NFSの歴史とバージョン
NFSは
サン・マイクロシステムズによって開発され、
1984年に最初の正式な規格であるNFS version 2 (NFS v2)が発表されました。その後、機能強化やセキュリティの向上を目的として、複数のバージョンがリリースされています。
NFS v1: サン社内での実験にとどまり、公開はされませんでした。
NFS v2 (1984年): 初期のバージョンで、UDPを用いたステートレスな通信が特徴です。ファイルロックなどの機能は、NFSプロトコルとは別に実装されていました。SunOS 2.0で初めて実装されました。
NFS v3 (1995年): ファイルサイズの拡張(64bit対応、4GiB以上のファイルサポート)、非同期書き込みによる性能向上、ファイル属性の取得方法の改善、ディレクトリ走査機能の強化(READDIRPLUS)、TCP転送のサポートなど、多くの機能強化が加えられました。
NFS v4 (2000年以降): AFSやCIFSといった他の
ファイルシステムとの競争を踏まえ、性能向上、Kerberos認証によるセキュリティ強化、ステートフルプロトコルの導入などが行われました。開発は
Internet Engineering Task Forceに移管され、複数の企業が参加しました。NFS v4.1、NFS v4.2と、さらなる改良が加えられています。
NFSのアーキテクチャと関連プロトコル
NFSは、クライアントとサーバ間の通信にONC RPC (Open Network Computing Remote Procedure Call) を使用します。一般的なポート番号はTCP 2049番です。NFS v3までは、ファイルロックやマウント要求などのONC RPCが使用するポート番号は動的に割り当てられることが多く、
ファイアウォールでの制御が困難でしたが、NFS v4ではTCP 2049番のみを使用するようになり、セキュリティが向上しました。
NFS v2やv3では、ファイルロックやクォータ管理といった機能はNFSプロトコル本体とは独立したプロトコル(Network Lock Manager、クォータ情報の遠隔通知など)によって提供されていました。これらはNFS v4でプロトコル本体に統合されました。また、WebNFSは
ファイアウォール越しでのNFSアクセスを容易にする拡張機能です。
アクセスコントロールとセキュリティ
NFS v2およびv3では、
UNIXのUID (User ID)とGID (Group ID)を用いたアクセス制御が行われます。クライアントとサーバでUID/GIDの管理方法が異なる場合は、対応表やNIS/ugiddなどのサービスを用いる必要があります。NFS v4では、ユーザー名とグループ名を用いたアクセス制御となり、Kerberos認証によるセキュリティ強化も実現しました。
root squashは、セキュリティ上の重要な機能です。クライアント側でroot権限を持つユーザーが、NFSサーバにアクセスした場合、サーバ側でその権限を制限(例えばnobodyユーザーへの変更)する機能です。無許可アクセスを防ぐために、多くのシステムで有効化されています。
利用可能なプラットフォーム
NFSは、当初SunOSで実装されて以来、
Linux、FreeBSD、
Solaris、
HP-UX、macOS、
Windows Serverなど、多くのプラットフォームでサポートされています。Windowsでは、Services for
UNIXがNFSクライアントとサーバの機能を提供しています。1990年代初頭には、MacintoshでもWollongong社のソフトウェアによりNFSが利用可能になりました。
まとめ
NFSは、ネットワーク上のファイル共有を容易にする強力な分散
ファイルシステムです。長年にわたるバージョンアップにより、パフォーマンス、セキュリティ、そしてプラットフォームの互換性が向上しています。現代のネットワーク環境においても、重要な役割を担い続けています。