ネットワークファイルシステム(NFS)は、 1984年にサン・マイクロシステムズ(サン)によって開発された分散ファイルシステムプロトコルです[1] 。クライアントコンピュータ のユーザーは、ローカルストレージにアクセスするのと同様に、コンピュータネットワークを介してファイルにアクセスすることができます。NFSは、他の多くのプロトコルと同様に、 Open Network Computing Remote Procedure Call (ONC RPC)システムを基盤としています。NFSはIETFのオープン標準です。サン・マイクロシステムズ社内で開発された最初の実験バージョン以降、プロトコルのすべてのバージョンはRFC( Request for Comments )シリーズで定義されており、誰でもプロトコルを実装できます。
Sunはバージョン1を社内実験のみに使用していました。開発チームがNFSバージョン1に大幅な変更を加え、Sunの社外にリリースした際に、バージョン間の相互運用性とRPCバージョンフォールバックをテストするため、新しいバージョンをバージョン2としてリリースすることを決定しました。[2] [3]
プロトコルのバージョン2(1989年3月のRFC 1094で定義)は、当初はユーザーデータグラムプロトコル(UDP)上でのみ動作していました。設計者は、サーバー側をステートレスに保ち、例えばロック機能をコアプロトコルの外部で実装することを意図していました。NFSバージョン2の開発には、ラッセル・サンドバーグ、ボブ・ライオン、ビル・ジョイ、スティーブ・クライマンなどが関わっています。[1] [4]
仮想ファイルシステムインターフェースは、シンプルなプロトコルに反映されたモジュール型の実装を可能にします。1986年2月までに、System Vリリース2、DOS、VAX/VMSなどのオペレーティングシステムでEuniceを使用した実装が実証されました。[4] NFSv2では、 32ビットの制限 により、ファイルの最初の2GBしか読み込めません。
バージョン3(RFC 1813、1995年6月)で追加されました:
サン・マイクロシステムズ社内で最初の NFS バージョン 3 提案がなされたのは、NFS バージョン 2 のリリース後間もなくのことでした。その主な目的は、NFS バージョン 2 での同期書き込み操作のパフォーマンス問題を軽減しようとするものでした。[6] 1992 年 7 月までに、NFS バージョン 2 の多くの欠点は実装によって解決され、大きなファイルのサポート (64 ビットのファイル サイズとオフセット) の欠如だけが差し迫った問題として残っていました。バージョン 3 の導入時には、トランスポート層プロトコルとしてTCPをサポートするベンダーが増え始めました。いくつかのベンダーがすでに TCP をトランスポートとして NFS バージョン 2 のサポートを追加していましたが、サン・マイクロシステムズはバージョン 3 のサポートを追加するのと同時に、NFS のトランスポートとして TCP のサポートも追加しました。TCP をトランスポートとして使用することで、WAN上での NFS の使用がより現実的になり、ユーザー データグラム プロトコルで課せられた 8 KB の制限を超える、より大きな読み取りおよび書き込み転送サイズを使用できるようになりました。
YANFS(Yet Another NFS)は、以前はWebNFSと呼ばれていましたが、NFSv2およびNFSv3の拡張であり、PortmapやMOUNTプロトコルの複雑さを伴わずに、制限の厳しいファイアウォールの背後でも動作することを可能にします。YANFS/WebNFSは固定のTCP/UDPポート番号(2049)を持ち、クライアントが各ファイルシステムの初期ファイルハンドルを決定するためにMOUNT RPCサービスにアクセスする代わりに、開始点として使用できるパブリックファイルハンドル(NFSv2ではnull、NFSv3では長さ0)の概念を導入しました。これらの変更は両方とも、後にNFSv4に組み込まれました。WebNFS以降のYANFSの開発には、サーバーサイドの統合も含まれています。
バージョン4(RFC 3010、2000年12月、RFC 3530、2003年4月、RFC 7530、2015年3月で改訂)は、Andrew File System(AFS)とServer Message Block(SMB)の影響を受けており、パフォーマンスの改善、強力なセキュリティの義務付け、ステートフルプロトコルの導入などが行われている。[7] [8]バージョン4は、Sun MicrosystemsがNFSプロトコルの開発を引き継いだ後、インターネット技術タスクフォース(IETF)で開発された最初のバージョンとなった。
NFSバージョン4.1(RFC 5661、2010年1月、RFC 8881で改訂、2020年8月)は、複数のサーバーに分散されたファイルへのスケーラブルな並列アクセス(pNFS拡張)を含む、クラスター化されたサーバー展開の利点を活用するためのプロトコルサポートを提供することを目的としています。バージョン4.1にはセッショントランキングメカニズム(NFSマルチパスとも呼ばれます)が含まれており、一部のエンタープライズソリューションでVMware ESXiとして利用可能です。
NFS バージョン 4.2 ( RFC 7862) は、サーバー側のクローンとコピー、アプリケーション I/O アドバイス、スパース ファイル、スペース予約、アプリケーション データ ブロック (ADB)、任意の MAC セキュリティ システムに対応する sec_label 付きのラベル付き NFS、pNFS の 2 つの新しい操作 (LAYOUTERROR と LAYOUTSTATS) などの新機能を備え、2016 年 11 月に公開されました。
NFSv4が従来のものに比べて大きな利点の一つは、サービスの実行にUDPまたはTCPポート2049のみを使用する点です。これにより、ファイアウォールを越えてプロトコルを使用することが簡単になります。[9]
WebNFSは、NFSバージョン2およびバージョン3の拡張版であり、NFSをWebブラウザに容易に統合し、ファイアウォールを介した操作を可能にします。2007年、サン・マイクロシステムズはクライアント側のWebNFS実装をオープンソース化しました。[10]
さまざまなサイドバンドプロトコルが NFS に関連付けられるようになりました。注:
NFS は次の場所で利用可能です:

ONCプロトコル(当時はSunRPCと呼ばれていました)の開発当時、同等の機能を提供していたのはApolloのNetwork Computing System(NCS)だけでした。2つの競合するグループは、2つのリモートプロシージャコールシステムの根本的な違いをめぐって開発を進めました。議論の中心はデータエンコード方式でした。ONCの外部データ表現(XDR)は、接続する両方のピアがリトルエンディアンのマシンアーキテクチャであっても、常にビッグエンディアンで整数をレンダリングしました。一方、NCSの方式は、2つのピアがマシンアーキテクチャで共通のエンディアンを使用している場合、バイトスワップを回避しようとしました。1987年3月、Network Computing Forumと呼ばれる業界団体が設立され、2つのネットワークコンピューティング環境の調和を目指しましたが、最終的には失敗に終わりました。
1987年、サンとAT&TはAT&TのUNIX System V Release 4を共同開発すると発表した。[25]この発表により、AT&TのUNIX Systemライセンスを保有する多くの企業は、サンが有利な立場に立つことを懸念し、最終的に1988年にデジタル・イクイップメント、HP、IBMなどがOpen Software Foundation(OSF)を設立した。皮肉なことに、サンとAT&TはかつてサンのNFSとAT&Tのリモート・ファイルシステム(RFS)をめぐって競合していたが、デジタル・イクイップメント、HP、IBM、その他多くのコンピュータベンダーがRFSではなくNFSを急速に採用したことで、ユーザーの大多数がNFSを支持するようになった。NFSの相互運用性は、1986年に始まった「Connectathons」と呼ばれるイベントによって促進され、ベンダーに中立な立場で相互の実装をテストすることができた。[26] OSFは、 Sun/ONC RPCとNFSに代えて、分散コンピューティング環境(DCE)とDCE分散ファイルシステム(DFS)を採用した。DFSはDCEをRPCとして使用し、DFSはAndrewファイルシステム(AFS)から派生したものである。DCE自体は、ApolloのNCSやKerberosなどの技術群から派生したものである。[要出典]
サン・マイクロシステムズとインターネット協会(ISOC)は、ONC RPCの「変更管理」をISOCの技術標準化団体であるインターネット技術タスクフォース(IETF)に委譲することで合意しました。これにより、ISOCの技術標準化団体であるインターネット技術タスクフォース(IETF)は、ONC RPCプロトコルに関する標準化文書(RFC)の発行とONC RPCの拡張が可能となりました。OSFはDCE RPCをIETF標準にしようと試みましたが、最終的には変更管理を放棄する意思を示しませんでした。その後、IETFは、プロトコル標準が十分なセキュリティを備えているというIETFの要件を満たすため、 Generic Security Services Application Program Interface(GSSAPI)に基づく新しい認証方式であるRPCSEC GSSを追加することでONC RPCを拡張することを決定しました。
その後、Sun と ISOC は、NFS の変更管理を ISOC に与えるという同様の契約を締結しましたが、契約書では NFS バージョン 2 とバージョン 3 を除外するよう慎重に記述しました。代わりに、ISOC は NFS プロトコルに新しいバージョンを追加する権利を獲得し、その結果、2003 年に IETF は NFS バージョン 4 を規定しました。
21世紀になっても、DFSもAFSも、SMBやNFSに比べると商業的に大きな成功を収めていませんでした。かつてDFSとAFSの主要商用ベンダーであったTransarcを買収したIBMは、 2000年にAFSのソースコードの大部分をフリーソフトウェアコミュニティに寄贈しました。OpenAFSプロジェクトは存続しています。 2005年初頭、IBMはAFSとDFSの販売終了を発表しました。
2010年1月、パナサス社は自社のParallel NFS (pNFS)技術をベースに、データアクセスの並列性[27]を向上させるNFSv4.1を提案しました。NFSv4.1プロトコルは、ファイルシステムのメタデータをファイルデータの場所から分離する方法を定義しています。これは、複数のデータサーバー間でデータをストライプ化することで、単純な名前とデータの分離を超えています。これは、ファイル名とそのデータを単一のサーバー傘下に保持する従来のNFSサーバーとは異なります。一部の製品はマルチノードNFSサーバーですが、メタデータとデータの分離におけるクライアントの関与は限られています。
NFSv4.1 pNFS サーバーは、サーバー リソースまたはコンポーネントのセットであり、メタデータ サーバーによって制御されると想定されています。
pNFSクライアントは、名前空間のトラバーサルや操作のために、依然として1つのメタデータサーバーにアクセスします。クライアントがサーバーとの間でデータを移動する際に、pNFSサーバーコレクションに属するデータサーバー群と直接やり取りする場合があります。NFSv4.1クライアントは、ファイルデータの正確な位置を直接把握できるようにすることで、データ移動時に1つのNFSサーバーとの単独のやり取りを回避することができます。
pNFS に加えて、NFSv4.1 では以下が提供されます。
-Ganeshaは、ユーザー空間で実行され、libcephfsを使用してCephFS FSAL(ファイルシステム抽象化レイヤー)をサポートするNFSサーバーです。