4.14. NFS コンテンツのクライアント側キャッシュの有効化
FS-Cache は、クライアント上に永続的に存在するローカルキャッシュです。ファイルシステムはこれを利用して、ネットワーク経由で取得したデータをローカルディスクにキャッシュすることができる。これにより、ネットワークトラフィックを最小限に抑えることができます。
4.14.1. NFS キャッシュの仕組み リンクのコピーリンクがクリップボードにコピーされました!
ネットワークファイルシステム (NFS) のキャッシングは、FS-Cache を活用することで、ネットワークファイルシステムのパフォーマンスを向上させ、サーバーの負荷を軽減し、キャッシュバックエンドと透過的な統合を通じて効率的なローカルデータ取得を可能にします。
以下の図は、FS-Cache の仕組みの概要を示しています。
FS-Cache は、システムのユーザーおよび管理者が可能な限り透過的になるように設計されています。FS-Cache を使用すると、サーバー上のファイルシステムは、オーバーマウントされたファイルシステムを作成することなく、クライアントのローカルキャッシュと直接やり取りできます。NFS では、マウントオプションにより、FS-cache が有効になっている NFS 共有をマウントするようにクライアントに指示します。マウントポイントにより、カーネルモジュールの キャッシュファイル が自動的にアップロードされます。cachefilesd デーモンは、カーネルモジュールと通信してキャッシュを実装します。
FS-Cache は、ネットワーク上で動作するファイルシステムの基本操作を変更しません。単に、そのファイルシステムに、データをキャッシュできる永続的な場所を提供するだけです。たとえば、クライアントは FS-Cache が有効になっているかどうかに関わらず、NFS 共有をマウントできます。さらに、キャッシュされた NFS は、キャッシュに収まらないファイル (個別に、またはまとめて) も処理できます。ファイルは部分的にキャッシュできるため、事前にすべて読み込む必要はありません。FS-Cache は、キャッシュ内で発生するすべての入出力 (I/O) エラーをクライアントファイルシステムドライバーから隠蔽します。
キャッシュサービスを提供するには、FS-Cache にキャッシュバックエンド、つまり cachefiles サービスが必要です。FS-Cache には、ブロックマッピング (bmap) と拡張属性をキャッシュバックエンドとしてサポートするマウントされたブロックベースのファイルシステムが必要です。
- XFS
- ext3
- ext4
FS-Cache は、ネットワークを介するかどうかに関係なく、あらゆるファイルシステムを任意にキャッシュすることはできません。FS-Cache の操作、データの保存または取得、およびメタデータの設定と検証を実行できるよう、共有ファイルシステムのドライバーが変更されている必要があります。FS-Cache では、永続性に対応するためにキャッシュされたファイルシステムの インデックスキー と 一貫性データ が必要になります。インデックスキーはファイルシステムオブジェクトをキャッシュオブジェクトに一致させ、一貫性データを使用してキャッシュオブジェクトが有効のままかどうかを判断します。
FS-Cache を使用する際には、さまざまな要素の妥協点を探すことになります。FS-Cache を使用して NFS トラフィックをキャッシュすると、クライアントの速度が低下する可能性があります。一方で、ネットワーク帯域幅を消費せずに読み取り要求をローカルで満たせるため、ネットワークとサーバーの負荷を大幅に軽減できます。