禁用linux在分区上读写文件缓存

com*_*tic 11 linux mount cache

如何禁用 xfs 分区上的 linux 文件缓存(读取和写入)。

我们在存储原始高清视频的硬件 RAID 上有一个 xfs 分区。大多数拍摄是每个 50-300GB,所以 linux 缓存的命中率为 0.001%。

我已经尝试了同步选项,但在处理文件时它仍然填满了缓存。
(每次拍摄约 30 倍以上:P)

/etc/fstab:

/dev/sdb1 /video xfs 同步,noatime,nodiratime,logbufs=8 0 1

如果有帮助,我正在运行 debian lenny。

nea*_*mcb 8

非缓存工具设计用于类似的目标:防止破坏当前缓冲区高速缓存特定的命令。只需./nocache在您的命令前加上:

./nocache cp -a ~/ /mnt/backup/home-$(hostname)
Run Code Online (Sandbox Code Playgroud)

请注意,如rmetzger 所指出的,类似的工具pagecache-mangagement - 一种允许管理任意应用程序的页面缓存使用的工具,仍处于与 2008 年相同的状态。当然,这可能是好的也可能是坏的,或混合 :) 我没有直接比较,但我已经问过 nocache 的人了


小智 6

有一个完全适合您的用例的解决方案:http : //code.google.com/p/pagecache-mangagement/

查看源代码后:

svn checkout http://pagecache-mangagement.googlecode.com/svn/trunk/ pagecache-mangagement-read-only
Run Code Online (Sandbox Code Playgroud)

问题

make
sudo cp *.so /usr/local/lib/
sudo cp *.sh /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)

然后,您可以启动任何您想要的应用程序

pagecache-mangagement.sh <App>
Run Code Online (Sandbox Code Playgroud)

并且该应用程序不会填满您的缓存!


Ign*_*ams 5

这不能干净利落地完成。如果某些应用程序需要这样做,则应修改它们以传递O_DIRECT给它们的open(2)调用。