DebianでNFS読み取りキャッシュはどのように機能しますか?


12

NFSを使用して多くの小さなファイルを提供する予定です。これらは非常に頻繁に読み取られるため、クライアント側のキャッシュが重要です。NFSはこれを処理しますか?何らかの方法でクライアント側のキャッシュを増やす方法はありますか?

...または別のソリューションを検討する必要がありますか?定期的にrsyncまたはunisonを使用して同期することは、ファイルがクライアント側で時々変更されるため、オプションではありません。

回答:


6

まず、NFSはキャッシュの一貫性を提供しないため、必要な場合は他の場所を調べる必要があります。

NFSが指定するのは、close-to-open一貫性と呼ばれるより弱いモデルです。つまり、ファイルが閉じられると、ダーティデータはサーバーにフラッシュされます。逆に、ファイルが開かれると、属性チェックが実行されます。つまり、クライアントがそのファイルからページをキャッシュした場合、それらのページがまだ有効かどうかをチェックします。

仕様自体には含まれていませんが、ほとんどのNFSクライアントには属性キャッシュタイムアウトと呼ばれるものがあります。つまり、クライアントがサーバーに接続して再検証する前に、ディレクトリまたは開かれたファイルの属性がどれだけ古いかを示します。Linuxでは、actimeo =などのマウントオプションを参照してください。値を大きくすると、より積極的なキャッシュが可能になりますが、その間に他のクライアントがファイルを更新した場合、古いデータを使用するリスクが高くなります。


お返事ありがとうございます。したがって、これを正しく理解したように、クライアント側の「属性キャッシュ」にはファイル/ディレクトリ属性のキャッシュのみが含まれています。キャッシュにファイルコンテンツが含まれていませんか?
Ztyx

はい、ローカルファイルシステムの場合と同じように、クライアントはページキャッシュにファイルコンテンツをキャッシュします。属性は、キャッシュされたファイルの内容が無効化されるかどうか、いつ無効化されるかを決定するために使用されます。
ジャンネブ

あ。これに答えてくれてありがとう。ごきげんよう。
Ztyx

「ページ」と言うとき、ファイルの一部はキャッシュでき、ファイルの一部はキャッシュされない可能性があるということですか?ファイルキャッシュではありませんか?キャッシュできるのは、ファイルの下位区分です。
-CMCDragonkai

@CMCDragonkai:カーネルは、キャッシュされたファイルの内容をページの粒度(通常は4KB)で追跡するため、ファイルの一部をキャッシュできます。NFSでキャッシュ無効化が正確にどのように機能するかはわかりませんが、サーバーに接続して再検証するために属性キャッシュがタイムアウトした後、再検証が失敗すると、そのファイルに属するすべてのキャッシュされたページがドロップされると思います。
ジャンネブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.