NFS の管理

パート I 概要

パートI では、NFS の環境で提供されるサービスについて説明します。

第 1 章 Solaris NFS の環境

この章では、NFS 環境の概要について説明します。具体的には、ネットワークの簡単な概要、NFS サービス、NFS システムの把握に必要なコンセプトを説明します。

NFS サーバとクライアント

クライアントサーバという用語は、コンピュータがファイルシステムを共有するときの役割を示すものです。ファイルシステムがあるコンピュータのディスク上に存在し、そのコンピュータがこのファイルシステムをネットワーク上のほかのコンピュータから使用できるようにしている場合、そのコンピュータをサーバと呼びます。そのファイルシステムにアクセスしているコンピュータをクライアントと呼びます。 NFS を使用することによって、どのコンピュータからもほかのコンピュータのファイルシステムにアクセスでき、それと同時に自分のファイルシステムへのアクセスも可能となります。ネットワーク上では 1 台のコンピュータがクライアントかサーバ、またはその両方の役割として動作することができます。

サーバは、ディスクレスクライアント、つまりローカルディスクがないコンピュータにファイルを提供することもあります。ディスクレスクライアントは、ファイルの保存についてはすべてサーバに依存します。ディスクレスクライアントはクライアントにしかなれず、サーバになることは決してありません。

クライアントは、サーバの共有ファイルシステムをマウントすることによってサーバのファイルにアクセスします。クライアントがリモートファイルシステムをマウントしたとき、ファイルシステムがコピーされるのではありません。マウント処理では一連のリモートプロシージャコールによって、クライアントからサーバのディスク上にあるファイルシステムに透過的にアクセスできるようになります。マウントはローカルマウントのように行われるので、ユーザはファイルシステムがローカルにあるのと同じようにコマンドを入力します。

サーバのファイルシステムは、NFS オペレーションによって共有すると、クライアントからアクセスできるようになります。NFS ファイルシステムは、autofs を使用すると自動的にマウントできます。

NFS ファイルシステム

NFS サービスで共有できるオブジェクトは、ファイル階層の全体、またはその一部です。ファイルを 1 つだけ共有することもできます。すでに共有しているものと重複するファイル階層構造は共有できません。モデムやプリンタなどの周辺機器も共有できません。

多くの UNIX® システム環境で共有されるファイル階層構造は、1 つのファイルシステム、またはその一部です。しかし NFS サポートは複数のオペレーティングシステムにまたがって動作し、ファイルシステムという考え方は UNIX 以外の環境では通用しません。 したがって本書でファイルシステムという語を使う場合、NFS 環境でマウントし共有した、ファイルまたはファイル階層構造を指すことにします。

NFS 環境

NFS サービスとは、アーキテクチャが異なり、別のオペレーティングシステムで動作しているコンピュータが、ネットワークを通じてファイルシステムを共有できるようにするサービスのことです。NFS サポートは、MS-DOS から VMS オペレーティングシステムまで多くの、プラットフォームに実装されています。

NFS 環境は、異なるオペレーティングシステムで実現できます。アーキテクチャの仕様を定義するのではなく、ファイルシステムの抽象モデルを定義しているためです。それぞれのオペレーティングシステムでは、ファイルシステムセマンティクスに NFS 抽象モデルを適用します。これにより、書き込みや読み出しのようなファイルシステムオペレーションが、ローカルファイルにアクセスするように機能することになります。

NFS サービスの利点を以下に挙げます。

NFS サービスを使用すると、ファイルシステムの実際の場所をユーザとは無関係に決めることができます。ユーザは場所を気にすることなく、すべての適切なファイルにアクセスできるということです。NFS サービスでは、共通して使用するファイルのコピーをすべてのシステムに置くのではなく、コピーを1つのコンピュータのディスクに置き、他のシステムからネットワークを通じてアクセスできるようにします。NFS オペレーションでは、リモートファイルとローカルファイルの区別がありません。

NFS バージョン 2

バージョン 2 は、一般に広く使われた初めての NFS プロトコルです。バージョン 2 は、引き続き広範囲のプラットフォームで使用できます。Solaris 2.5 以前のリリースの SunOSTM では、NFS プロトコルのバージョン 2 が使用できます。

NFS バージョン 3

NFS バージョン 3 のプロトコルは、Solaris 2.5 に新機能を追加したものです。相互運用性とパフォーマンスを向上させるために、いくつかの変更が行われました。これらをすべて有効利用するには、NFS サーバとクライアントの両方でバージョン 3 プロトコルを使用する必要があります。

バージョン 3 では、サーバで非同期の書き込みが可能になります。サーバがクライアントの書き込み要求をメモリに保存するので、効率が向上しました。クライアントは、サーバが変更内容をディスクに反映させるのを待つ必要がないため、応答時間が短縮されます。サーバは要求をバッチ処理することもできるので、サーバ上の応答時間も短縮されました。

NFS バージョン 3 では、どの操作でもローカルキャッシュに保存されているファイル属性が返されます。キャッシュの更新頻度が増えたため、ローカルキャッシュのデータを更新する操作を独立して行う必要性が少なくなります。したがってサーバに対する RPC コールの回数が減少し、パフォーマンスが向上します。

ファイルアクセス権の確認処理も改善されました。 バージョン 2 では、ユーザがアクセス権を持っていないリモートファイルをコピーしようとすると、「書き込みエラー」や「読み出しエラー」というメッセージが出力されました。バージョン 3 では、ファイルを開く前に権利がチェックされるので、「オープンエラー」がというメッセージが出力されます。

NFS バージョン 3 では、8 キロバイトの転送サイズ制限が解除されました。 クライアントとサーバは、バージョン2で課せられていた 8 キロバイト制限を受けず、サポートできる転送サイズならばどのようなものでも処理します。Solaris 2.5 では、転送サイズが 32 キロバイトにデフォルトで設定されています。

NFS ACL サポート

Solaris 2.5 には、アクセス制御リスト (ACL) サポートが追加されました。ACL では、ファイルアクセス権を通常の UNIX よりも正確に設定します。この追加機能では効率は改善されませんんが、ファイルへのアクセスがより厳密に制限されるので、セキュリティが向上します。

TCP への依存

Solaris 2.5 では、NFS プロトコルのデフォルトのトランスポートプロトコルが TCP に変わりました。このため、低速のネットワークおよび広域ネットワークにおけるパフォーマンスが改善されます。TCP には、トラフィック抑制機能とエラー回復機能があります。TCP を利用した NFS は、バージョン 2 でもバージョン 3 でも動作します。2.5 より前のバージョンでは、NFS のデフォルトプロトコルは UDP (User Datagram Protocol) でした。

ネットワークロックマネージャ

Solaris 2.5 には、ネットワークロックマネージャの改良版も含まれています。このため NFS ファイルに対して UNIX のレコードロックと PC のファイル共有が使用できます。NFS ファイルに対するロック機構の信頼性が向上したため、ロックを使用する kshmail などのコマンドがハングする可能性が少なくなります。

NFS 大型ファイルのサポート

Solaris 2.6 の NFS バージョン 3 プロトコルでは、2 ギガバイトを超えるサイズのファイルも正しく処理できます。NFS バージョン 2 プロトコル、および Solaris 2.5 に実装されているバージョン 3 プロトコルでは 2 ギガバイトを超えるサイズのファイルは処理できませんでした。

NFS クライアントの障害時回避機能

Solaris 2.6 では、読み取り専用ファイルシステムの動的障害時回避機能が追加されました。これによって、マニュアルページ、AnswerBookTM、共有バイナリなどのあらかじめ複製されている読み取り専用リソースを高度に利用できます。障害時回避機能は、ファイルシステムがマウントされた後ならばいつでも実行可能です。手動マウントでは、今までのリリースのオートマウンタのように複数の複製をリストできるようになりました。オートマウンタは、障害時回避の際にファイルシステムが再マウントされるまで待つ必要がなくなったこと以外は変更されていません。

Kerberos による NFS 環境のサポート

Solaris 2.0 では、Kerberos V4 クライアントがサポートされていました。Solaris 2.6 では、mount コマンドと share コマンドは、Kerberos V5 認証を使用した NFS マウントをサポートするようになりました。また、share コマンドはクライアントごとに異なる複数の認証方法を指定できるようになりました。

WebNFS のサポート

Solaris 2.6 には、NFS プロトコルの拡張機能を使用することによってインターネット上のファイルシステムにファイアウォール経由でアクセスできるようにする機能もあります。この WebNFSTM プロトコルを使ってインターネットにアクセスする利点の 1 つは、非常に信頼性の高い NFS バージョン 3 とバージョン 2 プロトコルの拡張機能としてサービスが構築されるということです。今後、この新しいファイルシステムのアクセスプロトコルを使ったアプリケーションがいくつも作成されるはずです。また NFS サーバでは、負荷が大きい状態のときに HTTP (HyperText Transfer Protocol) から Web サーバへのアクセスよりも高いスループットを確保できます。そのため、ファイルを取得するための時間が短縮されます。さらに、WebNFS ではそうしたファイルを共有しても匿名 ftp サイトを管理するオーバーヘッドが生じません。

RPCSEC_GSS セキュリティ方式

Solaris 7 では、新しいセキュリティ方式である RPCSEC_GSS がサポートされています。この方式では、標準的な GSS-API インタフェースを使用して、認証、一貫性、機密性を実現し、複数のセキュリティ機構をサポートしています。現在、これらの新しいセキュリティ方法を使用する機構は、Solaris には組み込まれていません。

Solaris 7 の NFS に対する拡張機能

Solaris 7 では、mount コマンドと automountd コマンドが拡張され、マウント要求で MOUNT プロトコルの代わりに公開ファイルハンドルも使用できるようになりました。これは、WebNFS サービスで使用されているのと同じアクセス方法です。公開ファイルハンドルを使用すると、ファイアウォールを越えたマウントが可能です。さらに、サーバとクライアント間のトランザクションが少なくて済むため、マウントにかかる時間が短縮されます。

この機能拡張で、標準のパス名の代わりに NFS URL を使用することもできるようになりました。また、mount コマンドとオートマウンタのマップに -public オプションを指定すると、必ず公開ファイルハンドルを使用するようになります。

autofs について

NFS サービスを使って共有されるファイルシステムは、「自動マウント」と呼ばれる方法によってマウントできます。クライアント側のサービスである autofs は、自動マウントを実現するファイルシステム構造です。autofs のファイルシステムは、automount で作成されます。automount は、システムを起動すると自動的に実行されます。automountd という常駐型の automount デーモンが、必要に応じてリモートディレクトリのマウントとアンマウントを行います。

automountd を実行しているクライアントコンピュータ上のユーザがリモートのファイルまたはディレクトリにアクセスしようとすると、そのファイルまたはディレクトリが所属するファイルシステムがこのデーモンによってマウントされます。このリモートファイルシステムは、必要な間はマウントされたままです。リモートファイルシステムが一定時間アクセスされないと、自動的にアンマウントされます。

ブート時にはマウントする必要はなく、ユーザはディレクトリをマウントするためにスーパーユーザのパスワードを知る必要はありません。ユーザが mountumount コマンドを使用する必要もありません。autofs は、ユーザの介入なしに、必要に応じてファイルシステムをマウントしたり、アンマウントします。

automountd によって一部のファイル階層をマウントするということは、mount によってほかのファイル階層をマウントしないということではありません。ディスクレスコンピュータは、mount/etc/vfstab ファイルを使って / (ルート)、 /usr/usr/kvm をマウントしなければなりません。

autofs サービスの詳細については、第 5 章「autofs について」 で説明します。

autofs の特長

autofs は、ローカルの名前空間に指定したファイルシステムで動作します。この情報は、NIS、NIS+、ローカルファイルに保存されます。

Solaris 2.6 には、完全にマルチスレッド化された automountd が含まれています。この拡張によって autofs はさらに信頼性が高まりました。また、複数のマウントを同時にサービスできるようになったため、サーバが使用できないときにサービスが停止することも避けられます。

この新しい automountd には、オンデマンドマウント機能もあります。今までのリリースでは、階層に含まれるすべてのファイルシステムがマウントされていました。これからは、一番上のファイルシステムしかマウントされません。そのマウントポイントに関係するほかのファイルシステムは、必要に応じてマウントされます。

autofs サービスで、間接マップを表示できるようになりました。これによりユーザは、どのディレクトリがマウントできるかを確認するためにファイルシステムを実際に 1 つずつマウントする必要がなくなります。autofs マップに -nobrowse オプションが追加されたので、/net/home などの大きなファイルが自動的に表示されることはありません。また、automount に対して -n を使うことによって、autofs の表示機能を各クライアントでオフにすることもできます。