hdparm

最後更新: 2019-05-30

 

 


查看一般資料

 

hdparm /dev/sda

/dev/sda:
 multcount     = 16 (on)
 IO_support    =  1 (32-bit)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 30401/255/63, sectors = 488397168, start = 0

更多資料:

hdparm -i /dev/sda

/dev/sda:

 Model=Hitachi HDP725025GLAT80, FwRev=GM2OA4CA, SerialNo=GE1240RS0KA9XA
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=56
 BuffType=DualPortCache, BuffSize=7174kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=488397168
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 udma6
 AdvancedPM=yes: disabled (255) WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-2,3,4,5,6,7

 * signifies the current active mode

more detail than "-i"

hdparm -I /dev/sde

Capabilities:
        LBA, IORDY(can be disabled)
        Queue depth: 32
        Standby timer values: spec'd by Standard, no device specific minimum
        R/W multiple sector transfer: Max = 16  Current = ?
        Recommended acoustic management value: 208, current value: 0
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
             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
        not     frozen
        not     expired: security count
                supported: enhanced erase
        82min for SECURITY ERASE UNIT. 82min for ENHANCED SECURITY ERASE UNIT.

 


測試速度

 

Usage:

hdparm -tT /dev/sda

caching of data (從 HardDisk 的 cache 讀取資料):

hdparm -t /dev/sdd

/dev/sdd:
 Timing buffered disk reads: 104 MB in  3.02 seconds =  34.40 MB/sec

buffer cache speed (without  disk access):

hdparm -T /dev/sdd

/dev/sdd:
 Timing cached reads:   4334 MB in  2.00 seconds = 2167.95 MB/sec

 


Enable Write Cache

 

查看:

hdparm -W /dev/sda

/dev/sda:
 write-caching =  1 (on)

停用:

hdparm -W0 /dev/sda

 

立即寫入 Cache

-f     Sync and flush the buffer cache for the device on exit. 

       This operation is also performed internally as part of the -t and -T timings and other options.

 


Check Disk Cache

 

# tell whether a device needs cache flushes or not

cat /sys/block/sda/device/scsi_disk/*/cache_type

OR

cat /sys/block/sda/queue/write_cache

  • "write back"        # the device claims that it does require cache flushes.
                             # (hdparm -W1 /dev/sda)
  • "write through"   # the device claims that it does not require cache flushes.
                             # (hdparm -W0 /dev/sda)

 


令 Disk Sleep

 

# idle

Put the drive into idle (low-power) mode, and also set the standby (spindown) timeout for the drive.

# Standby

-y     # Force an IDE drive to immediately enter the low power consumption standby mode,

        # usually causing it to spin down.  

 * 在 standby mode 依然用到 smartctl -d sat -a /dev/sdd

hdparm -y /dev/sdd

# 此 cmd 會令 Load_Cycle_Count 上升

193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       3

 * If anything access the disk, it will spin up again.

# Sleep

-Y     # Force an IDE drive to immediately enter the lowest power consumption sleep mode, causing it to shutdown 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)

# Checking

-C            # current power mode status

hdparm -C /dev/sdd

[1]

/dev/sdd:
 drive state is:  active/idle

[2]

/dev/sdd:
 drive state is:  standby

# Auto Sleep

-S    

Put the drive into idle (low-power) mode, and also set the standby (spindown) timeout for the drive.

This timeout 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 of zero means "timeouts are disabled": the device will not automatically enter standby mode.

Values from 1 to 240 specify multiples of 5 seconds, yielding timeouts from 5 seconds to 20 minutes.  

Values from 241 to 251 specify from 1 to  11  units  of 30 minutes, yielding timeouts from 30 minutes to 5.5 hours.  

A value of 252 signifies a timeout of 21 minutes. A value of 253 sets a vendor-defined timeout period between 8 and 12 hours,

and the value 254 is reserved.  255 is interpreted as 21 minutes  plus 15 seconds. 

Note that some older drives may have very different interpretations of these values.

 


Save Power

 

-M     Get/set  Automatic  Acoustic Management (AAM) setting.

Most modern harddisk drives have the ability to speed down the head movements to reduce their noise output.

0 (off)

128 (quiet)

254 (fast)

 


Lock HDD with Pass

 

此 lock 是透過 firmware password 實現

hard drive is really encrypted, and the password is used to unlock a decryption key

底板 BIOS 要 support HDD password protection 才會問密碼

強度: 32 bytes

測試 HDD:  ST500DM002-1BD142

查看 HDD 的 "Security" 情況

hdparm -I /dev/sde

Security:
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
                supported: enhanced erase
        82min for SECURITY ERASE UNIT. 82min for ENHANCED SECURITY ERASE UNIT.

frozen => 無法執行使用 "Security" 功能, 比如 Secure Erase (Freeze security settings until power reset)

--security-freeze      # Freeze the drive´s security settings

                              # combination with --security-unlock to protect drive from any attempt to set a new password

對硬碟設置 Security 功能的密碼 (不影響現有 Data)

# When the user password is set the drive will be locked after next power cycle

# (the drive will deny normal access until unlocked with the correct password)

hdparm --security-set-pass 1234 /dev/sde

security_password: "1234"

/dev/sde:
 Issuing SECURITY_SET_PASS command, password="1234", user=user, mode=high

hdparm -I /dev/sde

Security:
        Master password revision code = 65534
                supported
                enabled
        not     locked

Power reset HDD 後 (soft reset 係唔得的 "echo 1 > /sys/block/sde/device/delete" )

Security:
        Master password revision code = 65534
                supported
                enabled
                locked

當 HDD 被 lock 後 dmesg 有

[ 3771.730005] ata5: exception Emask 0x10 SAct 0x0 SErr 0x90202 action 0xe frozen
[ 3771.730024] ata5: irq_stat 0x00400000, PHY RDY changed
[ 3771.730034] ata5: SError: { RecovComm Persist PHYRdyChg 10B8B }
[ 3771.730050] ata5: hard resetting link
[ 3772.454154] ata5: SATA link down (SStatus 0 SControl 300)
[ 3772.454164] ata5: EH complete
[ 3772.839999] ata5: exception Emask 0x10 SAct 0x0 SErr 0x40d0002 action 0xe frozen
[ 3772.840004] ata5: irq_stat 0x00000040, connection status changed
[ 3772.840007] ata5: SError: { RecovComm PHYRdyChg CommWake 10B8B DevExch }
[ 3772.840012] ata5: hard resetting link
[ 3778.645314] ata5: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 3778.646784] ata5.00: ATA-8: ST500DM002-1BD142, KC48, max UDMA/133
[ 3778.646787] ata5.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 31/32)
[ 3778.648309] ata5.00: configured for UDMA/133
[ 3778.648317] ata5: EH complete
[ 3778.648450] scsi 4:0:0:0: Direct-Access     ATA      ST500DM002-1BD14 KC48 PQ: 0 ANSI: 5
[ 3778.648684] sd 4:0:0:0: [sde] 976773168 512-byte logical blocks: (500 GB/466 GiB)
[ 3778.648686] sd 4:0:0:0: [sde] 4096-byte physical blocks
[ 3778.648697] sd 4:0:0:0: [sde] Write Protect is off
[ 3778.648699] sd 4:0:0:0: [sde] Mode Sense: 00 3a 00 00
[ 3778.648717] sd 4:0:0:0: [sde] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 3778.650241] sd 4:0:0:0: Attached scsi generic sg4 type 0
[ 3778.752907] ata5.00: exception Emask 0x0 SAct 0x100 SErr 0x0 action 0x0
[ 3778.752912] ata5.00: irq_stat 0x40000001
[ 3778.752915] ata5.00: failed command: READ FPDMA QUEUED
[ 3778.752920] ata5.00: cmd 60/08:40:00:00:00/00:00:00:00:00/40 tag 8 ncq dma 4096 in
                        res 41/04:08:00:00:00/00:00:00:00:00/00 Emask 0x401 (device error) <F>
[ 3778.752922] ata5.00: status: { DRDY ERR }
[ 3778.752924] ata5.00: error: { ABRT }
[ 3778.755777] ata5.00: configured for UDMA/133
[ 3778.755792] ata5: EH complete
[ 3778.853038] ata5.00: NCQ disabled due to excessive errors
[ 3778.853042] ata5.00: exception Emask 0x0 SAct 0x400 SErr 0x0 action 0x0
[ 3778.853046] ata5.00: irq_stat 0x40000001
[ 3778.853050] ata5.00: failed command: READ FPDMA QUEUED
[ 3778.853055] ata5.00: cmd 60/08:50:00:00:00/00:00:00:00:00/40 tag 10 ncq dma 4096 in
                        res 41/04:08:00:00:00/00:00:00:00:00/00 Emask 0x401 (device error) <F>

# Disable Lock

# Switching "Locked" into"Not Locked" ("soft reset" / "hdparm -z" 後就 unlock 了, power reset 後就會 lock 後)

--security-unlock PASSWD       # Unlock drive

i.e.

hdparm --security-unlock 1234 /dev/sde

soft reset

hdparm -Y /dev/sde
echo 1 > /sys/block/sde/device/delete
echo "- - -" > /sys/class/scsi_host/host4/scan

hdparm -I /dev/sde

Security:
        Master password revision code = 65534
                supported
                enabled
        not     locked

# Switching "Enabled" into "Not Enabled" security lock

--security-disable PASSWD      # Disable drive locking, using password PWD (soft reset 後生效)

i.e.

hdparm --security-disable 1234 /dev/sde

Security:
        Master password revision code = 65534
                supported
        not     enabled
        not     locked

Remark

# Force a kernel re-read of the partition table of the specified device(s)

hdparm -z /dev/sde

 


Master password

 

hdparm -I /dev/sde

...
Security:
        Master password revision code = 65534
...

The default value 65534 (0xFFFE) references the manufacturer-defined password

The initial master password is unknown to the user but can be overwritten by the first call

hdparm -user-master m --security-set-pass 1234 /dev/sde

The Master Password Revision Code is then set to 1

Security:
        Master password revision code = 1

If only a master password, but no user password, is set, no security features are active.

-user-master

# Specifies which password (user/master) to select. Defaults to user password.

u   user-password (default)

m   master-password

Security level

--security-mode MODE

  • h        # high (Defaults)
  • m       # maximum

maximum

no longer unlock the device with the master password or directly disable the security features
( lose all user data if you forget the user password )

Usage

hdparm --security-mode m --security-set-pass 1234 /dev/sde

master password 應用

hdparm --user-master m --security-disable datahunter /dev/sde

hdparm --user-master m --security-unlock datahunter /dev/sde

 


Enhanced Erase

 

# 使用與 "--security-set-pass" 相同的密碼執行 Secure Erase

# After a successful erasure the drive security should automatically be set to disabled

# (thus no longer requiring a password for access).

--security-erase PWD             #  Erase (locked) drive, using password PWD (DANGEROUS).

i.e.

hdparm --security-erase 1234 /dev/sde

Result: hdparm 會在 console 執行並且不能 kill, harddisk 開始長轉

Secure erase

Overwrites all user data areas with binary zeroes.

Enhanced secure erase

Writes predetermined data patterns (set by the manufacturer) to all user data areas,

including sectors that are no longer in use due to reallocation.