Linux hdparm 命令
警告:hdparm命令直接操作硬盘硬件,不当使用可能导致数据丢失或硬盘损坏。请谨慎操作,特别是涉及安全擦除、电源管理或性能调整时。
命令简介
hdparm是一个用于获取和设置ATA/SATA硬盘参数的命令行工具。它提供了对硬盘底层参数的访问和控制,包括性能测试、电源管理、缓存设置、安全功能等。常用于系统调优和硬件故障排查。
命令语法
hdparm [选项] [设备]
常用选项
| 选项类别 |
选项 |
说明 |
| 基本信息 |
-I |
显示硬盘详细信息 |
-i |
显示基本信息 |
-h |
显示帮助信息 |
-v |
显示版本信息 |
-H |
读取SMART健康状态 |
--scan |
扫描系统中所有硬盘 |
| 性能测试 |
-t |
测试设备读取性能 |
-T |
测试缓存读取性能 |
--direct |
使用O_DIRECT进行性能测试 |
--offset |
指定测试的偏移量 |
--fibmap |
显示文件块映射 |
--read-sector |
读取指定扇区 |
--write-sector |
写入指定扇区(危险) |
| 电源管理 |
-B |
设置APM级别 |
-C |
检查电源状态 |
-S |
设置待机超时时间 |
-Y |
强制硬盘进入睡眠模式 |
-y |
使硬盘进入省电模式 |
-Z |
禁用省电模式 |
| 缓存设置 |
-W |
设置写缓存启用/禁用 |
-R |
设置只读标志 |
-M |
设置声音管理 |
-K |
设置keep特性 |
-L |
设置锁定标志 |
| 安全功能 |
--security-unlock |
解锁硬盘 |
--security-disable |
禁用密码保护 |
--security-erase |
安全擦除硬盘(不可恢复) |
--security-erase-enhanced |
增强安全擦除 |
常见硬盘设备名
| 设备名 |
说明 |
/dev/sda |
第一块SATA/SCSI硬盘 |
/dev/sdb |
第二块SATA/SCSI硬盘 |
/dev/sdc |
第三块SATA/SCSI硬盘 |
/dev/hda |
第一块IDE硬盘(旧系统) |
/dev/nvme0n1 |
第一块NVMe SSD |
使用示例
1. 查看硬盘详细信息
# 显示硬盘所有信息(最重要)
sudo hdparm -I /dev/sda
# 显示基本信息
sudo hdparm -i /dev/sda
# 扫描系统所有硬盘
sudo hdparm --scan
2. 硬盘性能测试
# 测试缓存读取性能(内存缓存)
sudo hdparm -T /dev/sda
# 测试磁盘读取性能(实际硬盘)
sudo hdparm -t /dev/sda
# 同时测试缓存和磁盘性能
sudo hdparm -Tt /dev/sda
# 多次测试取平均值
sudo hdparm -Tt /dev/sda --repeat=3
# 使用O_DIRECT绕过缓存测试
sudo hdparm -t --direct /dev/sda
3. 电源管理设置
# 查看当前电源状态
sudo hdparm -C /dev/sda
# 设置APM级别(1-254,值越小越省电)
sudo hdparm -B 128 /dev/sda
# 设置待机超时时间(单位:5秒*值)
sudo hdparm -S 241 /dev/sda # 241*5=1205秒≈20分钟
# 使硬盘进入省电模式
sudo hdparm -y /dev/sda
# 强制进入睡眠模式
sudo hdparm -Y /dev/sda
4. 缓存设置优化
# 查看当前缓存设置
sudo hdparm -W /dev/sda
# 启用写缓存(提高性能,但有数据丢失风险)
sudo hdparm -W1 /dev/sda
# 禁用写缓存(更安全)
sudo hdparm -W0 /dev/sda
# 启用高级电源管理
sudo hdparm -B 254 /dev/sda # 最高性能
sudo hdparm -B 128 /dev/sda # 平衡模式
sudo hdparm -B 1 /dev/sda # 最省电
5. 安全功能操作
# 设置硬盘密码(小心!)
sudo hdparm --security-set-pass mypassword /dev/sda
# 解锁硬盘
sudo hdparm --security-unlock mypassword /dev/sda
# 禁用密码保护
sudo hdparm --security-disable mypassword /dev/sda
# 安全擦除硬盘(所有数据不可恢复!)
# 首先冻结安全功能
sudo hdparm --security-freeze /dev/sda
# 然后执行擦除
sudo hdparm --user-master u --security-erase mypassword /dev/sda
6. SMART健康检查
# 查看SMART健康状态
sudo hdparm -H /dev/sda
# 使用smartctl进行更详细的SMART检查
sudo smartctl -a /dev/sda
sudo smartctl -H /dev/sda # 仅显示健康状态
性能测试结果解读
| 硬盘类型 |
缓存读取速度 |
磁盘读取速度 |
| 机械硬盘(HDD) |
800-1200 MB/s |
80-200 MB/s |
| SATA SSD |
1000-2000 MB/s |
400-600 MB/s |
| NVMe SSD |
2000-5000 MB/s |
2000-7000 MB/s |
性能测试输出示例:
# sudo hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 2048 MB in 2.00 seconds = 1024.00 MB/sec
Timing buffered disk reads: 400 MB in 3.00 seconds = 133.33 MB/sec
# 解读:
# 第一行:缓存读取速度 = 1024 MB/s(反映内存和总线速度)
# 第二行:磁盘读取速度 = 133.33 MB/s(反映实际硬盘速度)
系统调优建议
1. 服务器性能优化配置
#!/bin/bash
# 服务器硬盘优化脚本
DEVICE="/dev/sda"
# 启用写缓存(提高性能)
hdparm -W1 $DEVICE
# 设置最高性能APM
hdparm -B 254 $DEVICE
# 禁用自动降速
hdparm -M 254 $DEVICE
# 设置DMA模式
hdparm -d1 $DEVICE
# 显示最终配置
hdparm -I $DEVICE | grep -E "(Model|Write|APM|DMA)"
2. 笔记本电脑省电配置
#!/bin/bash
# 笔记本电脑省电配置
DEVICE="/dev/sda"
# 启用省电模式
hdparm -B 1 $DEVICE
# 设置20分钟无活动后待机
hdparm -S 241 $DEVICE # 241*5=1205秒≈20分钟
# 禁用写缓存(更安全)
hdparm -W0 $DEVICE
echo "省电模式已启用"
常见问题解决
1. 硬盘性能突然下降
# 检查硬盘健康状态
sudo smartctl -H /dev/sda
sudo hdparm -H /dev/sda
# 检查当前DMA设置
sudo hdparm -d /dev/sda
# 如果DMA被禁用,重新启用
sudo hdparm -d1 /dev/sda
# 重置硬盘(可能需要重启)
sudo hdparm -w /dev/sda
2. 硬盘噪音过大
# 设置声音管理(值越小越安静)
sudo hdparm -M 128 /dev/sda
# 或者完全禁用噪音管理
sudo hdparm -M 0 /dev/sda
# 启用自动降噪
sudo hdparm -M 192 /dev/sda
3. 硬盘无法识别
# 重新扫描SCSI总线
sudo rescan-scsi-bus.sh
# 或者手动重新扫描
echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan
# 检查内核消息
dmesg | grep -i sda
# 尝试重新初始化
sudo hdparm -r0 /dev/sda
重要注意事项
- 数据丢失风险:错误使用hdparm可能导致数据永久丢失
- 备份数据:执行任何修改操作前务必备份重要数据
- 安全擦除:--security-erase会永久删除所有数据,无法恢复
- 写缓存风险:启用写缓存提高性能但断电时可能丢失数据
- 兼容性问题:某些选项可能不适用于所有硬盘
- NVMe硬盘:对NVMe SSD支持有限,建议使用nvme-cli工具
安装hdparm
# Debian/Ubuntu系统
sudo apt-get install hdparm
# CentOS/RHEL系统
sudo yum install hdparm
# Fedora
sudo dnf install hdparm
# Arch Linux
sudo pacman -S hdparm
# 编译安装最新版本
wget https://sourceforge.net/projects/hdparm/files/latest/download
tar -xzf hdparm-*.tar.gz
cd hdparm-*/
make
sudo make install
相关命令
smartctl - SMART磁盘健康检查工具
nvme - NVMe硬盘管理工具
fdisk - 磁盘分区工具
lsblk - 列出块设备信息
dd - 磁盘数据复制和性能测试
ioping - 磁盘I/O延迟测试工具
bonnie++ - 磁盘性能基准测试套件