Linux 系统的 NAS 之路——降低待机功耗
tags: Linux, NASLinux 系统的 NAS 之路(可选)——降低待机功耗
这部分内容提供了以 Q1J4 主板为例的待机功耗降低策略,由于主板种类数量众多,经验无法适用于所有人,但设置思路可供参考。
系统内 CPU 节能
安装 cpupower:
sudo dnf install cpupower
执行 cpupower frequency-info 命令查看当前 CPU 某个核心的运行情况:
❯ cpupower frequency-info
分析 CPU 0:
driver: intel_pstate
以相同硬件频率运行的 CPU:0
需要通过软件协调频率的 CPU:0
energy performance preference: balance-performance
硬件限制:400 MHz - 4.80 GHz
可用的cpufreq调节器:performance powersave
当前政策:频率应在400 MHz和4.80 GHz.
调速器“powersave”可以决定使用哪种速度
在这个范围内。
current CPU frequency: Unable to call hardware
current CPU frequency: 1.80 GHz (asserted by call to kernel)
boost state support:
支持:是
活跃:是
从频率范围可以看出,这应该是个大核,需要注意几个信息:
- driver:interl_pstate 意思是 CPU 自行调节功耗,cpupower 下发的指令只会作为参考,这有可能导致使用 cpupower 调节 epp 可能不起作用。
- energy performance preference: balance-performance,就是 epp,默认都是平衡模式。
- 可用的 cpufreq 调节器:performance powersave。
- current CPU frequency: 1.80 GHz (asserted by call to kernel)。可见无负载状态下,CPU 仍然以较高频率运行。
通过 cpupower 可以配置两个选项:
# 将系统的能源性能偏好设置为偏向节能的 power 模式。
sudo cpupower set -e power
# 将 CPU 频率锁定在最低值以最大程度省电
sudo cpupower frequency-set -g powersave
由于我这台机器的 driver 为 intel_pstate,导致这两条命令不起作用。但在我其他主板上,由于 driver 不同,这条命令会生效,大概能够降低 10W 待机功耗。
不支持也没关系,可以在 BIOS 中调节硬件选项降低功耗。
硬盘休眠
硬盘永远是 NAS 功耗的真正大头,不想总是开关机的话,硬盘休眠也是个不错的选项,但我建议仅休眠那些确实不常访问的硬盘。
安装 hdparm 软件:
sudo dnf install hdparm
查看当前硬盘状态:
❯ sudo hdparm -C /dev/sd{a,b}
/dev/sda:
drive state is: standby
/dev/sdb:
drive state is: active/idle
standby 表示已休眠,active 表示正在运行。
通过 sudo hdparm -y /dev/sda 命令可以直接休眠某块硬盘。
通过 sudo hdparm -S 120 /dev/sda 设定休眠时间,120 x 5 秒内无读写,就会自动休眠。
但这个设定是一次性的,重启就会丢失,因此需要添加一个系统服务来开机自动设定休眠:
sudo vim /etc/systemd/system/hdparm-all.service
[Unit]
Description=Set HDD standby timeout for all drives
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c '/usr/sbin/hdparm -S 240 /dev/sda && /usr/sbin/hdparm -S 240 /dev/sdb'
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
每次开机之时,硬盘休眠策略会自动设定好。
❯ sudo hdparm -C /dev/sd{a,b,c,d}
/dev/sda:
drive state is: standby
/dev/sdb:
drive state is: standby
/dev/sdc:
drive state is: standby
/dev/sdd:
drive state is: standby
我这里休眠了四块硬盘,功耗降低约 20W。
再次强调,经常访问的硬盘不建议做休眠,经常访问的服务已经被我搬到了固态盘,所以我才把机械盘做休眠的。
关机
不是开玩笑,如果你的 NAS 服务用得不是很频繁,关机就是最安全、最省电、最静音的方式。
不过我们需要留一个远程开机的后手,避免需要使用的时候访问不到。
- 网络唤醒
这是最简单的方案,配置一个开机自启动的服务脚本 /etc/systemd/system/wol-enp4s0.service:
[Unit]
Description=Enable Wake-on-LAN on enp4s0
[Service]
Type=oneshot
ExecStart=/usr/bin/ethtool -s enp4s0 wol g
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
添加自启动即可 sudo systemctl enable wol-enp4s0 --now
但这个方案一旦遇上主板断电,就无法唤醒了,终究是不完全可靠。
- 智能插座 + 来电自启
这个方案很稳,缺点是需要额外购买一个智能插座,接入米家后可以很方便地遥控开机。
缺点是来电就一定会开机,有时候不想它开就很麻烦,但这实在是小问题,并且智能插座还是帮你监控功耗,计算电费,我认为应该人手一个。
- 米家开机卡
与智能插座不同,米家开机卡是直接接到开机跳线上的,基本等同于你人为按了一下开机键,可以避免来电自启可能遇到的奇奇怪怪的问题,还可以接入米家语音操控。
缺点也很明显,真的就只有开机功能,还会占用一个 pcie 插槽,但价格比智能插座便宜,一般是 PC 用这个,NAS 还是智能插座靠谱。
BIOS 功耗调节(Q1J2-4 系列)




最后一项设置为 Max Battery,待机后会自动降频到 500MHz。