33.4. 硬碟的休眠

在 Linux 中,可在不需使用硬碟時,讓硬碟完全進入睡眠狀態,或是讓硬碟以更省電、更安靜的方式來運作。在目前的筆記型電腦中,您不用手動關閉硬碟,因為它們會在不用的時候自動進入省電操作模式。不過,如果您想最大化省電效果,可嘗試下列幾種方法。powersaved 和 YaST 電源管理模組能控制大部份這方面的功能,詳細資訊請參閱 節 33.6, "YaST 電源管理模組"

hdparm 應用程式能修改各種硬碟設定。-y 選項能立即將硬碟切換到待命模式。-Y 能讓它進入睡眠。hdparm -S x 則會讓硬碟閒置一段時期後關閉。可將 x 換成以下內容:0 能關閉此機制,讓硬碟持續運作。1240 的值將乘以 5 秒。241251 的值則是以 30 分鐘為一個單位,依序從 30 分鐘的閒置到 11 倍的 330 分鐘的閒置。

可以使用 -B 選項來控制硬碟內部的省電選項。可從 0255 中選取一個值,以最大化省電效果或最大化電力輸出。其結果視硬碟用途而定,難以評估。如果要減少硬碟噪音,請使用 -M 選項。從 128254 中選取一個值,以決定要安靜或快速。

通常,要讓硬碟進入睡眠不是件容易的事。在 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 的時間間隔,則此項設定將無關緊要。