27.4 Rest for the Hard Disk
In Linux, the hard disk can be put to sleep entirely if
it is not needed or it can be run in a more economic
or quieter mode. On modern laptops, you do not need
to switch off the hard disks manually, because they automatically
enter an economic operating mode whenever they are not
needed. However, if you want to maximize power savings,
test some of the following methods. Most of the
functions can be controlled
with powersaved and the YaST power management module, which is discussed
in further detail in Section 27.6,
The YaST Power Management Module.
The hdparm application can be used to modify various hard disk settings. The
option -y instantly switches the hard disk to the standby
mode. -Y puts it to sleep. hdparm
-S x causes the hard
disk to be spun down after a certain period of inactivity. Replace
x as follows: 0 disables this
mechanism, causing the hard disk to run continuously. Values from
1 to 240 are multiplied by 5
seconds. Values from 241 to 251
correspond to 1 to 11 times 30 minutes.
Internal power saving options of the hard disk
can be controlled with the option -B.
Select a value from 0 to 255
for maximum saving to maximum throughput. The result depends
on the hard disk used and is difficult to assess. To make
a hard disk quieter, use the option -M.
Select a value from 128 to
254 for quiet to fast.
Often, it is not so easy to put the hard disk to sleep. In Linux, numerous
processes write to the hard disk, waking it up repeatedly. Therefore, it is
important to understand how Linux handles data that needs to be written to
the hard disk. First, all data is buffered in the RAM. This buffer is
monitored by the kernel update daemon (kupdated). When the data reaches a
certain age limit or when the buffer is filled to a certain degree, the
buffer content is flushed to the hard disk. The buffer size is dynamic and
depends on the size of the memory and the system load. By default, kupdated
is set to short intervals to achieve maximum data integrity. It checks the
buffer every 5 seconds and notifies the bdflush daemon when data is older
than 30 seconds or the buffer reaches a fill level of 30%.
The bdflush daemon then writes the data to the hard disk. It also writes
independently from kupdated if, for instance, the buffer is full.
WARNING: Impairment of the Data Integrity
Changes to the kernel update daemon settings endanger the data
integrity.
Apart from these processes, journaling file systems, like ReiserFS and Ext3,
write their metadata independently from bdflush, which also prevents the
hard disk from spinning down. To avoid this, a special kernel extension has
been developed for mobile devices. See
/usr/src/linux/Documentation/laptop-mode.txt for
details.
Another important factor is the way active programs behave. For example,
good editors regularly write hidden backups of the currently modified
file to the hard disk, causing the disk to wake up. Features like this
can be disabled at the expense of data integrity.
In this connection, the mail daemon postfix makes use of the variable
POSTFIX_LAPTOP. If this variable is set to
yes, postfix accesses the hard disk far less
frequently. However, this is irrelevant if the interval for kupdated was
increased.