外观
低功耗与静音
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 看当前驱动支持哪些。
休眠之后第一次访问共享要等很久。 这是硬盘停转后重新旋转所需的时间,是省电换来的代价。如果不能接受,缩短休眠的范围(只让不常用的数据盘休眠),或者放弃休眠。
参考资料
- OMV 源码:硬盘电源设置的部署(
20hdparm.sls)、cpupower 的部署 - Linux 内核文档:intel_pstate CPU 性能调节驱动