truenas 检测硬盘唤醒次数
修正和完成配置的步骤
以下是完整的步骤,确保你的自定义监控正常工作:
- 确认 /root/check_hdd_wakeup.sh 内容
确保脚本内容正确。如果还未填写,请编辑它:
bash
收起
自动换行
复制
nano /root/check_hdd_wakeup.sh
输入以下内容:
bash
收起
自动换行
复制
!/bin/bash
for disk in /dev/sd[a-z]; do
if [ -b "$disk" ]; then
state=$(hdparm -C $disk | grep "drive state" | awk '{print $4}')
if [ "$state" == "active/idle" ]; then
echo "disk_wakeup.$disk 1" # 表示硬盘被唤醒
else
echo "disk_wakeup.$disk 0" # 表示硬盘睡眠
fi
fi
done
保存并退出(Ctrl+O, Enter, Ctrl+X),然后确认可执行权限:
bash
收起
自动换行
复制
chmod +x /root/check_hdd_wakeup.sh
- 检查并创建 charts.d.conf
TrueNAS Scale 的 Netdata 可能没有默认的 /etc/netdata/charts.d.conf 文件。如果文件不存在,需要手动创建:
bash
收起
自动换行
复制
nano /etc/netdata/charts.d.conf
添加以下内容:
text
收起
自动换行
复制
custom=check_hdd_wakeup
保存并退出。这告诉 Netdata 启用一个名为 check_hdd_wakeup 的自定义插件。
如果文件已存在,只需确保添加了 custom=check_hdd_wakeup 一行。
- 创建 check_hdd_wakeup.conf
你需要在这个文件中定义插件的行为:
bash
收起
自动换行
复制
nano /etc/netdata/charts.d/check_hdd_wakeup.conf
输入以下内容:
text
收起
自动换行
复制
check_hdd_wakeup_update_every=60
check_hdd_wakeup_command=/root/check_hdd_wakeup.sh
check_hdd_wakeup_update_every=60: 设置更新频率为每 60 秒。
check_hdd_wakeup_command=/root/check_hdd_wakeup.sh: 指定运行的脚本。 保存并退出。
- 修正 exclude_netdata.conf(可选)
你当前的 exclude_netdata.conf 禁用了部分 Netdata 统计数据(enabled = no)。如果你希望保留所有默认监控,只需将 enabled = no 改为 enabled = yes,或者删除该文件(除非你明确需要排除某些图表)。例如:
bash
收起
自动换行
复制
nano /etc/netdata/charts.d/exclude_netdata.conf
改为:
text
收起
自动换行
复制
[netdata]
enabled = yes
exclude chart = worker.*
保存并退出。
- 重启 Netdata 服务
应用所有更改后,重启 Netdata:
bash
收起
自动换行
复制
systemctl restart netdata
检查服务状态,确保其正常运行:
bash
收起
自动换行
复制
systemctl status netdata
- 检查 Netdata UI
返回 TrueNAS Web 界面,进入 Reporting > Netdata。
在左侧菜单中,查找 Custom 或 Disks 部分。
你应该能看到类似 disk_wakeup./dev/sda 的图表,显示每个硬盘的唤醒状态(1 表示唤醒,0 表示睡眠)。
可能的错误及解决方法
脚本报错
如果运行脚本时提示 hdparm 不可用,安装它:
bash
收起
自动换行
复制
apt install hdparm
如果没有 /dev/sd[a-z] 设备,检查你的硬盘设备名(例如 nvme0n1),并修改脚本中的 for 循环。
图表未显示
确认 /etc/netdata/charts.d/check_hdd_wakeup.conf 和 charts.d.conf 已正确配置。
检查 Netdata 日志:
bash
收起
自动换行
复制
journalctl -u netdata
查找与 check_hdd_wakeup 相关的错误。
TrueNAS 更新覆盖配置
TrueNAS Scale 更新可能会重置 /etc/netdata 的内容。建议将脚本和配置文件备份到持久化数据集(例如 /mnt/pool_name/config),并在 System Settings > Advanced > Init/Shutdown Scripts 中添加启动脚本恢复配置。
测试脚本
在配置完成前,可以手动运行脚本测试:
bash
收起
自动换行
复制
/root/check_hdd_wakeup.sh
预期输出类似:
text
收起
自动换行
复制
disk_wakeup./dev/sda 1
disk_wakeup./dev/sdb 0