The host
can spin down a drive manually, but most often it's done autonomously be the drive.
‣ In Linux you can manually ...
• check the power state of your drive using: hdparm -C /dev/sda
• manually spin down the drive (standby) using: hdparm -y /dev/sda (it will immediately spin up at the first attempt to read a sector)
‣ Or you configure the automatic standby of the drive (which also does not involve the OS)...
• hdparm -S n /dev/sda will configure the timeout of the drive to a value encoding the time to spin-down on a non-linear scale, check the manpage
• hdparm -B n /dev/sda will configure another type of power management which doesn't specify a fixed timeout, but rather a vendor-defined type of arbitrary power saving measures on a scale of 1..254 (1: waste power, 254: conserve power, n>128 allows spin down)
The latter two options are handled internally by the drive and (as far as I know) even stored non-volatile.
http://linux.die.net/man/8/hdparm
(Edit: fixed my broken English ;-) )