我已经将硬盘配置为在 1 分钟不活动后进入睡眠状态。这曾经非常有效;服务器几乎总是一片寂静。但最近驱动器更经常处于唤醒状态。
我可以检查是什么导致它们无法进入睡眠状态吗?这是家庭服务器。
rc.本地:
hdparm -M 128 -S 60 /dev/sda
hdparm -S 60 /dev/sdb
更新:该服务器运行的是 Ubuntu 10.04。操作系统(带有 /tmp 和 /var/)位于 SSD 上,而 sda 和 sdb 仅用于存储/备份。
更新 2:从我的 sysctl.conf:
vm.swappiness = 1
vm.vfs_cache_pressure = 50
vm.dirty_writeback_centisecs = 1500
vm.dirty_ratio = 20
vm.dirty_backgrounds_ratio = 10
答案1
这实际上不是您所提问题的答案,但可能有助于解决潜在问题。我知道的一个工具是iotop
,但它可能无法帮助捕获进程中的短暂活动。
让硬盘在空闲时进入睡眠状态可能很困难,因为存在太多潜在的活动源。仅仅因为您认为系统没有执行任何操作,并不意味着后台没有写入任何内容。以下是一些常见的罪魁祸首:
- 日志刷新。无论是否需要刷新,Linux 都会定期刷新 ext3(或 ext4)日志。这可以通过
commit
mount 选项进行调整。 - 系统日志。在默认配置下,每当写入一行时,某些系统日志就会刷新。Cron 作业是惯犯,因为它们会触发
auth
日志条目。您需要-
在 中的所有日志文件名前添加/etc/syslog.conf
。
如果你真的想让磁盘减速,请查看noflushd。它确实有效(或者至少以前有效,最近它没有得到太多维护,并且可能与当代内核存在问题)。但请注意,这是一种黑客行为,而且它真的很笨拙:它只是阻止内核写入,直到缓存已满或磁盘无论如何唤醒以进行读取。
如果你在寻找安静,那么帮助很大是将圆盘悬挂在弹性物上而不是直接安装。这不会帮助减少功耗,但除非您有≥10krpm 的驱动器(无论如何都需要一个风扇),否则即使在空闲时,CPU 和主板也可能是主要的耗电设备。
答案2
确保已关闭所有详细日志记录。如果您的机器在特定端口上发送广播,而这些广播会被防火墙规则记录下来,那么您很容易就会获得足够的条目,从而导致驱动器无法停止旋转。HP 打印机和 Windows 机器因发送广播来检查本地网络上的其他机器而臭名昭著,大多数防火墙规则都会记录这些请求。
检查您正在运行的服务,看看是否有任何服务可能正在记录到它们自己的文件中。您是否正在运行 fam?swappiness 设置得很高,并且有足够多的服务让您不断将内容从内存移动到交换区?cron 作业?
答案3
你有没有尝试过iotop
?