4.14.3. NFS キャッシュの共有
NFS マウントは、マウントオプション、セキュリティー、プロトコルの詳細に基づいて、キャッシュを共有または分離します。スーパーブロックの一意性や設定パラメーターなどの要因によって、異なるマウント間でキャッシュにアクセスできるかどうかが決まります。
キャッシュは永続的であるため、キャッシュ内のデータブロックは 4 つのキーのシーケンスでインデックス化されます。
- レベル 1: サーバーの詳細
- レベル 2: 一部のマウントオプション、セキュリティータイプ、FSID、識別子文字列
- レベル 3: ファイルハンドル
- レベル 4: ファイル内のページ番号
スーパーブロック間の整合性の管理に関する問題を回避するには、データのキャッシュを必要とする NFS のすべてのスーパーブロックに、固有のレベル 2 キーを設定します。通常、同じソースボリュームとオプションを持つ 2 つの NFS マウントは、スーパーブロックを共有しているため、そのボリューム内に異なるディレクトリーをマウントする場合でもキャッシュを共有することになります。
例4.1 NFS キャッシュ共有:
次の 2 つのマウントは、同じマウントオプションを持つため (特に NFS サーバー上の同じパーティションからのものであるため)、スーパーブロックを共有している可能性があります。
# mount -o fsc home0:/nfs/projects /projects
# mount -o fsc home0:/nfs/home /home/
マウントオプションが異なる場合、スーパーブロックは共有されません。
# mount -o fsc,rsize=8192 home0:/nfs/projects /projects
# mount -o fsc,rsize=65536 home0:/nfs/home /home/
ユーザーは、通信またはプロトコルパラメーターが異なるスーパーブロック間でキャッシュを共有することはできません。たとえば、NFSv4.0 と NFSv3 の間、NFSv4.1 と NFSv4.2 の間でキャッシュを共有することはできません。これは、強制されるスーパーブロックが異なるためです。また、読み取りサイズ (rsize) などのパラメーターを設定した場合も、別のスーパーブロックが強制されるため、キャッシュの共有ができなくなります。