フェイルオーバーは、複製されたファイルシステムをサポートしているサーバーのリストから、1 つのサーバーを選択するプロセスです。通常は、ソートされたリスト内の次のサーバーが使用されます (応答に失敗しないかぎり)。クライアント側フェイルオーバーを使用することで、NFS クライアントは複数のサーバーが同じデータを利用できるようにしているときを検出でき、現在のサーバーが使用不能になったときに代替サーバーに切り替えることができます。この切り替えは再マッピングと呼ばれます。正常使用のときは、クライアントはリモートファイルシステム上に各アクティブファイルのパス名を格納します。再マッピング時には、これらのパス名が評価されて新しいサーバー上のファイルが検出されます。
次のいずれかの状態が発生すると、ファイルシステムが使用不能になる可能性があります。
ファイルシステムが、クラッシュしているサーバーに接続している
サーバーの過負荷
ネットワーク障害
これらの状況でのフェイルオーバーは通常、ユーザーに透過的です。クライアント上で実行中のプロセスを中断することなく、任意のときに実行される可能性があります。
フェイルオーバーを実行するには、ファイルシステムが読み取り専用でマウントされている必要があります。また、ファイルシステムが完全に同じでないとフェイルオーバー機能は成功しません。ファイルシステムが同じであることについては、複製されたファイルシステムとは を参照してください。フェイルオーバー機能の候補としては、静的なファイルシステム、または変更の少ないファイルシステムが適しています。
同じ NFS マウント上では、CacheFS 機能とクライアント側のフェイルオーバー機能の両方は使用できません。CacheFS ファイルシステムは、それぞれについて追加情報が格納されています。この情報はフェイルオーバーの際に更新できないため、ファイルシステムをマウントするときにはこれら 2 つの機能の一方のみを使用できます。
各ファイルシステムで確立する必要がある複製の数は、さまざまな要素によって変わります。理想的には、2 つ以上のサーバーを持つことをお勧めします。それぞれのサーバーが複数のサブネットをサポートする必要があります。これは、各サブネットに一意のサーバーを設置するよりもよい方法です。このプロセスではリストされているすべてのサーバーを確認する必要があります。そのため、サーバーの台数を増やすと、それぞれのマウント処理が遅くなります。
クライアント側フェイルオーバーが目的の場合は、元のファイルシステムとサイズが同じで、ファイルサイズまたはファイルタイプが同じときは、そのファイルシステムを「複製」と呼ぶことができます。アクセス権、作成日付などのファイル属性は関係ありません。ファイルサイズまたはファイルタイプが異なる場合は再マッピングは失敗し、古いサーバーが使用可能になるまでプロセスはハングアップします。NFS Version 4 では、この動作は異なります。クライアント側フェイルオーバーの詳細については、NFS version 4 におけるクライアント側フェイルオーバー機能を参照してください。
rsync、cpio、または別のファイル転送メカニズムを使用することで、複製されたファイルシステムを保守できます。複製されたファイルシステムを更新すると不一致が発生するため、最良の結果を得るには次の予防策を考慮してください。
新しいバージョンのファイルをインストールする前に、古いバージョンのファイル名を変更する。
クライアント使用率が低い夜間に更新を実行する。
更新は小規模にとどめる。
ファイルのコピーの数を最小限に抑える。
ソフトウェアパッケージの一部は、ファイルに読み取りロックをかける必要があります。そのようなソフトウェアが正常に動作できるようにするため、読み取り専用ファイルシステムに対しても読み取りロックがかけられるようになっています。ただし、これはクライアント側でしか認識されません。サーバーがロックを検出できないため、再マッピング時もロックは永続します。ファイルはもともと変更が許されないので、サーバー側でファイルをロックする必要はありません。
NFS Version 4 では、ファイルサイズが違うまたはファイルタイプが同じでないために複製を確立できない場合、次のことが起こります。
ファイルが使用不能とマークされる。
警告が表示される。
複製されたマウントのファイルを使用するアプリケーションがシステムコール失敗を受け取る。
NFS Version 4 では、ディレクトリのサイズが異なっていてもレプリケーションエラーを受け取ることはありません。以前のバージョンの NFS では、この状態はエラーとして扱われ、再マッピングプロセスを妨げました。
さらに、NFS Version 4 では、ディレクトリ読み取り操作が不成功の場合、次にリストされたサーバーによって操作が行われます。以前のバージョンの NFS では、読み取り操作が不成功のときは、再マッピングが失敗し、プロセスは元のサーバーが使用可能になるまでハングアップします。