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