通知 欢迎关注我的店铺天天软件圆

OpenWrt系统盘占满DHCP崩溃、配置文件丢失?AdGuard Home日志文件占满磁盘

2025-03-17
0评论
/
阅读
爱搜啊

最近家里的网络经历了一场"灵异事件"。原本稳定运行一个多月的路由器(ImmortalWrt系统)突然闹脾气:先是管理界面里的DHCP/DNS设置页面无法打开,屏幕上赫然显示着一段程序员最怕的报错提示:Cannot read properties of null (reading 'remove')更可怕的是,只要一重启路由器,整个网络就会彻底瘫痪——DHCP服务罢工、无法上网,连路由器IP都ping不通!

最让人崩溃的是:每次通过PVE虚拟机回滚备份后,总发现`/etc/config`目录下的关键配置文件(比如`firewall`和`dhcp`)变成了0字节的空文件,活像被神秘力量清空了数据。

破案过程:与BUG的斗智斗勇

第一阶段:怀疑Luci界面有Bug

起初,我注意到故障出现前曾批量设置了30多个设备的静态IP。在GitHub上搜索报错信息,发现OpenWrt官方仓库有个[未解决的同类Issue](https://github.com/openwrt/luci/issues/7326),描述的场景和我几乎一模一样!  

当时的推测:可能是Luci网页界面在保存大量静态IP时出现异常,导致配置文件损坏。

但诡异的是,回滚系统后重新设置同样数量的静态IP,却无法稳定复现问题。这让我意识到——凶手可能另有其人。

第二阶段:发现隐藏的"磁盘杀手"

某次故障时,我随手输入了`df -h`查看磁盘空间,突然发现真相就在眼前:

AdGuard Home日志文件占满磁盘

根目录(/dev/root)竟然被占满了! 290MB的小分区完全爆满,导致系统根本无法写入新配置。

顺着`du -sh /*`命令层层排查,最终锁定了罪魁祸首——  

`/usr/bin/AdGuardHome/data/querylog.json` 这个日志文件,体积已经膨胀到200MB+!

AdGuard Home的陷阱

检查AdGuard配置时,发现了这个致命设定:

querylog:
  dir_path: ""        # 未指定路径,默认写入系统目录
  interval: 2160h     # 保留90天日志(约3个月)
  size_memory: 1000   # 内存缓存1000条记录(实际可能按MB计算)

问题就出在这三个配置的叠加效应:

1. 日志默认写入系统分区(仅290MB)

2. 长期保留日志 + 大内存缓存 → 日志文件疯狂增长

3. 磁盘写满后,系统配置文件无法保存 → 出现0字节文件

这和网友的血泪经历https://forum.cloudron.io/topic/9047/adguard-querylog-json-at-2-gb如出一辙:有人甚至被吃掉2GB空间!

四、终极解决方案

现在我的AdGuard配置已经改成这样:

querylog:
  dir_path: "/mnt/sda1/AdGuardLogs"  # 指定大容量存储分区
  interval: 720h      # 保留30天
  size_memory: 100    # 内存缓存降至100条
  enabled: true       # 保持基础查询日志
  file_enabled: true

调整后效果:

- 日志文件转移出系统盘

- 保留周期从90天→30天

- 内存占用减少90%

- 系统分区使用率长期维持在50%以下

给折腾人们的建议

1. 监控磁盘空间:给路由器装个`cockpit`或定期运行`df -h`

2. 服务日志外迁:把Docker、AdGuard等日志指向`/mnt`等大分区

3. 慎用长期日志:安全类日志建议搭配日志服务器,别让路由器扛所有

4. 备份!备份!备份!:重要配置定期导出,PVE/LXC快照永远是最强后盾

后记  

这次排查教会我一个道理:再小的系统服务,也可能成为"压死骆驼的最后一根稻草"。现在我的路由器终于恢复了往日的稳定,希望这篇踩坑记录能帮你少走弯路!


点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)

饿了么红包
饿了么红包


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件

于2025-03-17发布