hdparm - get/set hard disk parameters
SYNOPSIS
hdparm [ flags ] [device] ..
DESCRIPTION
hdparm provides a command line interface to various hard
disk ioctls supported by the stock Linux ATA/IDE device
driver subsystem. Some options may work correctly only
with the latest kernels. For best results, compile hdparm
with the include files from the latest kernel source code.
OPTIONS
When no flags are given, -acdgkmnru is assumed.
-a Get/set sector count for filesystem read-ahead.
This is used to improve performance in sequential
reads of large files, by prefetching additional
blocks in anticipation of them being needed by the
running task. In the current kernel version
(2.0.10) this has a default setting of 8 sectors
(4KB). This value seems good for most purposes,
but in a system where most file accesses are random
seeks, a smaller setting might provide better per
formance. Also, many IDE drives also have a sepa
rate built-in read-ahead function, which alleviates
the need for a filesystem read-ahead in many situa
tions.
-A Disable/enable the IDE drive's read-lookahead fea
ture (usually ON by default).
-B Get setting of Advanced Power Management feature,
if the drive supports it.
-c Query/enable (E)IDE 32-bit I/O support. A numeric
parameter can be used to enable/disable 32-bit I/O
support: Currently supported values include 0 to
disable 32-bit I/O support, 1 to enable 32-bit data
transfers, and 3 to enable 32-bit data transfers
with a special sync sequence required by many
chipsets. The value 3 works with nearly all 32-bit
IDE chipsets, but incurs slightly more overhead.
Note that "32-bit" refers to data transfers across
a PCI or VLB bus to the interface card only; all
(E)IDE drives still have only a 16-bit connection
over the ribbon cable from the interface card.
-C Check the current IDE power mode status, which will
always be one of unknown (drive does not support
this command), active/idle (normal operation),
standby (low power mode, drive has spun down), or
sleeping (lowest power mode, drive is completely
used to manipulate the IDE power modes.
-d Disable/enable the "using_dma" flag for this drive.
This option only works with a few combinations of
drives and interfaces which support DMA and which
are known to the IDE driver (and with all supported
XT interfaces). In particular, the Intel Triton
chipset is supported for bus-mastered DMA operation
with many drives (experimental). It is also a good
idea to use the -X34 option in combination with -d1
to ensure that the drive itself is programmed for
multiword DMA mode2. Using DMA does not necessar
ily provide any improvement in throughput or system
performance, but many folks swear by it. Your
mileage may vary.
-D Enable/disable the on-drive defect management fea
ture, whereby the drive firmware tries to automati
cally manage defective sectors by relocating them
to "spare" sectors reserved by the factory for
such.
-E Set cdrom speed. This is NOT necessary for regular
operation, as the drive will automatically switch
speeds on its own. But if you want to play with
it, just supply a speed number after the option,
usually a number like 2 or 4.
-f Sync and flush the buffer cache for the device on
exit. This operation is also performed as part of
the -t and -T timings.
-g Display the drive geometry (cylinders, heads, sec
tors), the size (in sectors) of the device, and the
starting offset (in sectors) of the device from the
beginning of the drive.
-h Display terse usage information (help).
-i Display the identification info that was obtained
from the drive at boot time, if available. This is
a feature of modern IDE drives, and may not be sup
ported by older devices. The data returned may or
may not be current, depending on activity since
booting the system. However, the current multiple
sector mode count is always shown. For a more
detailed interpretation of the identification info,
refer to AT Attachment Interface for Disk Drives
(ANSI ASC X3T9.2 working draft, revision 4a, April
19/93).
-I Request identification info directly from the
drive, which is displayed in its raw form with no
appear mangled when using -I but that is NOT a bug.
Otherwise similar to the -i option.
-k Get/set the keep_settings_over_reset flag for the
drive. When this flag is set, the driver will pre
serve the -dmu options over a soft reset, (as done
during the error recovery sequence). This flag
defaults to off, to prevent drive reset loops which
could be caused by combinations of -dmu settings.
The -k flag should therefore only be set after one
has achieved confidence in correct system operation
with a chosen set of configuration settings. In
practice, all that is typically necessary to test a
configuration (prior to using -k) is to verify that
the drive can be read/written, and that no error
logs (kernel messages) are generated in the process
(look in /var/adm/messages on most systems).
-K Set the drive's keep_features_over_reset flag.
Setting this enables the drive to retain the set
tings for -APSWXZ over a soft reset (as done during
the error recovery sequence). Not all drives sup
port this feature.
-L Set the drive's doorlock flag. Setting this to
will lock the door mechanism of some removeable
hard drives (eg. Syquest, ZIP, Jazz..), and setting
it to maintains the door locking mechanism automat
ically, depending on drive usage (locked whenever a
filesystem is mounted). But on system shutdown,
this can be a nuisance if the root partition is on
a removeable disk, since the root partition is left
mounted (read-only) after shutdown. So, by using
this command to unlock the door -b after the root
filesystem is remounted read-only, one can then
remove the cartridge from the drive after shutdown.
-m Get/set sector count for multiple sector I/O on the
drive. A setting of 0 disables this feature. Mul
tiple sector mode (aka IDE Block Mode), is a fea
ture of most modern IDE hard drives, permitting the
transfer of multiple sectors per I/O interrupt,
rather than the usual one sector per interrupt.
When this feature is enabled, it typically reduces
operating system overhead for disk I/O by 30-50%.
On many systems, it also provides increased data
throughput of anywhere from 5% to 50%. Some
drives, however (most notably the WD Caviar
series), seem to run slower with multiple mode
enabled. Your mileage may vary. Most drives sup
port the minimum settings of 2, 4, 8, or 16 (sec
tors). Larger settings may also be possible,
depending on the drive. A setting of 16 or 32
recommends lower settings of 4 to 8 on many of
their drives, due tiny (32kB) drive buffers and
non-optimized buffering algorithms. The -i flag
can be used to find the maximum setting supported
by an installed drive (look for MaxMultSect in the
output). Some drives claim to support multiple
mode, but lose data at some settings. Under rare
circumstances, such failures can result in massive
filesystem corruption.
-n Get or set the "ignore write errors" flag in the
driver. Do NOT play with this without grokking the
driver source code first.
-p Attempt to reprogram the IDE interface chipset for
the specified PIO mode, or attempt to auto-tune for
the "best" PIO mode supported by the drive. This
feature is supported in the kernel for only a few
"known" chipsets, and even then the support is iffy
at best. Some IDE chipsets are unable to alter the
PIO mode for a single drive, in which case this
flag may cause the PIO mode for both drives to be
set. Many IDE chipsets support either fewer or
more than the standard six (0 to 5) PIO modes, so
the exact speed setting that is actually imple
mented will vary by chipset/driver sophistication.
Use with extreme caution! This feature includes
zero protection for the unwary, and an unsuccessful
outcome may result in severe filesystem corruption!
-P Set the maximum sector count for the drive's inter
nal prefetch mechanism. Not all drives support
this feature.
-q Handle the next flag quietly, supressing normal
output. This is useful for reducing screen clutter
when running from /etc/rc.c/rc.local. Not applica
ble to the -i or -v or -t or -T flags.
-r Get/set read-only flag for device. When set, write
operations are not permitted on the device.
-R Register an IDE interface. Dangerous. See the -U
option for more information.
-S Set the standby (spindown) timeout for the drive.
This value is used by the drive to determine how
long to wait (with no disk activity) before turning
off the spindle motor to save power. Under such
circumstances, the drive may take as long as 30
seconds to respond to a subsequent disk access,
though most drives are much quicker. The encoding
of the timeout value is somewhat peculiar. A value
multiples of 5 seconds, for timeouts from 5 seconds
to 20 minutes. Values from 241 to 251 specify from
1 to 11 units of 30 minutes, for timeouts from 30
minutes to 5.5 hours. A value of 252 signifies a
timeout of 21 minutes, 253 sets a vendor-defined
timeout, and 255 is interpreted as 21 minutes plus
15 seconds.
-T Perform timings of cache reads for benchmark and
comparison purposes. For meaningful results, this
operation should be repeated 2-3 times on an other
wise inactive system (no other active processes)
with at least a couple of megabytes of free memory.
This displays the speed of reading directly from
the Linux buffer cache without disk access. This
measurement is essentially an indication of the
throughput of the processor, cache, and memory of
the system under test. If the -t flag is also
specified, then a correction factor based on the
outcome of -T will be incorporated into the result
reported for the -t operation.
-t Perform timings of device reads for benchmark and
comparison purposes. For meaningful results, this
operation should be repeated 2-3 times on an other
wise inactive system (no other active processes)
with at least a couple of megabytes of free memory.
This displays the speed of reading through the
buffer cache to the disk without any prior caching
of data. This measurement is an indication of how
fast the drive can sustain sequential data reads
under Linux, without any filesystem overhead. To
ensure accurate measurments, the buffer cache is
flushed during the processing of -t using the BLK
FLSBUF ioctl. If the -T flag is also specified,
then a correction factor based on the outcome of -T
will be incorporated into the result reported for
the -t operation.
-u Get/set interrupt-unmask flag for the drive. A
setting of 1 permits the driver to unmask other
interrupts during processing of a disk interrupt,
which greatly improves Linux's responsiveness and
eliminates "serial port overrun" errors. Use this
feature with caution: some drive/controller combi
nations do not tolerate the increased I/O latencies
possible when this feature is enabled, resulting in
massive filesystem corruption. In particular,
CMD-640B and RZ1000 (E)IDE interfaces can be unre
liable (due to a hardware flaw) when this option is
used with kernel versions earlier than 2.0.13.
Disabling the IDE prefetch feature of these inter
faces (usually a BIOS/CMOS setting) provides a safe
-U Un-register an IDE interface. Dangerous. The com
panion for the -R option. Intended for use with
hardware made specifically for hot-swapping (very
rare!). Use with knowledge and extreme caution as
this can easily hang or damage your system. The
hdparm source distribution includes a 'contrib'
directory with some user-donated scripts for hot-
swapping on the UltraBay of a ThinkPad 600E. Use
at your own risk.
-v Display all settings, except -i (same as -acdgkmnru
for IDE, -gr for SCSI or -adgr for XT). This is
also the default behaviour when no flags are speci
fied. -TP -w Perform a device reset (DANGEROUS).
Do NOT use this option. It exists for unlikely
situations where a reboot might otherwise be
required to get a confused drive back into a use
able state.
-W Disable/enable the IDE drive's write-caching fea
ture (usually OFF by default).
-X Set the IDE transfer mode for newer (E)IDE/ATA2
drives. This is typically used in combination with
-d1 when enabling DMA to/from a drive on a sup
ported interface chipset (such as the Intel 430FX
Triton), where -X34 is used to select multiword DMA
mode2 transfers. With systems which support Ultra
DMA burst timings, -X66 is used to select UltraDMA
mode2 transfers (you'll need to prepare the chipset
for UltraDMA beforehand). Apart from that, use of
this flag is seldom necessary since most/all modern
IDE drives default to their fastest PIO transfer
mode at power-on. Fiddling with this can be both
needless and risky. On drives which support alter
nate transfer modes, -X can be used to switch the
mode of the drive only. Prior to changing the
transfer mode, the IDE interface should be jumpered
or programmed (see -p flag) for the new mode set
ting to prevent loss and/or corruption of data.
Use this with extreme caution! For the PIO (Pro
grammed Input/Output) transfer modes used by Linux,
this value is simply the desired PIO mode number
plus 8. Thus, a value of 09 sets PIO mode1, 10
enables PIO mode2, and 11 selects PIO mode3. Set
ting 00 restores the drive's "default" PIO mode,
and 01 disables IORDY. For multiword DMA, the
value used is the desired DMA mode number plus 32.
for UltraDMA, the value is the desired UltraDMA
mode number plus 64.
-y Force an IDE drive to immediately enter the low
to spin down. The current power mode status can be
checked using the -C flag.
-Y Force an IDE drive to immediately enter the lowest
power consumption sleep mode, causing it to shut
down completely. A hard or soft reset is required
before the drive can be accessed again (the Linux
IDE driver will automatically handle issuing a
reset if/when needed). The current power mode sta
tus can be checked using the -C flag.
-Z Disable the automatic power-saving function of cer
tain Seagate drives (ST3xxx models?), to prevent
them from idling/spinning-down at inconvenient
times.
BUGS
As noted above, the -m sectcount and -u 1 options should
be used with caution at first, preferably on a read-only
filesystem. Most drives work well with these features,
but a few drive/controller combinations are not 100% com
patible. Filesystem corruption may result. Backup every
thing before experimenting!
Some options (eg. -r for SCSI) may not work with old ker
nels as necessary ioctl()'s were not supported.
Although this utility is intended primarily for use with
(E)IDE hard disk devices, several of the options are also
valid (and permitted) for use with SCSI hard disk devices
and MFM/RLL hard disks with XT interfaces.
AUTHOR
hdparm has been written by Mark Lord <mlord@pobox.com>,
the primary developer and maintainer of the (E)IDE driver
for Linux, with suggestions from many netfolk.
The disable Seagate auto-powersaving code is courtesy of
Tomi Leppikangas(tomilepp@paju.oulu.fi).
SEE ALSO
AT Attachment Interface for Disk Drives, ANSI ASC X3T9.2
working draft, revision 4a, April 19, 1993.
AT Attachment Interface with Extensions (ATA-2), ANSI ASC
X3T9.2 working draft, revision 2f, July 26, 1994.
Western Digital Enhanced IDE Implementation Guide, by
Western Digital Corporation, revision 5.0, November 10,
1993.
Enhanced Disk Drive Specification, by Phoenix Technologies
Ltd., version 1.0, January 25, 1994.
Man(1) output converted with
man2html