我想将系统设置为使用大多数RAM进行文件系统元数据缓存,但仅使用相当少量的空间进行读/写缓存和预取文件。理想情况下,我希望能够浏览文件系统(尽可能多地容纳在RAM中),而无需旋转磁盘,直到我真正打开文件为止。
详细信息如下:
我有一个自制的文件服务器。LVM卷中约有9TB的空间有五个磁盘,但只有4GB的RAM。由于服务器除了处理文件外没有做其他事情,因此大多数RAM用于缓存。(“免费”报告用于缓存的3.9G中有3.4G。)
该服务器位于我的卧室里,如果所有磁盘都在旋转,它发出的噪音足以使它安静时变得烦人。(我并不是说寻求噪声,只是旋转噪声。磁盘的制造商和型号各不相同,我认为转速的微小差异会产生干扰。磁盘本身并不嘈杂,但是如果其中一些磁盘一起旋转,则有因此,我将服务器配置为在大多数情况下将磁盘降速旋转。
当然,如果当我在文件管理器中打开文件夹时磁盘旋转下来,则延迟会延迟哪个磁盘旋转该文件夹。只是那没什么大不了的。但是根据我的位置,如果LVM恰好在不同的磁盘上散布每个子文件夹的元数据,它可能会连续发生几次。
我怀疑Linux主要将文件内容以及可能的预取数据填充到其缓存中。缓存不足以确保顺利播放,只有几个MB。如果我刚看过电影,可能很快就不会再看了。如果发生预取,则在超过几MB后,对我而言也是完全没有用的。
但是人们会认为4GB应该足以缓存大多数文件系统元数据,至少是那些已经被访问过的部分,这样我就可以浏览文件而无需旋转磁盘,如果事实证明它们是睡眠。
打开文件时仍然会有延迟,但是没关系。比较“点击;等待 ; 点击 等待 ; 点击 等待 ; 玩; 观看”和“点击”;点击 点击 玩; 等待 ; 看”。前者令人沮丧。后者几乎是可以预期的。
笔记:
重要的是,内核是3.2,操作系统是Debian,卷是lvm2,而FS是ext4。
旋转的唯一原因是晚上的噪音。否则服务器将连续运行。(我尽可能将其设置为低功耗。)降速延迟根据一天中的时间而有所不同。
硬盘仅用于介质。操作系统位于单独的(小型)闪存驱动器上。(这意味着任何加速延迟都来自数据,而不仅仅是因为它需要一些
/usr
东西。如果可以以某种方式帮助解决我的问题,我可以在其中节省一些GB。对性能的合理影响并不大。无论如何,这些磁盘都比我的网络快。