Sources: ~/.openclaw/skills, ~/.agents/skills, workshop-skills, workspace/skills
3.4 KiB
3.4 KiB
name, description
| name | description |
|---|---|
| reclaim-cluster-disk | 集群磁盘占用高/要腾空间时,按安全顺序回收:journal、apt、docker、tmp、用户缓存(三台机通用)。 |
集群磁盘回收
触发:用户说「磁盘占用高」「清一下磁盘」「腾空间」「巡检一下,关注磁盘占用」。
三台机:襄阳2c4g(本机直接跑)、十堰电信4c8g(ssh 十堰电信4c8g <cmd>)、阿里云(ssh aliyun <cmd>)。
1. 先量
df -h / # 每台,先记基线
du -x -h --max-depth=1 / | sort -rh | head -15 # 一级大目录;很慢(>40s),用后台 process 轮询
du -x -h --max-depth=1 /var/lib /root | sort -rh | head -20
典型结论:/var/lib(containerd + k3s)是最大头但属运行必需;真正被忽略的是 journal、包缓存、/tmp、用户缓存。
2. 按风险从低到高回收
- 归档日志:
journalctl --vacuum-size=200M(实测两台各回收 2.1G / 2.6G,只删已归档的) - 包缓存:
apt-get clean(实测 ~135M / 196M) - 宿主机 docker(只对跑 docker 的机器;阿里云是 podman 模拟,看
podman system df):docker system df看 RECLAIMABLE →docker image prune -a -f→docker builder prune -a -f(实测 776M + 1.3G;使用中的镜像会被自动跳过) - /tmp 里的过期包:确认无用再删(实测
searxng-image.tar、etcd.tar.gz、etcdctl) - 用户缓存:
rm -rf ~/.cache/uv ~/.cache/ms-playwright ~/.npm(实测 ~1.6G;会重新下载,可接受) - 不用的自装服务(可选):
systemctl --user disable --now <unit>→pkill -9 -f <name>→ 删/usr/local/lib/<name>、/usr/local/bin/<name>*、~/.<name>、~/.config/systemd/user/<unit>.service(实测 hermes-agent 按此顺序清干净) - 核验:
df -h /前后对比,逐台回报数字(实测 十堰 80%→59%、襄阳 61%→47%;阿里云本来就干净,没动)
破坏性步骤(prune、rm -rf)先列清单、拿到用户确认再执行。
3. 不要动
- K3s 镜像不在 docker 里:
docker image prune动不到 K3s 的 containerd。查 K3s 镜像必须带命名空间:ctr -a /run/k3s/containerd/containerd.sock -n k8s.io images list(漏-n k8s.io得到空表,实测)。这些镜像都被运行中的 Pod 引用,没有「闲置镜像」可清。 - PVC 数据是活数据:
/var/lib/rancher/k3s/storage/*(booklib / gitea / koishi)不能删。 - 别 purge 旧内核:
apt-get purge linux-image-X-generic会连带删linux-image-virtual/linux-virtual元包、还要装linux-image-unsigned-X(实测 dry-run)——每台只留 2 个内核已是精简状态,保持不动。 - 用户手动停的容器别删(例如十堰的
serene_northcutt)。
4. 镜像能共享吗(常问)
不能。K3s/containerd 没有共享镜像存储:Pod 调度到哪台,哪台本地 containerd 就必须有一份;imagePullPolicy: IfNotPresent + nodeSelector 固定调度,能让每个镜像只落在需要的节点。各节点镜像清单用上面的 ctr -n k8s.io 命令查(这些机器上没装 crictl)。发现非调度节点上的冗余业务镜像(例:阿里云只跑 headlamp 却存着 searxng/blog 镜像)先别自动清——节点本地没镜像时 Pod 起不来,清理前要确认没有调度可能。