"hdparm" - Hard Disk Parameters

Provides a tutorial example on how to use the 'hdparm' command to gather hard disk identification information and get/set individual parameters. 'hdparm' command does not work on normal USB drives.

If you want to see and change hard disk parameters, you can use the "hdparm" command as shown in this tutorial.

1. Get hard disk identification information in a compact format with the "hdparm -i" command.

herong$ sudo hdparm -i /dev/sda

/dev/sda:
 Model=WDC WD10EZEX-******, FwRev=01.01A01, SerialNo=WD-******
 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1953525168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: Reserved:  ATA/ATAPI-1,2,3,4,5,6,7

2. Get hard disk identification information in a detailed format with the "hdparm -I" command. I see lot of useful information.

herong$ sudo hdparm -I /dev/sda

/dev/sda:
ATA device, with non-removable media
  Model Number:       WDC WD10EZEX-******
  Serial Number:      WD-******
  Firmware Revision:  01.01A01
  Transport:          Serial, SATA 1.0a, SATA II Extensions, ...
Standards:
  Used: unknown (minor revision code 0x001f)
  Supported: 9 8 7 6 5
  Likely used: 9
Configuration:
  Logical    max  current
  cylinders  16383  16383
  heads    16  16
  sectors/track  63  63
  --
  CHS current addressable sectors:    16514064
  LBA    user addressable sectors:   268435455
  LBA48  user addressable sectors:  1953525168
  Logical  Sector size:                   512 bytes
  Physical Sector size:                  4096 bytes
  device size with M = 1024*1024:      953869 MBytes
  device size with M = 1000*1000:     1000204 MBytes (1000 GB)
  cache/buffer size  = unknown
  Nominal Media Rotation Rate: 7200
Capabilities:
  LBA, IORDY(can be disabled)
  Queue depth: 32
  Standby timer values: spec'd by Standard, with device specific minimum
  R/W multiple sector transfer: Max = 16  Current = 16
  DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
       Cycle time: min=120ns recommended=120ns
  PIO: pio0 pio1 pio2 pio3 pio4
       Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
  Enabled  Supported:
     *  SMART feature set
        Security Mode feature set
     *  Power Management feature set
     *  Write cache
     *  Look-ahead
     *  Host Protected Area feature set
     *  WRITE_BUFFER command
     *  READ_BUFFER command
     ...
Security:
  Master password revision code = 65534
    supported
  not  enabled
  not  locked
    frozen
  not  expired: security count
    supported: enhanced erase
  122min for SECURITY ERASE UNIT. 122min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5001******
  NAA    : 5
  IEEE OUI  : 0014ee
  Unique ID  : ******
Checksum: correct

3. Get detailed identification information of a USB drive. I don't see any useful information. So "hdparm" command is not design for all types of storage devices.

herong$ sudo hdparm -I /dev/sdb

/dev/sdb:
SG_IO: bad/missing sense data, sb[]:  f0 00 05 00 00 00 00 14 ...

ATA device, with non-removable media
Standards:
  Likely used: 1
Configuration:
  Logical    max  current
  cylinders  0  0
  heads    0  0
  sectors/track  0  0
  --
  Logical/Physical Sector size:           512 bytes
  device size with M = 1024*1024:           0 MBytes
  device size with M = 1000*1000:           0 MBytes
  cache/buffer size  = unknown
Capabilities:
  IORDY not likely
  Cannot perform double-word IO
  R/W multiple sector transfer: not supported
  DMA: not supported
  PIO: pio0

3. Get the read-only flag of a USB drive using the "hdparm -r" command.

herong$ sudo hdparm -r /dev/sdb

/dev/sdb:
readonly      =  0 (off)

4. Set the read-only flag of a USB drive using the "hdparm -r 1" command.

herong$ sudo hdparm -r 1 /dev/sdb

/dev/sdb:
 setting readonly to 1 (on)
 readonly      =  1 (on)

5. Verify the read-only flag of a USB drive. I see that the read-only flag on the USB drive is not working.

(mount the only partition of the USB drive)
herong$ sudo mount /dev/sdb1 /media

herong$ cd /media

(create a new file on USB driver)
herong$ sudo touch test.txt

herong$ ls -l test.txt
-rwxr-xr-x. 1 root root    0 Apr  1 05:38 test.txt

herong$ sudo hdparm -r /dev/sdb
/dev/sdb:
 readonly      =  1 (on)

Table of Contents

 About This Book

 Introduction to Linux Systems

 Cockpit - Web Portal for Administrator

 Process Management

 Files and Directories

 Users and Groups

File Systems

 "df" - Display Free Space of File System

 Mount USB Drive as File System

 "fdisk" - Format Disk Partitions

 "dd" - Copy Data from/to Storage Devices

 Use "dd" Command to Test I/O Speed

"hdparm" - Hard Disk Parameters

 "du" - Display Disk Usage of Directories

 Mount Windows NTFS File System

 Access Persmissions on "ntfs-3g" File System

 Mount Windows Shared Folders

 W95 Ext'd (LBA) Partition

 File System Types, IDs and Formats

 LVM (Logical Volume Manager)

 "parted" - Partition Manipulation Program

 Reformat NTFS Partition into EXT4 Partition

 Unreachable Remote File Systems

 Installing CentOS

 SELinux - Security-Enhanced Linux

 Network Connection on CentOS

 Software Package Manager on CentOS - DNF and YUM

 Running Apache Web Server (httpd) on Linux Systems

 Running PHP Scripts on Linux Systems

 Running MySQL Database Server on Linux Systems

 Running Python Scripts on Linux Systems

 vsftpd - Very Secure FTP Daemon

 Postfix - Mail Transport Agent (MTA)

 Dovecot - IMAP and POP3 Server

 Email Client Tools - Mail User Agents (MUA)

 GCC - C/C++ Compiler

 Conda - Environment and Package Manager

 Tools and Utilities

 References

 Full Version in PDF/EPUB