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++ - 磁盘性能基准测试套件