題 透明地從Linux中的網絡驅動器緩存文件


我們有一台Linux服務器,可以從網絡驅動器中讀取文件並對其進行處理。 在常見情況下,用戶將一遍又一遍地登錄並訪問相同的文件。文件的大小各不相同,但較大的文件大小可能在50 Mb以上。文件很少改變。

我想知道是否有可能透明地緩存文件。我不希望(或可以)更改程序讀取文件,也不控制訪問文件的協議。我只想要檢測到我訪問某個路徑,在本地複製文件(如果需要)然後從本地驅動器讀取文件。

我讀過關於Bcache但是無法弄清楚它是否是我需要的。

你有什麼建議嗎?

謝謝, 瓦迪姆。


3
2017-07-09 13:36


起源




答案:


調查 cachefilesd。它幾乎可以自動運行。你需要做的就是:

  1. 在客戶端上創建一個ext3文件系統來容納緩存。把它放在你想要的任何本地媒體上(專用分區,LVM LV等等),並將其設置為你想要的緩存大小。

  2. 掛載此文件系統 /var/cache/fscache。把它放進去 /etc/fstab 所以它總是在啟動時掛載。

  3. 安裝 cahefilesd (Debian包cachefilesd

  4. 我認為這已經是默認值,但要確保 dir 被設置為 /var/cache/fscache 在 /etc/cachefilesd.conf

  5. 將“fsc”添加到要為其啟用緩存的文件系統的安裝選項中。例如:“rw,hard,fsc”。卸載並重新安裝這些文件系統。


7
2017-07-09 14:28



謝謝。紅帽也有可能嗎? - Vadim
當然,我認為紅帽完全可能! - Celada
它對sshfs文件系統不起作用: #sshfs -o context=system_u:system_r:cachefiles_kernel_t user@drive.company.com:ska7 /mnt/ska7 fuse:未知選項`context = system_u:system_r:cachefiles_kernel_t' - Arie Skliarouk
謠言是它固定在libfuse 3.0:[fuse.996288.n3.nabble.com/mount-context-td5339.html] - Arie Skliarouk