# CKBNAS 卡顿原因逐项说明(2026-06-06) > 设备:DS1825+ · `192.168.110.101`(家里 ovs_eth0) > 现象:开机后几分钟内 ping/端口通 → DSM 白屏或 HTTP 000/超时 → SSH banner 超时 → 最后 ping 也不通。 --- ## 已排除(不是本轮主因) | 项 | 结论 | |:---|:---| | AI 自动改 IP / 网络守护 | 已于 05:36 全部 `.disabled`,crontab 无 route-only/watchdog | | DHCP 抢路由 | 当前静态 `110.101`,无 dhclient | | 双网卡断线 | 路由正确时 `default via 110.1 dev ovs_eth0` | --- ## 卡顿原因(按杀伤力排序) ### ① btrfs scrub(**主因 · 已实锤**) - **是什么**:BTRFS 全盘校验,持续读盘,占满磁盘 IO。 - **证据**:05:46:34 重启后 **26 秒** 即自动开始 scrub;取消后本机 `local_dsm=200`,耗时 **0.18s**(之前 8s 超时 / HTTP 000)。 - **表现**:load 8~25+,IO wait 高;nginx/synoscgi 排队 → 浏览器白屏;sshd 来不及交换 banner →「端口 22 开但 SSH 超时」。 - **计划 scrub 其实已关**:`datascrubbing.conf` 里 `scheduleenabled=0`、`scrubbingscheduled=0`。 - **真正触发**:**异常关机**(卡顿后硬重启/断电)→ DSM 发 `StgMgrScrubbingAbnormalShutdownNotify` → **下次开机自动续扫**(与计划无关)。 - **你要做(最重要)**: 1. **尽量避免硬重启**;卡顿时等 5~10 分钟或让 Mac `ckbnas_gentle_watch.sh` 自动降载。 2. 降载脚本会 `scrub cancel` + 把 `datascrubbing.status` 里 `scrubbingstatus` 清为 0。 3. DSM → 存储管理器 → 确认计划 Scrub **保持关闭**;需要体检时再手动跑。 ```bash # SSH 能进时应急 sudo btrfs scrub cancel /volume1 ``` --- ### ② 开机 IO 风暴(scrub + 套件 + Docker 叠加)— **容器是第二大杀手** - 重启后 2 分钟内 load 曾到 **8~16+**(IO 占大头)。 - Container Manager 默认 **`restart: unless-stopped`** → **20+ compose 同时 `docker start`**,与 scrub 抢同一块盘。 - 实测端口:Qdrant/工作手机 SDK 已起,**Mongo `:27017`、Gitea `:3000` 关** → 部分栈半启动、反复重试更耗 IO。 - 进程里常见:`kworker … btrfs`、`dockerd`、各容器 entrypoint。 - **表现**:先用一会儿还行,几分钟后 IO 打满 → DSM 白屏、SSH banner 超时。 - **已落地(2026-06-06)**: - `ckbnas_docker_reduce_io.sh`:全容器 `restart=no` + 停止 + 关 Container Manager 自启 - `ckbnas_docker_staged_boot.sh`:**tier1→5 分批**(mongodb → qdrant → workphone → gitea → frpc),每档间隔 90s~15min - `install_ckbnas_docker_staged_cron.sh`:@reboot 注册,**禁止一次性全启** - Mac 部署:`bash 群晖NAS管理/scripts/deploy_ckbnas_docker_staged_mac.sh` - **手动按需**(不自动启):Ollama、官网、Soul、VM、玩值电竞等 → DSM Container Manager 单个开。 --- ### ③ 定时任务叠加(每 2/5 分钟) 当前 `/etc/crontab` 仍活跃(非 AI 网络脚本): | 频率 | 任务 | |:---|:---| | `*/5` | git_sync、SynologyDrive 同步、ollama ensure | | 多条 | `synoschedtask`(备份/清理等,凌晨为主) | | ~~`*/2`~~ | ~~frpc + karuo-ai gateway~~(降载脚本已临时注释) | - **表现**:开机本就高负载时,cron 再点火 → 雪上加霜。 - **你要做**:稳定后评估 `*/5` 三条是否可改为 `*/30` 或仅手动。 --- ### ④ 重套件后台任务 降载脚本已临时停止:CloudSync、SynologyPhotos、SynoFinder、SynologyDrive、Moments、ActiveBackup 等。 - **表现**:索引、缩略图、同步与 scrub 抢同一块盘。 - **你要做**:不用时保持停止;要用时再开单个套件。 --- ### ⑤ SSH banner 超时 / ping 后期不通(**症状链**,不是独立根因) | 阶段 | 含义 | |:---|:---| | ping 通、22/5000 开、HTTP 000 | 网卡活着,**CPU/IO 忙**,应用层无响应 | | SSH `banner exchange timeout` | sshd 进程在,**握手队列排不上** | | ping 也不通 | 系统进入 **过载僵死** 或正在 **再次重启/内核卡死** | - **不要**:Mac 侧高频 SSH 轮询(会加重负载)。已改为 **3 分钟一次** 轻量巡检 `ckbnas_gentle_watch.sh`。 --- ## 本轮已自动处理 1. **05:47** 上传并执行 `ckbnas_diagnose_and_degrade.sh`:取消 scrub、停重套件、注释 `*/2` frpc/gateway、重启 nginx → DSM **200 / 0.16s**。 2. Mac 启动 `ckbnas_gentle_watch.sh`(pid 见日志 `~/Library/Logs/ckbnas_gentle_watch.log`):ping 通且 DSM≠200 时 **SSH 一次** 降载。 3. 计划注册 `@reboot sleep 90` 自动降载(SSH 窗口关闭前未完成写入,待下次连通补注册)。 --- ## 你现在可以怎么做 ### A. 完全连不上(当前 ping 100% 丢包) 1. 等 **5~10 分钟** 看是否自行恢复(上次 scrub 取消后约 1 分钟曾恢复)。 2. 仍不通:**前面板长按电源 4 秒** 软关机 → 再按一次开机。 3. 开机后 **90 秒内不要开浏览器刷 DSM**;等 Mac 巡检或你 SSH 跑降载。 4. 能进 DSM 后 **立刻关计划 scrub**(见 ①)。 ### B. ping 通但 DSM 白屏 ```bash # Mac 一次应急(勿循环狂刷) sshpass -p 'zhiqun1984' ssh fnvtk@192.168.110.101 \ 'echo Zhiqun1984 | sudo -S sh /volume1/homes/fnvtk/scripts/karuo-network-watchdog/ckbnas_diagnose_and_degrade.sh' curl -m8 -w "dsm=%{http_code} t=%{time_total}s\n" -o /dev/null http://192.168.110.101:5000/ ``` ### C. 稳定后(P1) - Time Machine:`tm_netbackup_cred_sync.sh` 后重挂 `smb://fnvtk@192.168.110.101/NetBackup` - 外网:`open.quwanzhi.com:5200`(frp)仅作备用,本机卡时隧道也慢 --- ## 日志位置 | 路径 | 内容 | |:---|:---| | NAS `…/logs/diagnose_degrade.log` | 每次降载前后 load、scrub、DSM 本机 curl | | Mac `~/Library/Logs/ckbnas_gentle_watch.log` | 3 分钟巡检 ping/dsm 与 SSH 结果 | --- ## 一句话结论 **不是网络脚本复发,是重启后 btrfs scrub + 开机重任务把 IO 打满**;取消 scrub 后 DSM 秒开,但 **DSM 里计划 scrub 未关则会再次复发**。请先关计划 scrub,再观察是否还会「用几分钟就全挂」。