我的网络服务器大部分时间都处于空闲状态。这会导致主硬盘在几分钟后减速,所有其他硬盘已经减速。这是一种想要的行为,因为我希望系统尽可能省电。
不幸的是,几秒钟后主硬盘驱动器再次旋转,导致硬盘驱动器机制大量磨损。即使没有人访问 Web 服务器,这种情况也会全天候可靠地发生。有没有办法记录驱动器的启动事件,也许是来源?
是否可以创建自动 ramfs 缓存或类似的东西?我猜它是被重复访问的同一个文件,如果可以在内存中分配一个区域作为缓存,访问的文件被复制到其中,那就太好了,因此不必从磁盘中获取它们,因此磁盘不需要旋转。提前致谢!
fatrace
是专门为此写的。它监视对文件系统上文件的访问。这通常效果很好。您应该明白,理论上,您可以在较低级别的存储软件中存在错误,即直接访问块设备或内核内部。
我
sync
首先让硬盘闲置...但是您需要手动将其旋转下来hdparm
...然后任何可听的磁盘活动都可以归因于fatrace显示的写入或未缓存的读取。降速是必要的,否则很难知道读取是否被缓存。如果您使用写入日志的 sudo,请打开一个根 shell (sudo -i
) 以从中运行同步、hdparm 和fatrace。这是一个很棒的想法(对于性能),它基本上已经按照描述实现了,它被称为页面缓存。
但是经常有日志文件或可能的数据库是很常见的,这些文件或可能是数据库,它们经常被写入,从而导致您所描述的情况。
您可能不喜欢这个答案,但有一个非常简单的解决方案:
将磁盘更换为 SSD。
与传统硬盘驱动器相比,它们在活动和空闲时使用的电量都更少,并且从空闲状态恢复对其预期寿命的影响几乎为零。
鉴于有问题的磁盘是您的主磁盘,这样做很可能还会提高系统的整体性能(或至少缩短启动时间)。