33.4. 硬盘的休眠

在 Linux 中,如果不使用硬盘,则可以使硬盘完全进入休眠状态,或者在更经济或更安静的方式下运行。在目前的便携式计算机上,您无需手工关闭硬盘,因为硬盘会在不运行时自动进入经济的运行方式。但是,如果要最大限度地省电,请尝试使用以下一些方法。powersaved 和 YaST 电源管理模块可以控制大多数的功能,这将在 第 33.6 节 “YaST 电源管理模块” 中作进一步的讨论。

hdparm 应用程序可用于修改多种硬盘设置。选项 -y 将硬盘立即切换到待机方式。-Y 使硬盘进入休眠状态。hdparm -S x 会使硬盘在一段时间(这段时间内未活动)后减慢运行速度。按以下规则替换 x0 表示禁用此机制,让硬盘继续运行。值 1240 表示的时间为所选的值乘以 5 秒。值 241251 对应的时间分别是 30 分钟的 1 到 11 倍。

使用选项 -B 可以控制硬盘的内部省电选项。在 0255 之间选择一个值,0 表示最大省电方式,255 表示最大吞吐量方式。结果取决于所使用的硬盘,难以估算。要让硬盘安静一些,请使用选项 -M。在 128254 之间选择一个值,128 表示最安静,254 表示速度最快。

通常,让硬盘进入休眠状态并不容易。在 Linux 中,大量的进程对硬盘执行写操作,因而会经常将其唤醒。因此,一定要了解 Linux 如何处理需要写入硬盘的数据。首先,在 RAM 中对所有数据进行缓冲。此缓冲区由内核更新守护程序 (kupdated) 进行监视。当数据达到一定的有效期限制或缓冲区已被填充到一定程度时,就会清理缓冲区,将其中的内容写入硬盘。缓冲区大小是动态的,取决于内存的大小和系统负载。默认情况下,将 kupdated 设置为较短的时间间隔可以获得最好的数据完整性。它每 5 秒检查一次缓冲区,当数据存放时间超过 30 秒或缓冲区填充程度达到 30% 时,它会向 bdflush 守护程序发出通知。随后,bdflush 守护程序将数据写入硬盘。此守护程序还独立于 kupdated 写入数据,例如,当缓冲区已满时。

[Warning]对数据完整性的损害

更改内核更新守护程序设置将损害数据完整性。

除了这些进程之外,日记文件系统(例如 ReiserFS 和 Ext3)独立于 bdflush 写入它们的元数据,这也会妨碍硬盘减慢运行速度。为了避免这种情况,已为移动设备开发了特殊的内核扩展。有关详细信息,请参见 /usr/src/linux/Documentation/laptop-mode.txt

另一个重要因素是活动程序的行为方式。例如,好的编辑器会定期将当前已修改文件的隐藏备份写入硬盘,而这会唤醒磁盘。可以禁用此类功能,但这会影响数据的完整性。

在此连接中,邮件守护程序 postfix 使用变量 POSTFIX_LAPTOP。如果将此变量设为 yes,则 postfix 访问硬盘的频率将显著降低。但是,如果增加 kupdated 的时间间隔,则这样做没有什么作用。