hdparm 命令是一个 Linux 下的硬盘参数工具,可以对硬盘进行不同的参数设置,如设置 DMA 模式、硬盘缓存、硬盘读写模式、硬盘保护模式等。它可以通过修改硬盘参数来提高硬盘性能以及降低硬盘噪音、延长硬盘等。同时,hdparm 命令也可以用于测试硬盘性能和检查硬盘状态,以便及时发现并解决硬盘问题。
命令名称
hdparm
命令功能
用于/设置硬盘的参数和状态信息
命令全称
hard disk parameter
命令语法
hdparm [options] [device]
hdparm [options] [device] #[English]
命令参数
-d #开启硬盘读写缓存
-t #测试硬盘读取速度
-c #打印硬盘能力信息
-m #将多个扇区合并成一个大扇区
-P #设置硬盘电源管理模式
-B #设置硬盘自动休眠时间
-u #将硬盘转变为只读模式
-w #执行写入测试
-r #执行读取测试
-k #锁定硬盘,意外操作
--security-erase #安全擦除硬盘数据
--security-unlock #取消硬盘锁定状态
--security-set-pass #设置硬盘密码
--security-disable #禁用硬盘密码保护
命令原理
Linux hdparm 命令是一款用于控制硬盘驱动器的工具,主要通过发送命令到硬盘控制器来实现控制硬盘驱动器的属性。该命令可以查询和设置硬盘驱动器的缓存机制、磁盘的读写速度等多种硬盘参数,从而优化硬盘性能和提高系统效率。
用法举例
#显示硬盘的ID和信息
hdparm -i /dev/sda
#进行硬盘的读写测试,显示传输速度
hdparm -Tt /dev/sda
#设置硬盘的磁盘休眠时间为240秒
hdparm -S 240 /dev/sda
#显示硬盘的功耗设置
hdparm -P /dev/sda
#让硬盘进入睡眠模式
hdparm -y /dev/sda
#显示硬盘的命令队列状态
hdparm -Q /dev/sda
#设置硬盘启用32位DMA模式
hdparm -c1 /dev/sda
#设置硬盘的多扇区读取和写入的值为254
hdparm -M 254 /dev/sda
#设置硬盘启用直接处理模式
hdparm -A1 /dev/sda
#设置硬盘启用电源管理模式,减少硬盘发热和噪音。
hdparm -B 1 /dev/sda
执行权限
需要root权限执行
注意事项
需要root权限执行,不正确使用该命令可能会导致数据丢失
系统自带
否
常用命令
否
命令分类
系统管理命令
参数详解
-d
启用或禁用驱动器的DMA操作
#启用/dev/sda驱动器的DMA操作
hdparm -d1 /dev/sda
-d0
禁用驱动器的DMA操作
#禁用/dev/sdb驱动器的DMA操作
hdparm -d0 /dev/sdb
-d1u1
启用驱动器的DMA操作和Ultra DMA模式
#启用/dev/sdc驱动器的DMA操作和Ultra DMA模式
hdparm -d1u1 /dev/sdc
-d1d1
启用驱动器的DMA读写操作
#启用/dev/sdd驱动器的DMA读写操作
hdparm -d1d1 /dev/sdd
-d1w1
启用驱动器的DMA写操作
#启用/dev/sde驱动器的DMA写操作
hdparm -d1w1 /dev/sde
-W1
开启磁盘的缓存
#开启/dev/sda磁盘的缓存功能,可以提高磁盘的读写速度
sudo hdparm -W1 /dev/sda
-c1
启用多扇区传输模式
#启用多扇区传输模式可以提高数据传输速度,适用于一些需要频繁传输大量数据的应用场景。
sudo hdparm -c1 /dev/sda
-c0
禁用多扇区传输模式
#禁用多扇区传输模式可以降低一些数据传输的误差率和传输失败率,适用于一些对数据传输准确性要求较高的应用场景。
sudo hdparm -c0 /dev/sda
-c2
启用32位多扇区传输模式
#启用32位多扇区传输模式可以进一步提高数据传输速度,适用于大数据量的应用场景。
sudo hdparm -c2 /dev/sdb
-c3
启用32位多扇区传输模式,不使用DWord交换
#启用32位多扇区传输模式,不使用DWord交换,可以避免一些传输中的错误,并提高数据传输质量。
sudo hdparm -c3 /dev/sdb
-c4
启用48位多扇区传输模式
#启用48位多扇区传输模式可以进一步提高数据传输速度和传输效率,适用于应用场景。
sudo hdparm -c4 /dev/sdc
-m
设置多扇区读取/写入
#将/dev/sda设置为多扇区读取/写入模式,每次读取/写入16个扇区
hdparm -m16 /dev/sda
-mN
设置多扇区读取/写入,N为扇区数
#将/dev/sdb设置为多扇区读取/写入模式,每次读取/写入32个扇区
hdparm -m32 /dev/sdb
-m0
禁用多扇区读取/写入
#将/dev/sdc禁用多扇区读取/写入模式
hdparm -m0 /dev/sdc
-mi
打印多扇区设置信息
#打印/dev/sdd的多扇区设置信息
hdparm -mi /dev/sdd
-mx
设置多扇区数为x
#将/dev/sde的多扇区数设置为64个扇区。
hdparm -mx64 /dev/sde
-P
设置硬盘的电源管理性
#将硬盘sda的电源管理性设置为1(开启)
sudo hdparm -P 1 /dev/sda
-P 0
禁用硬盘的电源管理性
#将硬盘sdb的电源管理性设置为0(禁用)
sudo hdparm -P 0 /dev/sdb
-P 3
将硬盘的电源管理性设置为默认值
#将硬盘sdc的电源管理性设置为默认值(3)
sudo hdparm -P 3 /dev/sdc
-P 255
将硬盘的电源管理性设置为值
#将硬盘sdd的电源管理性设置为值(255)
sudo hdparm -P 255 /dev/sdd
-B
设置硬盘的APM(自动省电模式)等级
#将硬盘的APM等级设置为别,从而尽可能地减少硬盘的功耗,但也可能降低性能。
hdparm -B 127 /dev/sda
#将硬盘的APM等级设置为别,从而尽可能地提,但也可能增加硬盘的功耗。
hdparm -B 1 /dev/sdb
#将硬盘的APM等级设置为接近别,从而在保持性能的情况下尽量降低硬盘的功耗。
hdparm -B 254 /dev/sdc
#将硬盘的APM等级设置为中等级别,从而在性能和功耗这两个方面做出的平衡。
hdparm -B 128 /dev/sdd
#将硬盘的APM等级设置为一般级别,从而在性能和功耗这两个方面做出相对平衡的选择。
hdparm -B 192 /dev/sde
-u1
开启48位LBA模式
#将/dev/sda硬盘开启48位LBA模式。
hdparm -u1 /dev/sda
-u0
关闭48位LBA模式
#将/dev/sda硬盘关闭48位LBA模式。
hdparm -u0 /dev/sda
-u2
将硬盘设置为禁用48位LBA模式并且强制使用28位LBA模式
#将/dev/sda硬盘设置为禁用48位LBA模式并且强制使用28位LBA模式。
hdparm -u2 /dev/sda
-u3
将硬盘设置为禁用48位LBA模式并且使用设备提供的LBA模式
#将/dev/sda硬盘设置为禁用48位LBA模式并且使用设备提供的LBA模式。
hdparm -u3 /dev/sda
-w
强制写入指定的参数到磁盘驱动器中
#将“1”写入/dev/sda磁盘驱动器中
sudo hdparm -w 1 /dev/sda
#将“0”写入/dev/sda磁盘驱动器中
sudo hdparm -w 0 /dev/sda
#将“1”写入/dev/sdb磁盘驱动器中
sudo hdparm -w 1 /dev/sdb
#将“0”写入/dev/sdb磁盘驱动器中
sudo hdparm -w 0 /dev/sdb
#将“1”写入/dev/sdc磁盘驱动器中
sudo hdparm -w 1 /dev/sdc
-r
表示读取设备的只读属性
#读取设备/dev/sda的只读属性
sudo hdparm -r /dev/sda
-r0
表示将设备的只读属性禁用
#禁用设备/dev/sda的只读属性
sudo hdparm -r0 /dev/sda
-r1
表示将设备的只读属性启用
#启用设备/dev/sda的只读属性
sudo hdparm -r1 /dev/sda
-rN
表示设置设备的只读属性,N为0或1
#将设备/dev/sda的只读属性设置为禁用
sudo hdparm -r0 /dev/sda
-rN /dev/sdX
表示设置指定设备的只读属性,N为0或1
#将设备/dev/sda的只读属性设置为启用
sudo hdparm -r1 /dev/sda
-k
启用或禁用冻结锁定状态(DCO/HPA)
#启用/dev/sda的冻结锁定状态
hdparm -k 1 /dev/sda
-ks
设置冻结锁定状态密码
#为/dev/sda设置冻结锁定状态密码为password
hdparm -ks password /dev/sda
-kN
设置驱动程序寻道时间(以四分秒为单位)
#将/dev/sda的寻道时间设置为2.5秒(10*0.25秒)
hdparm -kN10 /dev/sda
-kS
设置非冻结锁定状态密码
#为/dev/sda设置非冻结锁定状态密码为password
hdparm -kS password /dev/sda
-kU
解锁锁定状态
#解锁/dev/sda的锁定状态
hdparm -kU /dev/sda
--security-erase
用于执行安全擦除操作
#执行/dev/sda设备的安全擦除操作,使用增强型擦除方式,需要root权限。
sudo hdparm --security-erase-enhanced /dev/sda
#该命令使用mypassword密码擦除了/dev/sdb硬盘中的所有数据。
sudo hdparm --security-erase mypassword /dev/sdb
--security-erase-unit
用于指定安全擦除操作的块数
#执行/dev/sdb设备的安全擦除操作,每次擦除10个块,需要root权限。
sudo hdparm --security-erase-unit=10 /dev/sdb
--user-master u
用于指定用户的安全擦除权限
#执行/dev/sdc设备的安全擦除操作,使用默认的擦除方式,需要root权限。
sudo hdparm --user-master u --security-erase /dev/sdc
#该命令禁用了/dev/sdb硬盘用户级别为2的安全性。
sudo hdparm --user-master u2 --security-disable /dev/sdb
--security-count-minimal
用于指定小的安全擦除次数
#执行/dev/sdd设备的安全擦除操作,使用默认的擦除方式,并指定小的擦除次数为3,需要root权限。
sudo hdparm --security-erase --security-count-minimal=3 /dev/sdd
--security-unlock
用于解锁被锁定的安全擦除操作
#执行/dev/sde设备的安全擦除操作前需要先解锁,使用PASSWORD作为密码解锁,需要root权限。
sudo hdparm --security-unlock PASSWORD /dev/sde
#解锁/dev/sda硬盘的安全锁定
sudo hdparm --security-unlock p /dev/sda
#该命令解锁了/dev/sdb硬盘的安全性,解锁密码为mypassword。
sudo hdparm --security-unlock mypassword /dev/sdb
--security-unlock-master
解锁硬盘的主安全锁定,使得硬盘可以进行操作
#解锁/dev/sda硬盘的主安全锁定
sudo hdparm --security-unlock-master p /dev/sda
--security-unlock-erase
解锁硬盘的安全锁定并擦除数据,使得硬盘可以进行操作
#解锁/dev/sda硬盘的安全锁定并擦除数据
sudo hdparm --security-unlock-erase p /dev/sda
--security-unlock-frozen
解锁被冻结的硬盘的安全锁定,使得硬盘可以进行操作
#解锁被冻结的/dev/sda硬盘的安全锁定
sudo hdparm --security-unlock-frozen p /dev/sda
--security-unlock-all
解锁硬盘的所有安全锁定,使得硬盘可以进行操作
#解锁/dev/sda硬盘的所有安全锁定
sudo hdparm --security-unlock-all p /dev/sda
password
设置新的安全密码
#此命令将指定的硬盘(/dev/sda)的安全密码设置为“MyNewPassword”。
linux hdparm --security-set-pass MyNewPassword /dev/sda
master
设置主密码
#此命令将指定的硬盘(/dev/sda)的主密码设置为当前用户指定的密码。
linux hdparm --security-set-pass master /dev/sda
max
设置安全密码的长度
#此命令将指定的硬盘(/dev/sda)的安全密码长度设置为当前系统支持的值。
linux hdparm --security-set-pass max /dev/sda
enhanced
启用强化模式
#此命令将启用指定的硬盘(/dev/sda)的安全密码强化模式。
linux hdparm --security-set-pass enhanced /dev/sda
quiet
关闭输出信息
#此命令将指定的硬盘(/dev/sda)的安全密码设置为当前用户指定的密码,并关闭所有输出信息。
linux hdparm --security-set-pass quiet /dev/sda
--security-disable
禁用硬盘的安全性,包括密码保护和加密等功能。
#该命令禁用了/dev/sdb硬盘的安全性,可能需要管理员权限执行。
sudo hdparm --security-disable /dev/sdb
--security-set-pass
设置硬盘的安全密码,用于加密和保护数据。
#该命令设置了/dev/sdb硬盘的安全密码为mypassword,用于保护数据。
sudo hdparm --security-set-pass mypassword /dev/sdb
命令报错原因
* 需要root权限才能执行hdparm命令;
* 硬盘被挂载不能进行hdparm命令;
* 硬盘被锁定或者不支持hdparm命令导致报错;
* 硬盘的接口类型与hdparm命令不兼容;
* 硬盘出现故障导致hdparm命令无法使用。