noflushd8
Userland daemon to spin down idle disks.
Usage
noflushd -
[dhirtvV]
[<optargs>]
[<disk>]
[-t
<optargs>]
[<disks> ...]
Overview
noflushd monitors disk activity and spins down <disk>s that have been idle for a certain amount of time. The <disk> argument has to be a device node to a raw disk like, e. g. /dev/hda. It must not be a device node to a partition inside the disk, e. g. /dev/hda1. Unless at least one <disk> argument is given, noflushd tries to monitor all disks on the system as listed in /proc/partitions using the default timeout list. Some of the options take additional arguments <optargs>. See below for a complete list.
noflushd actually used to live in some versions of bdflush, but since kernel version 2.2.11, bdflush had been completely replaced by the kernel-level kupdate daemon, which was renamed into kupdated, and finally replaced again by the pdflush daemon in the Linux 2.5 kernel series.
Options
-
-h -
Print the usage message (help).
-
-v -
Print information on monitored disks upon startup. Log information about events such as disk spinup to syslog. Combined with -d option, produce extra verbose debugging messages.
-
-d -
Don't detach daemon. Print additional debugging information.
-
-V -
Display version information.
-
-r <disk> -
Mark <disk> as read-only, meaning that noflushd will make no attempt to sync <disk> even if it's still spinning. Usually you'll need this option for CD-ROMs or other read-only media that are reported in /proc/partitions. (noflushd detects IDE CD-ROMs itself. SCSI CD-ROMs aren't listed in /proc/partitions so just assume you don't need this option for a start.)
-
-n <timeout-list> -
Set default timeouts. Can be overridden for a single disk using the -t option. See below for how to specify the timeout values.
-
-t <timeout-list> -
Send disk to sleep after timeout minutes have passed without read activity. Unlike
-n, this option only applies to the next <disk> argument following on the command-line. See below for how to specify the timeout values.
<timeout-list>-
A <timeout-list> comprises of one or more comma-separated integer values indicating a timeout value in minutes. Usually you'll only supply a single value and ignore the rest of this section. Read on however if you want to pass several configurations to noflushd. Upon startup, noflushd uses the first timeout value of each list. When a SIGHUP signal is sent to noflushd, it switches to the next set of timeout values in the list, or jumps back to the first, if the end of the list was reached. This is different from restarting the daemon with a new set of parameters because the idle times for each disk are preserved. You can make use of two special timeout values with the -t option. -1 or the keyword "default" uses the current default timeout. 0 or the keyword "skip" advises noflushd to skip monitoring the particular disk in this set of parameters. Different timeout-lists may have different numbers of entries, but this is probably not very useful at all. Nevertheless it is considered a feature, not a bug. It is considered a bug however that this description is far too confusing.
- -i <irq list>
-
Monitor interrupts for interactivity. If one or more interrupts are raised within the default timeout, disks won't get spun down. Interrupts are given as a comma-separated list of either numbers or names as in /proc/interrupts. You can use this option to prevent spindown when the machine is in interactive use. Keyboard, and mouse interrupts are good candidates to monitor in this case.
-
-yes-scsi-idle-patch-is-in-kernel -
Enable support for SCSI disks. The name of this option is gross for a reason: Unless your running kernel has the scsi-idle patch applied, once spun down, SCSI disks will not spin up again, no matter if noflushd is running or not. (You might still be able to trigger a manual spinup, but by Murphy's Law the program to do so resides on the spun-down disk.) Furthermore, the scsi-idle patch is rumored to be buggy on multi-processor systems. Some people have even blamed scsi-idle as the cause of occasional data loss on their disks. In other words, by enabling this option, you assert that you know what you're doing, and that you won't get at me if it turns out that in fact you didn't. More information on SCSI support and the scsi-idle patch is provided in the noflushd README, and in the contrib directory of the noflushd source distribution.
Examples
- 'noflushd -n 60 /dev/hda'
-
This is the recommended commandline for the most common laptop setup: one IDE hard disk, optionally one IDE CD-ROM. The CD-ROM is auto-detected as a read-only drive. Usually CD-ROM drives spin down themselves, so they should not be given on the commandline for noflushd to monitor.
- 'noflushd -r /dev/sdb -n 60,5 /dev/hda -t 15,default /dev/hdc'
-
Here noflushd is told about a read-only device at /dev/sdb (e.g. a magneto-optical drive mounted read-only). noflushd needs this information to decide what disks to sync and when to start/stop kupdated/pdflush. Next, two sets of timeout values are defined: First a 1 hour timeout for the first hard disk, and a 15 minute timeout for the second hard disk. Then a 5 minute timeout for both the first and the second hard disk. Sending SIGHUP to noflushd will toggle between both parameter sets.
- 'noflushd -i keyboard,"PS/2 Mouse" -n 5 -t 60 /dev/hda'
-
Spin down the first IDE disk after one hour, but only if the machine hasn't been used interactively in the past five minutes.
Limitations
When running a devfs-enabled kernel, noflushd won't work unless devfs is mounted. Devfs need not be used, or mounted on /dev, but it needs to be mounted somewhere. That's because the kernel exposes different device names in /proc/partitions, depending whether devfs is compiled in or not.
Kernels prior to version 2.3.99pre8 will only provide disk statistics for the first and second IDE controller. Thus noflushd can't support any more. Improvements in later kernels curiously enough led to also the second IDE controller not being supported anymore by default. It's a kernel limitation, not a noflushd bug. If noflushd refuses to work with your UDMA-100 IDE disks, this is most likely the cause. Check noflushd's README in the doc section for information on how to change this.
As if this hadn't been enough, 2.4.0-test9 changed the /proc/stat layout once again. Current versions of noflushd only support the new format, meaning that noflushd won't run on kernels 2.3.99pre8 to 2.4.0-test8. Please consider upgrading.
Releases
5 releases since Debian 3.0 (Woody); the text changed 1 time.
-yes-scsi-idle-patch-is-in-kernel since Debian 3.1 (Sarge).