跳转到内容

低功耗与静音 ​

NAS 一年 365 天开机,功耗和噪音都是日常成本。读完这一篇,你能按「效果大、风险小」的顺序调整硬盘休眠、CPU 频率、平台省电和风扇,并用测量来确认每一项改动是不是真的有用。

开始之前 ​

  • 准备一个插座式功率计。它是唯一可靠的衡量工具:软件读到的功耗只是估算,而且看不到电源和硬盘的损耗。
  • 每次只改一项,改完观察一段时间,再改下一项。省电设置很依赖具体硬件,别人的结论不一定适用于你的机器。
  • 命令在 OMV 的 shell(SSH 或本机控制台,root 身份)里执行。

省电设置会拿稳定性和寿命交换

影响范围:硬盘频繁启停会增加磨损;休眠的硬盘首次被访问时要等它转起来;过于激进的 PCIe、SATA 省电在个别硬件上会导致设备掉线甚至系统卡死,USB 硬盘盒对电源管理尤其敏感。

前置条件:数据已经有独立备份;每次只改一项;最好能把显示器和键盘接到 NAS 上,万一卡死可以现场处理。

怎么回退:界面里的设置改回原值并点击应用;BIOS 里的选项恢复默认值;通过命令临时写入的内核设置,重启后会自动恢复。

先量出基线 ​

在做任何调整之前,记下三种状态下的整机功耗:

状态怎么构造
硬盘空转所有硬盘都在旋转,没有读写
硬盘休眠所有硬盘都已经停转(见下一节)
满载正在大量复制文件,或者运行 scrub

调整之后用同样的方法再测一遍,对比差值。改动前后没有差别的设置,就不必保留。

第一步:硬盘,通常效果最大 ​

旋转的机械硬盘是整机里最大的可控耗电部件,停转之后功耗明显下降,噪音也随之消失。

单块硬盘的电源设置 ​

入口是 存储器 → 磁盘(Storage → Disks),选中一块盘,点编辑(Edit):

设置说明
高级电源管理(Advanced Power Management,APM)界面里明确提示:值大于等于 128 时不允许磁盘停转。要让硬盘休眠,选「1 - 允许待机(磁头停转)时最低功耗」或 64、127 这几档
停转时间(Spindown time)硬盘空闲多久后停转,可选 5、10、20、30、60、120、180、240、300、330 分钟,或「禁用」
自动声音管理(Advanced Acoustic Management)在「最低性能、最低噪音」和「最高性能、最高噪音」之间选。许多较新的硬盘会忽略这项设置
启用写缓存(Enable write-cache)和功耗无关,保持默认

保存后点击应用。OMV 8 是通过 smartctl --set=... 把这些设置写给硬盘的,写成脚本放在 /etc/smartmontools/hdparm.d/,由 smartctl-hdparm 服务在开机时和系统从睡眠中唤醒之后重新执行。

停转时间不要设得过短。硬盘每次启停都有磨损,S.M.A.R.T. 属性里的启停次数(Start_Stop_Count)和磁头加载次数(Load_Cycle_Count)会记录下来。目标是让硬盘一天里停转的次数有限,而不是一空闲就停。

别让 S.M.A.R.T. 把休眠的硬盘叫醒 ​

存储器 → S.M.A.R.T. → 设置(Storage → S.M.A.R.T. → Settings)里有两个相关的字段:

  • 检查间隔时间(Check interval):每隔多少秒检查一次所有受监控的硬盘。
  • 电源模式(Power mode):界面的提示写得很清楚,选永不(Never)时,检查会不管硬盘是否在休眠,可能把已经停转的硬盘唤醒;选待机(Standby)时,硬盘处于睡眠或待机状态就跳过这次检查,如果你想避免每次检查都把硬盘叫醒,这就是该选的值。另外两个选项是睡眠(Sleep)和闲置(Idle),闲置状态下多数硬盘仍在旋转,一般不是你想要的。

确认这一项是待机,而不是永不。

看硬盘现在是否在休眠 ​

下面的命令不会把休眠的硬盘叫醒:

sh
smartctl -n standby -i /dev/<磁盘>

硬盘处于待机状态时,会输出 Device is in STANDBY mode;否则会打印硬盘的信息。也可以用 RPC 一次看全部磁盘的电源状态:

sh
omv-rpc DiskMgmt enumerateDevices | jq -r '.[] | [.canonicaldevicefile, .model, .powermode] | @tsv'

硬盘总是被叫醒 ​

常见来源有:S.M.A.R.T. 的电源模式、容器里的应用(日志、数据库、媒体库扫描)、客户端对共享的访问(例如 Windows 的搜索索引)、定时任务和备份。逐项排查见 硬盘不休眠,定时开关机的做法见 电源管理:硬盘休眠与定时开关机。

第二步:CPU 频率 ​

先看系统现状 ​

sh
cpupower frequency-info
cpupower idle-info

第一条显示当前使用的频率驱动、可用的调节策略(governor)和当前的频率范围;第二条显示 CPU 支持的空闲状态(C-state)。可选的策略取决于内核和驱动,界面里的下拉列表也来自内核。

在界面里设置 ​

入口是 系统 → 电源管理 → 设置(System → Power Management → Settings),字段是 CPU 频率调节(CPU frequency scaling),下拉里有一个「禁用」,表示 OMV 不接管,使用内核默认行为。新装系统初始化时,OMV 会从可用的调节器里按省电优先预选一个(常见是 powersave);从 8.0.x 升级上来的系统是「禁用」(按源码 confdb/populate.d/70cpupower.sh 与 8.1.0 的迁移脚本)。先看清你这台现在是什么,再决定改不改。界面对几个常见选项的说明是:

  • schedutil:根据调度器的负载调整频率,兼顾性能与省电,界面推荐大多数用户使用。
  • powersave:界面描述为始终以最低频率运行,最省电。
  • performance:始终以最高频率运行。

在 Intel 的 intel_pstate 驱动下,powersave 并不等于锁死最低频率,仍会随负载调整,具体行为见 内核文档。想知道你的机器实际是什么表现,用上面的 cpupower frequency-info 查看,并用功率计确认。

OMV 8 用 linux-cpupower 取代了旧的 cpufrequtils。需要进一步限制频率范围或设置性能偏好时,可以用环境变量 OMV_CPUPOWER_MINFREQ、OMV_CPUPOWER_MAXFREQ、OMV_CPUPOWER_PERFBIAS,用法见 环境变量:调整界面里没有的选项。

虚拟机里的 OMV 不控制物理 CPU 的频率,这一步对它无效,要在宿主机上调整。

第三步:平台与固件 ​

整机的待机功耗,很大程度上取决于 CPU 能不能进入深度的空闲状态,而这又取决于主板上所有设备是否都允许省电。

在 BIOS 里检查:PCIe 的 ASPM、CPU 的 C-state、不用的板载设备(声卡、串口、蓝牙、无线网卡)、SATA 控制器的省电选项。个别主板上的 ErP 或深度睡眠选项会让网络唤醒(WOL)失效,改之前先确认你是否用到唤醒。

在系统里查看(只读命令):

sh
cat /sys/module/pcie_aspm/parameters/policy
lspci -vv | grep -E "^[0-9a-f]|ASPM"
cat /sys/class/scsi_host/host*/link_power_management_policy

第一条显示内核的 ASPM 策略,第二条列出每个 PCIe 设备以及它的 ASPM 状态,第三条是各个 SATA 端口的链路电源管理策略。某一块不支持省电的网卡或 SATA 扩展卡,常常会让整机无法进入深度空闲状态。

powertop 可以显示各项省电参数的状态,用 apt-get install powertop 安装后在交互界面里查看。

不要让 powertop 自动调优后开机运行

powertop --auto-tune 会一次性把它认为「不好」的选项全部改成省电模式,其中包括 USB 设备的自动挂起,容易让 USB 硬盘或硬盘盒掉线。只在交互界面里逐项试,确认某一项有效、没有副作用之后,再决定怎么保留它。

第四步:风扇与静音 ​

  • 先降温度,再谈降噪。 积灰和风道不通会让风扇转得更快。清灰、理线、保证进出风,比任何软件设置都有效。
  • 用 BIOS 的风扇曲线。 这是最稳妥的方式,不依赖操作系统。
  • 需要按硬盘温度控制风扇时,用插件,见 温度监控与风扇控制。风扇控制设置错误可能导致过热,改之前先确认温度监控是可靠的。
  • 硬盘停转本身就是最安静的状态。 休眠做好了,噪音问题往往自己消失。
  • 减少机械噪音。 硬盘减震垫、机箱放在地板或软垫上而不是空心的桌子上。

检查结果 ​

用同样的方法再测一遍三种状态的功耗,对照基线。一个有效的配置应该满足:

  • 硬盘休眠状态下的功耗,明显低于空转状态。
  • 硬盘空闲一段时间后确实停转(用 smartctl -n standby -i 或上面的 omv-rpc 命令确认)。
  • 满载时的性能没有明显下降,常用服务的响应在你能接受的范围内。
  • 一周之后,S.M.A.R.T. 的启停次数没有异常增长。

常见问题 ​

设了停转时间,硬盘还是不休眠。 先看 S.M.A.R.T. 的电源模式是不是待机,再看有没有容器、共享访问或定时任务在访问它,详见 硬盘不休眠。

把 APM 调得很低以后,硬盘频繁启停,还有异响。 提高 APM 或者拉长停转时间,并观察 S.M.A.R.T. 的启停次数。

界面里选不到我想要的 CPU 策略。 可选的策略由内核驱动决定。先用 cpupower frequency-info 看当前驱动支持哪些。

休眠之后第一次访问共享要等很久。 这是硬盘停转后重新旋转所需的时间,是省电换来的代价。如果不能接受,缩短休眠的范围(只让不常用的数据盘休眠),或者放弃休眠。

参考资料 ​

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。