很多用户在给 iMac 安装 Linux 后,会选择把系统和数据放在 USB 外接 SSD 或硬盘上,而让内部的 NVMe 与 3.5 寸机械盘“闲置”。
但一个非常重要的事实经常被忽略:
即便没有分区、没有挂载、完全不使用,内置机械盘也会在通电状态下持续旋转。
这不仅会造成不必要的功耗,还会持续消耗机械寿命并产生热量。
本文介绍一种工程级的解决方案,使 iMac 内部的 1TB 机械盘在 Linux 下真正成为“冷备用盘”。
一、机械硬盘“没用也在转”
在 Linux 中,使用:
hdparm -C /dev/sda
可以查看机械盘的当前状态。
典型输出:
drive state is: active/idle
这表示:
- 盘片正在以 7200 RPM 旋转
- 磁头在飞行
- 电机与 PCB 持续耗电
即便磁盘没有任何分区或文件系统,这个状态也不会改变。
对一块 3.5″ 7200RPM 的桌面级 HDD(如 Apple 定制的 ST1000DM003)来说,这意味着 持续 5–8W 的功耗和持续机械磨损。
二、将内置 HDD 手动送入真正的 Standby
Linux 允许直接向 SATA 设备发送停转命令:
sudo hdparm -y /dev/sda
再检查状态:
sudo hdparm -C /dev/sda
如果显示:
drive state is: standby
则表示:
- 主轴电机已关闭
- 盘片停止
- 磁头停泊
- 功耗降到约 0.3–0.8W
这一步将机械盘从“热闲置(Hot Idle)”切换到了“冷备用(Cold Standby)”。
三、图形工具会悄悄把它唤醒
即使硬盘处于 standby,只要有程序读取它的分区表或设备信息,就会被唤醒。
例如:
- GParted
- lsblk
- blkid
- udev 探测
都会触发一次读操作,使磁盘从 standby 变为 active/idle。
因此,仅靠一次 hdparm -y 并不能实现长期冷盘。
四、hd-idle:让磁盘“用完就睡”
为了解决“被唤醒后自动回到 standby”的问题,可以使用 hd-idle。
这是一个专门监控 Linux block I/O 的守护进程。
安装(Arch Linux)
通过 AUR 安装:
hd-idle
配置
编辑:
/etc/conf.d/hd-idle
设置为:
START_HD_IDLE=true
HD_IDLE_OPTS="-a sda -i 60"
含义:
- 只管理
/dev/sda - 60 秒内无任何 I/O → 自动发送 STANDBY
启用
sudo systemctl enable hd-idle
sudo systemctl start hd-idle
确认运行状态:
systemctl status hd-idle
如果看到:
/usr/sbin/hd-idle -d -a sda -i 60
Active: active (running)
则表示守护进程已经开始工作。
五、实际效果验证
测试流程:
- 初始状态
hdparm -C /dev/sda→standby - 打开 GParted
→ 盘被唤醒 - 再次检查
→active/idle - 等待 60 秒
→ hd-idle 自动发出 STANDBY - 再次检查
→standby
这实现了目标行为:
即便被唤醒,只要不再使用,磁盘会自动重新停转。
六、温度变化验证
SMART 提供两个温度源:
Airflow_Temperature_Cel(盘外空气)Temperature_Celsius(盘体内部)
停转前:
37°C / 37°C
停转后数分钟:
36°C / 36°C → 35°C → 34°C …
这说明:
- 磁盘不再是发热源
- iMac 内部整体温度开始下降
机械盘寿命与温度高度相关,每降低 1°C,平均失效率可下降约 5–10%。
七、最终状态
通过 hdparm + hd-idle,这台 iMac 内部盘的角色变成:
| 设备 | 状态 |
|---|---|
| USB 外接盘 | 工作盘 |
| NVMe | 冷系统盘 |
| 内置 HDD | 自动冷备用 |
这与数据中心和 NAS 使用的 spin-down managed cold storage 策略一致。
结语
让一块不使用的机械盘持续旋转,是最隐蔽、最浪费、也最伤寿命的状态。
通过 Linux 提供的底层 ATA 控制与 hd-idle 守护,可以把它变成真正的“冷存档设备”。
这不仅延长硬盘寿命,也降低整机温度与功耗,是一次工程级别的优化。