在 Linux 中,如果不使用硬盘,则可以使硬盘完全进入休眠状态,或者在更经济或更安静的方式下运行。 在目前的便携式计算机上,您无需手动关闭硬盘,因为硬盘会在不运行时自动进入经济的运行方式。 但是,如果要最大限度地省电,请尝试使用以下一些方法。
hdparm 命令可用于修改多种硬盘设置。选项 -y 将硬盘立即切换到待机方式。 -Y 使硬盘进入休眠状态。hdparm -S x 会使硬盘在一段时间(未活动)后减慢运行速度。 将 x 替换如下:0 表示禁用此机制,导致硬盘持续运行。值 1 到 240 表示的时间为所选的值乘以 5 秒。 值 241 到 251 对应的时间分别是 30 分钟的 1 到 11 倍。
使用选项 -B 可以控制硬盘的内部省电选项。 在 0 到 255 之间选择一个值,0 表示最大省电方式,255 表示最大吞吐量方式。 结果取决于所使用的硬盘,难以估算。 要让硬盘安静一些,请使用选项 -M。 在 128 到 254 之间选择一个值,128 表示最安静,254 表示速度最快。
通常,让硬盘进入休眠状态并不容易。 在 Linux 中,大量的进程对硬盘执行写操作,因而会经常将其唤醒。 因此,一定要了解 Linux 如何处理需要写入硬盘的数据。 首先,在 RAM 中对所有数据进行缓冲。 缓冲区正在由 pdflush 守护程序监视。当数据达到一定的有效期限制或缓冲区已被填充到一定程度时,就会清理缓冲区,将其中的内容写入硬盘。 缓冲区大小是动态的,取决于内存的大小和系统负载。 默认情况下,将 pdflush 设置为较短的时间间隔可以获得最好的数据完整性。它会每 5 秒钟检查一次缓冲区并将数据写入硬盘。以下变量很有用:
/proc/sys/vm/dirty_writeback_centisecs
包含直到 pdflush 线程唤醒的延迟(以百分之一秒为单位)。
/proc/sys/vm/dirty_expire_centisecs
定义最晚在什么时间范围之后应写出未写入页。默认值是 3000,表示 30 秒。
/proc/sys/vm/dirty_background_ratio
pdflush 开始写入未写入页之前未写入页的最大百分比。默认值是 5%。
/proc/sys/vm/dirty_ratio
当未写入页超出总内存的此百分比后,将强制进程在其时间范围内写入未写入缓冲区,而不是继续写入。
![]() | 对数据完整性的损害 |
|---|---|
更改 pdflush 守护程序设置将损害数据完整性。 | |
除了这些进程之外,日记文件系统(例如 ReiserFS 和 Ext3)独立于 pdflush 写入它们的元数据,这也会妨碍硬盘减慢运行速度。为了避免这种情况,已为移动设备开发了特殊的内核扩展。 有关详细信息,请参见 /usr/src/linux/Documentation/laptop-mode.txt。
另一个重要因素是活动程序的行为方式。 例如,好的编辑器会定期将当前已修改文件的隐藏备份写入硬盘,而这会唤醒磁盘。 可以禁用此类功能,但这会影响数据的完整性。
在此连接中,邮件守护程序 postfix 使用变量 POSTFIX_LAPTOP。 如果将此变量设为 yes,则 postfix 访问硬盘的频率将显著降低。
在 SUSE Linux Enterprise Desktop 中,这些技术受 laptop-mode-tools 控制。