我有一个基于 Debian GNU/Linux 7 (wheezy)运行OpenMediaVault 2.1.18 (Stone burner) 的 HP Microserver。
几天前,我需要从 USB 驱动器中复制大量文件,使用 NTFS 格式化。我连接它,安装它并开始复制并让它完成。
一天后,我发现它几乎没有复制任何东西,而且我的 NAS 性能下降了。经过调查,我发现页面和缓冲区缓存现在占用了超过 3/4 的系统内存(这些通常占用不到 10%),并且 ZFS ARC 现在被挤压到剩余内存中(小于正常大小的 1/4 )。
当我意识到出了什么问题时,我停止了复制,卸载并拔掉了驱动器,缓存很快恢复到正常大小,然后 ARC 开始自行填充到正常水平。
所以,如果我以后需要做更多的直接拷贝,我该如何防止挂载 ntfs 驱动器导致大量内存被消耗,让我的 ZFS ARC 缺乏它需要的内存?
注意:我尝试运行(按照shodanshok 的建议echo 3 > /proc/sys/vm/drop_caches
“释放 pagecache、dentries 和 inode” man 5 proc
),但这也刷新了我的 ARC(缓存 L2ARC 标头所需的内存除外)。因此,我的系统有大量可用内存,但由于仅缓存在 ARC 或 L2ARC 中,因此我的系统花费了很长时间来调整驱动器以重新填充 ARC,这不是理想的情况。
在这张图片中,您可以看到在 5 日开始时 ZFS 饥饿,当我开始我的 ntfs 副本时,在 6 日早些时候卸载 ntfs 驱动器时一切恢复正常,然后最后 ARC 被清除(并重建) 7日下午使用drop_caches。