在 Linux 系统中,使用hdparm设置硬盘自动休眠(Spindown)是一个非常有效的节能和降噪手段。
需要注意的是,hdparm主要针对SATA 接口的机械硬盘 (HDD)。对于 SSD,由于没有机械转轴,休眠意义不大;而对于通过 USB 连接的外置硬盘盒,很多并不支持hdparm指令。
第一步:确认硬盘设备名
首先,你需要确定要操作的硬盘设备名(例如/dev/sdb)。
lsblk第二步:测试休眠命令
使用-S参数设置空闲超时时间。hdparm的时间计算逻辑比较特殊:
0:关闭自动休眠。
1 到 240:单位是5 秒。例如
12代表 60 秒(12 * 5s)。241 到 251:单位是30 分钟。例如
241代表 30 分钟,242代表 60 分钟。
常用命令示例(立即生效,重启失效):
# 设置 10 分钟(120 * 5s = 600s)后自动进入休眠 sudo hdparm -S 120 /dev/sdX # 设置 30 分钟后自动进入休眠 sudo hdparm -S 241 /dev/sdX # 立即强制硬盘进入休眠(用于测试) sudo hdparm -y /dev/sdX第三步:检查电源管理设置(APM)
有些硬盘的高级电源管理 (APM)设置会阻止硬盘休眠。如果-S不生效,可以尝试配合-B参数:
# -B 127 及以下的值允许硬盘休眠 sudo hdparm -B 127 -S 120 /dev/sdX第四步:持久化设置(重启不失效)
手动执行的命令在系统重启后会重置。要永久生效,需要修改配置文件。
编辑配置文件:
Bashsudo nano /etc/hdparm.conf在文件末尾添加以下内容(将
sdX替换为你的设备名,或使用 UUID):代码段/dev/sdX { spindown_time = 120 apm = 127 }保存并退出。
💡 进阶建议:如何判断硬盘是否在休眠?
频繁唤醒硬盘会缩短其寿命,你可以通过以下命令检查硬盘当前的电源状态,且不会唤醒硬盘:
sudo hdparm -C /dev/sdXactive/idle: 正在旋转standby: 已停转休眠
注意事项
系统盘不建议休眠:如果 Linux 系统装在 mechanical HDD 上,系统频繁的日志写入会不断唤醒硬盘,导致休眠失败或硬盘频繁起停。
外部依赖:某些后台服务(如 Smartd、监控软件、Samba 共享)可能会定时扫描硬盘导致其无法进入休眠。