什么导致我的磁盘保持唤醒状态?

什么导致我的磁盘保持唤醒状态?

我已经将硬盘配置为在 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)日志。这可以通过commitmount 选项进行调整。
  • 系统日志。在默认配置下,每当写入一行时,某些系统日志就会刷新。Cron 作业是惯犯,因为它们会触发auth日志条目。您需要-在 中的所有日志文件名前添加/etc/syslog.conf

如果你真的想让磁盘减速,请查看noflushd。它确实有效(或者至少以前有效,最近它没有得到太多维护,并且可能与当代内核存在问题)。但请注意,这是一种黑客行为,而且它真的很笨拙:它只是阻止内核写入,直到缓存已满或磁盘无论如何唤醒以进行读取。

如果你在寻找安静,那么帮助很大将圆盘悬挂在弹性物上而不是直接安装。这不会帮助减少功耗,但除非您有≥10krpm 的驱动器(无论如何都需要一个风扇),否则即使在空闲时,CPU 和主板也可能是主要的耗电设备。

答案2

确保已关闭所有详细日志记录。如果您的机器在特定端口上发送广播,而这些广播会被防火墙规则记录下来,那么您很容易就会获得足够的条目,从而导致驱动器无法停止旋转。HP 打印机和 Windows 机器因发送广播来检查本地网络上的其他机器而臭名昭著,大多数防火墙规则都会记录这些请求。

检查您正在运行的服务,看看是否有任何服务可能正在记录到它们自己的文件中。您是否正在运行 fam?swappiness 设置得很高,并且有足够多的服务让您不断将内容从内存移动到交换区?cron 作业?

答案3

你有没有尝试过iotop

相关内容