Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

10.3. NFS でのキャッシュの使用

明示的に指示されない限り、NFS はキャッシュを使用しません。FS-Cache を使用するように NFS マウントを設定するには、mount コマンドに -o fsc オプションを追加します。
# mount nfs-share:/ /mount/point -o fsc
ファイルがダイレクト I /O や書き込みのために開いていない限り、/mount/point の下にあるファイルへのアクセスはすべてキャッシュを経由します。詳細はを参照してください 「NFS のキャッシュ制限」。NFS インデックスは NFS ファイルハンドルを使用してコンテンツをキャッシュします。ファイル名では なく、ハードリンクされたファイルはキャッシュを正しく共有します。
キャッシュは、バージョン 2、3、および 4 の NFS バージョンでサポートされます。ただし、各バージョンはキャッシュに異なるブランチを使用します。

10.3.1. キャッシュ共有

NFS キャッシュの共有には潜在的な問題がいくつかあります。キャッシュは永続的であるため、キャッシュ内のデータブロックは 4 つのキーのシーケンスでインデックス化されます。
  • レベル 1: サーバーの詳細
  • レベル 2: 一部のマウントオプション、セキュリティータイプ、FSID、識別子
  • レベル 3: ファイルハンドル
  • レベル 4: ファイル内のページ番号
スーパーブロック間の整合性管理の問題を回避するには、データのキャッシュで固有のレベル 2 キーを持つ NFS のすべてのスーパーブロックを使用できます。通常、同じソースボリュームとオプションを持つ 2 つの NFS マウントはスーパーブロックを共有しているため、そのボリューム内に異なるディレクトリーをマウントする場合でもキャッシュを共有します。

例10.1 キャッシュ共有

以下の 2 つのマウントコマンドを使用します
mount home0:/disk0/fred /home/fred -o fsc
mount home0:/disk0/jim /home/jim -o fsc
/home/fred および /home/ jim には同じオプションがあるため、スーパーブロックを共有する可能性が高くなります。特に NFS サーバー上の同じボリューム/パーティションからのものがある場合(home0)。ここで、次の 2 回目に mount コマンドを使用することを検討してください。
mount home0:/disk0/fred /home/fred -o fsc,rsize=230
mount home0:/disk0/jim /home/jim -o fsc,rsize=231
この場合、/home/fred および /home/jim は、レベル 2 キーに複数のネットワークアクセスパラメーターがあるため、スーパーブロックを共有しません。以下のマウントシーケンスに同じ操作が行われます。
mount home0:/disk0/fred /home/fred1 -o fsc,rsize=230
mount home0:/disk0/fred /home/fred2 -o fsc,rsize=231
ここでは、2 つのサブツリー(/home/fred1/home/fred2)の内容が 2 回キャッシュされます
スーパーブロックの共有を回避するもう 1 つの方法は、nosharecache パラメーターで明示的に共有を 回避する ことです。同じ例を使用します。
mount home0:/disk0/fred /home/fred -o nosharecache,fsc
mount home0:/disk0/jim /home/jim -o nosharecache,fsc
ただし、この場合はレベル 2 キーの home0:/disk0 /fred および home0:/disk0/ jim を区別することができないため、使用できるスーパーブロックは 1 つのみとなります。これに対応するには、少なくとも 1 つのマウント (つまりfsc=unique-identifierに一意の識別子を追加します。以下に例を示します。
mount home0:/disk0/fred /home/fred -o nosharecache,fsc
mount home0:/disk0/jim /home/jim -o nosharecache,fsc=jim
ここでは、/home/ jim のキャッシュで使用されるレベル 2 キーに固有識別子の jim が追加されます。

10.3.2. NFS のキャッシュ制限

  • ダイレクト I/O で共有ファイルシステムからファイルを開くと、自動的にキャッシュが回避されます。これは、この種のアクセスがサーバーに直接行なわれる必要があるためです。
  • NFS バージョン 2 および 3 では、共有ファイルシステムからファイルを開くと機能しません。これらのバージョンのプロトコルは、クライアントが、別のクライアントから同じファイルへの同時書き込みを検出するのに十分な整合性管理情報を提供しません。
  • ダイレクト I/O または書き込みのいずれかで共有ファイルシステムからファイルを開くと、キャッシュされたファイルのコピーがフラッシュされます。ダイレクト I/O や書き込みのためにファイルが開かれなくなるまで、FS-Cache はファイルを再キャッシュしません。
  • さらに、FS-Cache の今回のリリースでは、通常の NFS ファイルのみをキャッシュします。FS-Cache はディレクトリー、シンボリックリンク、デバイスファイル、FIFO、ソケットをキャッシュし ません

このページには機械翻訳が使用されている場合があります (詳細はこちら)。