web-dev-qa-db-ja.com

Linuxのネットワークドライブからファイルを透過的にキャッシュする

ネットワークドライブからファイルを読み取り、それらを処理するLinuxサーバーがあります。一般的なシナリオでは、ユーザーはログインして同じファイルに何度もアクセスします。ファイルのサイズはさまざまですが、大きいファイルのサイズは約50Mb以上になる可能性があります。ファイルはめったに変更されません。

どういうわけかファイルを透過的にキャッシュすることが可能かどうか疑問に思いました。ファイルを読み取るプログラムを変更したくない(または変更できない)し、ファイルにアクセスするためのプロトコルを制御したくない。特定のパスにアクセスしたことを検出し、ファイルをローカルにコピーして(必要な場合)、ローカルドライブからファイルを読み取るだけです。

Bcacheについて読んだことがありますが、それが必要かどうかわかりません。

何か提案はありますか?

ありがとう、Vadim。

6
Vadim

cachefilesd を調べてください。ほぼ自動的に動作します。あなたがする必要があるのはこれです:

  1. キャッシュを格納するために、クライアント上にext3ファイルシステムを作成します。必要なローカルメディア(専用パーティション、LVM LVなど)に配置し、キャッシュのサイズを変更します。

  2. このファイルシステムを/var/cache/fscacheにマウントします。 /etc/fstabに入れると、起動時に常にマウントされます。

  3. インストールcahefilesdDebianパッケージcachefilesd

  4. これはすでにデフォルトだと思いますが、/var/cache/fscachedir/etc/cachefilesd.confに設定されていることを確認してください。

  5. キャッシュを有効にするファイルシステムのマウントオプションに「fsc」を追加します。例:「rw、hard、fsc」。これらのファイルシステムをアンマウントして再マウントします。

9
Celada