在 Linux 中,如果不使用硬盘,则可以使硬盘完全进入休眠状态,或者在更经济或更安静的方式下运行。 在目前的便携式计算机上,您无需手动关闭硬盘,因为硬盘会在不运行时自动进入经济的运行方式。 但是,如果要最大限度地省电,请尝试使用以下一些方法。 powersaved 和 YaST 电源管理模块可以控制大多数的功能,这将在第 28.6 节 “YaST 电源管理模块”中作进一步的讨论。
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 中对所有数据进行缓冲。 此缓冲区由内核更新守护程序 (kupdated) 进行监视。 当数据达到一定的有效期限制或缓冲区已被填充到一定程度时,就会清理缓冲区,将其中的内容写入硬盘。 缓冲区大小是动态的,取决于内存的大小和系统负载。 默认情况下,将 kupdated 设置为较短的时间间隔可以获得最好的数据完整性。 它每 5 秒检查一次缓冲区,当数据存放时间超过 30 秒或缓冲区填充程度达到 30% 时,它会向 bdflush 守护程序发出通知。 随后,bdflush 守护程序将数据写入硬盘。 此守护程序还独立于 kupdated 写入数据,例如,当缓冲区已满时。
![]() | 对数据完整性的损害 |
|---|---|
更改内核更新守护程序设置将损害数据完整性。 | |
除了这些进程之外,日记文件系统(例如 ReiserFS 和 Ext3)独立于 bdflush 写入它们的元数据,这也会妨碍硬盘减慢运行速度。 为了避免这种情况,已为移动设备开发了特殊的内核扩展。 有关详细信息,请参见 /usr/src/linux/Documentation/laptop-mode.txt。
另一个重要因素是活动程序的行为方式。 例如,好的编辑器会定期将当前已修改文件的隐藏备份写入硬盘,而这会唤醒磁盘。 可以禁用此类功能,但这会影响数据的完整性。
在此连接中,邮件守护程序 postfix 使用变量 POSTFIX_LAPTOP。 如果将此变量设为 yes,则 postfix 访问硬盘的频率将显著降低。 但是,如果增加 kupdated 的时间间隔,则这样做没有什么作用。