hd-idle
hd-idle copied to clipboard
hd-idle
Hard Disk Idle Spin-Down Utility
hd-idle is a utility program for spinning-down external disks after a period of idle time. Since most external IDE disk enclosures don't support setting the IDE idle timer, a program like hd-idle is required to spin down idle disks automatically.
A word of caution: hard disks don't like spinning up too often. Laptop disks are more robust in this respect than desktop disks but if you set your disks to spin down after a few seconds you may damage the disk over time due to the stress the spin-up causes on the spindle motor and bearings. It seems that manufacturers recommend a minimum idle time of 3-5 minutes, the default in hd-idle is 10 minutes.
One more word of caution: hd-idle will spin down any disk accessible via the SCSI layer (USB, IEEE1394, ...) but it will NOT work with real SCSI disks because they don't spin up automatically. Thus it's not called scsi-idle and I don't recommend using it on a real SCSI system unless you have a kernel patch that automatically starts the SCSI disks after receiving a sense buffer indicating the disk has been stopped. Without such a patch, real SCSI disks won't start again and you can as well pull the plug.
You have been warned...
The latest version of hd-idle can be found on SourceForge:
http://hd-idle.sf.net
hd-idle is not public domain software. It's copyrighted by myself, Christian Mueller, according to the terms of the GNU General Public License (GPL). Please see the file LICENSE for additional information.
Copyright (c) Christian Mueller 2007
==============================================================================
Installation
The compile process is rather simple, thus there's no automake or configure script at this point, just a makefile for Linux. Since hd-idle is using the Linux generic SCSI layer, it requires the include files scsi/sg.h and scsi/scsi.h which should come with libc6-dev (at least on Debian they do).
Non-Debian Systems:
- In order to compile the program, type "make".
- In order to install the program into /usr/local/sbin, type "make install" (this will also install the manpage into /usr/local/share/man/man1)
Debian Systems:
- Run "dpkg-buildpackage -rfakeroot"
- Run "dpkg -i ../hd-idle_*.deb" to install the package
NOTE: The build framework has been changed to be compatible to the Debian package management with the intention of making hd-idle an official Debian package. Once this effort has completed, hd-idle can be installed with "apt-get install hd-idle". The changes to the Debian build instructions as outlined above (previous releases used "make install_debian") are a side effect of this effort.
Once completed, please check /etc/default/hd-idle for configuration information. The default settings will not start hd-idle automatically.
Running hd-idle
In order to run hd-idle, type "hd-idle". This will start hd-idle with the default options, causing all SCSI (read: USB, Firewire, SCSI, ...) hard disks to spin down after 10 minutes of inactivity.
On a Debian system, after editing /etc/default/hd-idle and enabling it, use "/etc/init.d/hd-idle start" to run hd-idle.
Please note that hd-idle uses /proc/diskstats to read disk statistics. If this file is not present, hd-idle won't work.
In case of problems, use the debug option (-d) tp get further information.
Command line options:
-a
Miscellaneous options:
-t
Regarding the parameter "-a":
Users of hd-idle have asked for means to set idle-time parameters for individual disks. This makes a lot of sense, not only because some [SCSI] disks may not react well to being stopped. Originally, hd-idle had one idle time for all disks. The parameter "-a" can now be used to set a filter on the disk's device name (omit /dev/) for subsequent idle-time settings.
-
A -i option before the first -a option will set the default idle time; hence, compatibility with previous releases of hd-idle is maintained.
-
In order to disable spin-down of disks per default, and then re-enable spin-down on selected disks, set the default idle time to 0.
Example: hd-idle -i 0 -a sda -i 300 -a sdb -i 1200
This example sets the default idle time to 0 (meaning hd-idle will never try to spin down a disk), then sets explicit idle times for disks which have the string "sda" or "sdb" in their device name.
Stopping hd-idle
Use "killall hd-idle" to stop hd-idle. On a Debian system, use "/etc/init.d/hd-idle stop".