专门针对 PVE 的 /dev/sda 和 /dev/sdc设置休眠,sdb 飞牛盘开启电源管理 但不休眠,减少磁头停靠。
truenas 每天唤醒6次,使用排查发现是自动证书检测,关闭它,systemctl disable certmonger --now,验证:systemctl status smartd。

总体思路:

sdc能正常休眠,sda经常醒来,不知道为什么,他们组成了阵列,如果sdc在休眠那么sda也应该休眠,所以用以下思路。
先设置sdb apm开启,不休眠,同时用hdparm -S 设定sdc5分钟没活动就休眠。
然后再写一个sh,每 5 分钟运行一次;先检查 sdc 是否休眠,如果 sdc 没休眠 → 什么都不做
如果 sdc 已休眠 → 再检查 sda
如果 sda 已休眠 → 什么都不做
如果 sda 未休眠 → 执行强制休眠 hdparm -Y /dev/sda
不写日志
开机自动运行

先设置sdb apm开启,不休眠,同时用hdparm -S 设定sdc5分钟没活动就休眠

1️⃣ 创建服务文件
nano /etc/systemd/system/hdparm-homedate.service

写入以下内容( 5 分钟空(300秒/5=60)闲后自动 standby,模式为254,防止磁头停靠减少磁盘寿命,永久生效):

[Unit]
Description=Set sda and sdc to standby (sleep) on boot
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/hdparm -B 254 -S 0 /dev/sdb #磁盘活动时 磁头不要停靠 永远不进入睡眠
ExecStart=/usr/sbin/hdparm -S 60 /dev/sdc
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

✅ 关键点:

[Unit]、[Service]、[Install] 必须独占一行,不要写成一行

ExecStart 是执行命令

RemainAfterExit=yes 表示系统启动后保持设置状态

2️⃣ 重新加载 systemd
systemctl daemon-reload
3️⃣ 启用开机自启
systemctl enable hdparm-homedate.service
4️⃣ 立即生效
systemctl start hdparm-homedate.service
5️⃣ 验证
systemctl status hdparm-homedate.service
hdparm -C /dev/sda
hdparm -C /dev/sdb
hdparm -C /dev/sdc

hdparm -C 查看硬盘状态

active/idle 或 standby 表示已经设置成功

sh脚本

一、创建脚本

创建脚本文件:

nano /usr/local/bin/force_sleep_sda.sh

写入内容:

!/bin/bash

检查 sdc 是否休眠

state_sdc=$(hdparm -C /dev/sdc | grep -i state)

if echo "$state_sdc" | grep -q standby; then

# sdc 已休眠,检查 sda
state_sda=$(hdparm -C /dev/sda | grep -i state)

if echo "$state_sda" | grep -q active; then

    # sda 未休眠,强制休眠
    hdparm -Y /dev/sda

fi

fi

保存:

Ctrl+O
Enter
Ctrl+X
二、赋予执行权限
chmod +x /usr/local/bin/force_sleep_sda.sh

二、创建 systemd service

创建:

nano /etc/systemd/system/force-sleep-sda.service

内容:

[Unit]
Description=Force sleep sda if sdc already sleeping

[Service]
Type=oneshot
ExecStart=/usr/local/bin/force_sleep_sda.sh

保存退出。

三、创建 timer

创建:

nano /etc/systemd/system/force-sleep-sda.timer

内容:

[Unit]
Description=Run force sleep sda every 5 minutes

[Timer]

开机 2 分钟后首次运行

OnBootSec=2min

每 5 分钟运行一次

OnUnitActiveSec=5min

Unit=force-sleep-sda.service

[Install]
WantedBy=timers.target

保存退出。

四、加载 systemd 配置
systemctl daemon-reexec
systemctl daemon-reload
五、启用并启动 timer
systemctl enable force-sleep-sda.timer
systemctl start force-sleep-sda.timer
六、验证 timer 是否运行

查看:

systemctl list-timers | grep force-sleep

应看到类似:

force-sleep-sda.timer loaded active waiting 3min left
七、验证开机自动运行

检查:

systemctl is-enabled force-sleep-sda.timer

应返回:

enabled

说明:

已设置开机自动运行

每 5 分钟执行一次

不使用 cron

不写任何日志文件

主板优化
1、关闭cpu turboost
2、cpu 模式 max battry
3、offset 电压-100mv
4、开启pcie ASMP 高级电源管理选L1 最高睡眠
5、sata asmp电源管理
6、关闭不用的网卡口,关闭板载音频,wifi关闭没找到。
7、cpu超频设置3000mhz
8、CPU C10 C6最高都开启
9、PVE 设置 动态调整模式,默认最低频。

标签: none

添加新评论