読み方:えぬえふえす
《network file system》UNIX系オペレーティングシステムで利用される分散ファイルシステム。ネットワーク上の他のコンピューターにあるファイルの読み書きができる。
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/01/14 14:57 UTC 版)
Network File System(NFS)は主にUNIXで利用される分散ファイルシステムおよびそのプロトコルである[1]。1984年にサン・マイクロシステムズによって実質的な最初の規格となるNFS version 2 (NFS v2) が発表され、RFC 1094・ RFC 1813・ RFC 3530・ RFC 5661・ RFC 7530・ RFC 7862 などによって定義されている。
NFSは、ローカルに接続されたストレージをネットワークを介してリモートの計算機に提供する分散ファイルシステムとそのプロトコルである。マウントされたNFSボリュームは、ネットワーク上にあることを意識せずローカルと同じように利用出来る。NFS v2, v3 では、Network File System#関連プロトコルで述べるように、ファイルロック機能やクォータ管理機能などはNFSプロトコル本体に含まれず、それぞれ別のプロトコルによって提供される。これらは NFS v4 ではプロトコル本体に含まれている。
ネットワークファイルシステムに代わる方法としてリモートファイルシェアリング(Remote File Sharing)がある。リモートファイルシェアリング(RFS)は、大部分の System V 系 UNIX や BSD 系 SunOS にてオプションである[2]。
NFSのサービスは一般的にTCPの2049番ポートで提供される。NFS v4はTCPのみだが、NFS v3はTCPとUDP(同じく2049番ポート)を使える。ボリュームを提供するNFSサーバとそれを利用するクライアント間の遠隔手続き呼出し (RPC) には、NFSの一部として開発されたONC RPCを利用している。NFSv3までは、ファイルロックやマウント要求等のONC RPCに使われるポート番号はポートマッパーによって動的に割り当てられることが一般的であった。そのため、ポート番号を固定するオプションを持たない実装の場合、ファイアウォールによるポート番号ベースの通信制御は困難であった。NFSv4からは、同等の機構がNFS本体に組み込まれ、サーバ-クライアント間の通信にはTCPの2049番ポートのみを利用するようになった。
NFS version 1 (NFS v1) は、サン・マイクロシステムズ内の実験にとどまり、対外的なリリースはされなかった。
NFS v2の仕様は1984年に発表され、1985年にはNFS v2を初めて実装したSunOS 2.0がリリースされた。その後1989年3月には RFC 1094 が取りまとめられ標準化された。 NFS v2の開発にはRusty Sandberg, Bob Lyon, Bill Joy, Steve Kleimanなどが参加していた。元々のNFS v2では通信にUDPのみを利用することになっているが、これはファイルロック機能をNFSの枠組みの外で実装することでプロトコルをステートレスに保つのが目的であった。
1995年6月に RFC 1813 で定義されたNFS v3では、主に以下の機能追加が行われた。
また、NFS v2の時点ですでにTCPによる転送をサポートするベンダーが複数存在したことから、サン・マイクロシステムズはNFS v3からTCP転送を仕様に追加した。これによりWANを介したNFSがより安定して動作するようになった。
AFSやCIFSの存在を踏まえ、2000年12月に RFC 3010 で、また2003年4月に RFC 3530 で、さらに2015年3月に RFC 7530 で改定されたNFS v4では、COMPOUNDプロシージャを用いた複数のNFS処理の統合による性能の向上、ONC RPCにおけるKerberos認証[注 1]を用いた強力なセキュリティ、またステートフルなプロトコルを導入した。NFS v4からはその開発主体がInternet Engineering Task Forceへ移動し、サン・マイクロシステムズに加えネットアップなども規格策定に携わった。
NFS version 4.1 は、2010年1月に RFC 5661 で、2020年8月に RFC 8881 で公開された。
NFS version 4.2 は、2016年11月に RFC 7862 で公開された。
NFSに付随するプロトコルは次のようなものがある。
NFS v2およびNFS v3では、ユーザーのアクセス権限を表現するためにUNIXのユーザー識別子およびグループ識別子の整数値をそのまま用いている。 デフォルトではクライアント側に設定された識別子の整数値がそのままNFSサーバに渡され、サーバはそれを見てアクセスを制御する。クライアントとサーバ間でグループ識別子を別々に管理している場合では、管理者が用意したサーバ側とクライアント側の識別子対応表を参照するか、クライアントが用意したNISサーバあるいは専用のデーモンugiddをサーバが参照するように設定することでアクセスコントロールを行う。
NFS v4では、原則としてユーザー識別子/グループ識別子を直接使うのではなく、書式「(識別子)@(ドメイン名)」にて記述されたユーザー名/グループ名を使用する。特に、ONC RPCにてKerberos認証を使用する場合は必ずこの書式を用いる必要がある。ホスト内部におけるユーザおよびグループ識別子の表現とこの書式との間の変換にあってはNFS v4の仕様では定義しておらず、全く変換しないことを含めて実装に任せている。Kerberos認証を用いない場合は、NFS v3以前の仕様であるユーザおよびグループ識別子の整数値をサポートすべきとしており(サーバでの送受信およびクライアントでの送信はSHOULD、クライアントでの受信はMUST)[注 2]、それに加えてNFS v4にて追加された書式をサポートしても構わない。クライアントはサーバの整数値識別子対応を確認するためにユーザ名およびグループ名を一旦整数値として送信し、エラーとなった場合はNFS v4の書式に切り替えても良い。
一般的に、「NFSサーバとクライアントは、互いに相手のホスト上での管理者特権をそのまま信頼することはできない」[注 3]ため、管理者権限による無制限なアクセスをNFSクライアントに許可することは危険である。そのため、UNIXシステムでスーパーユーザを示す root (NFS v4) ユーザー識別子0 (NFS v2, v3) によるクライアントからのアクセスを、NFSサーバ側でより権限の低いユーザー識別子(例えば NFS v4 では nobody、NFS v2, v3 では65534や-2[注 4]など)に強制的に割り当てるroot_squashという機能を標準で有効にするものが多い。
1985年にSunOS 2.0に最初に実装された後、HP-UX、Solaris、NEWS-OS、EWS-UX、Linux、FreeBSDなど多くのUNIX系OSに実装された。その他にもMac OSやWindows Server、クライアントWindowsの一部のエディション、NetWare、AS/400でも利用できる。1990年代初頭、Macintosh用NFSソフトウェアが米Wollongong社によりサポートされた[3][4]。System 6.0.3以上のシステムで、かつAppleShareが必要とされ、日本では1991年有限会社データコントロールリミテッドが販売した[4]。WindowsではServices for UNIXがNFSサーバおよびクライアントの機能を提供している。
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/21 20:48 UTC 版)
「ネットワークアタッチトストレージ」の記事における「Network File System (NFS)」の解説
Solaris, Linux, macOSなどのUNIX/Unix系OSの多くがサポートするプロトコル。WindowsでもServices for UNIXの導入でNFSクライアントとして機能する。
※この「Network File System (NFS)」の解説は、「ネットワークアタッチトストレージ」の解説の一部です。
「Network File System (NFS)」を含む「ネットワークアタッチトストレージ」の記事については、「ネットワークアタッチトストレージ」の概要を参照ください。
固有名詞の分類
| UNIX |
ハッカー文化 ネットワーク・インフォメーション・サービス Network File System Unix系 標準ストリーム |