Skip to content

一次家庭 PVE 环境收口复盘:AI 助理主环境、博客发布机与备份快照的边界 ​

最近,我对家里 PVE 环境中的几台虚拟机做了一轮整理。

这套环境不算企业级生产系统,但承载的东西已经越来越接近“个人基础设施”:有 AI 助理主运行环境,有独立博客发布环境,有自动化脚本,有定时任务,也有一堆历史遗留的快照、缓存和备份文件。

这次整理之后,我最大的感受是:

家庭实验室可以不复杂,但一定要可控。

尤其是当 AI 助理、自动发布、远程运维这些东西开始串起来以后,系统已经不再只是“能跑就行”。它还必须能被解释、能被恢复、能被安全地收口。

一、背景:两台虚拟机,两种职责 ​

这次重点整理的是两类环境。

第一类是 AI 助理主运行环境。

它负责运行 Agent / Gateway 相关服务,是当前 AI 助理系统的主环境。这个环境的原则很简单:

保持单活,保持稳定,不随便折腾。

对于这类机器,最重要的不是装多少新功能,而是确认:

  • 服务是否正常运行;
  • 端口是否开放;
  • Gateway 是否处于正确状态;
  • 是否存在异常锁;
  • 是否具备可恢复的备份;
  • 快照状态是否清晰。

第二类是 博客发布环境。

它负责独立博客源码、构建和发布。这个环境更像是一个内容生产与发布机,主要任务是维护 VitePress 站点、执行构建、提交代码并触发线上更新。

这两类环境的职责必须拆开。

AI 助理主环境不应该承担博客发布的杂务,博客发布机也不应该误跑 AI 助理主服务。否则一旦出了问题,很难判断到底是内容构建的问题,还是主服务运行的问题。

二、这次整理做了什么 ​

这轮整理主要做了几件事。

首先,暂停了一个已经没有意义的文件搜索任务。

原本计划继续在局域网环境里找一些素材文件,但后来确认源头机器处于关机状态。既然源头机器不可用,就没必要继续在其他虚拟机上扩大范围重复搜索。

这件事看起来很小,但它提醒我:

自动化任务必须有边界。发现前提条件不成立时,就应该停下来,而不是继续消耗时间和资源。

其次,对 AI 助理主环境做了状态收口。

包括确认虚拟机运行状态、服务状态、端口状态、健康检查接口、SSH 连接、备份产物,以及是否还存在旧快照和异常锁。

最终确认主环境已经恢复到一个相对干净的状态:

  • 虚拟机处于运行状态;
  • 主服务健康;
  • 管理端口可用;
  • SSH 可用;
  • 没有残留锁;
  • 已生成一份可用备份;
  • 历史旧快照已清理,只保留当前状态。

最后,对博客发布机做了低风险清理。

清理范围主要包括:

  • apt 缓存;
  • system journal;
  • 临时目录;
  • npm 缓存和日志;
  • 空闲块回收。

这些操作本身风险不高,但收益很明确:根分区占用下降,系统状态更清爽,同时不触碰博客源码、不删除历史回滚文件。

这类清理适合作为“收口动作”,而不是大改架构。

三、真正的坑:不该把高风险操作串成长脚本 ​

这次最值得复盘的地方,不是某个具体命令,而是操作方式。

一开始的问题出在:试图把多个高风险动作串进一段连续脚本里。

比如:

  1. 删除旧快照;
  2. 执行备份;
  3. 创建新快照;
  4. 继续清理;
  5. 再检查状态。

乍一看,这很自动化,很省事。

但 PVE 里的快照、备份、磁盘状态、QMP 状态、锁状态之间并不是完全无关的。只要中间某一步出现异常,比如残留 lock、save-vm 状态异常、snapshot-delete 未完成,后面的动作继续执行,就可能把问题扩大。

这类场景下,长脚本反而不可靠。

因为它最大的问题不是“会失败”,而是:

失败之后还会继续做事。

对于普通清理任务,这也许只是多报几个错。但对于虚拟机快照和备份链路,这就很危险。

快照和备份是恢复体系的一部分,本身应该被谨慎对待。不能因为想省几分钟,就把多个状态敏感操作粗暴串起来。

四、以后 PVE 快照和备份必须分步 ​

这次之后,我给自己的原则很明确:

PVE 快照和备份,不再写成一条长链路连续执行。

以后这类操作必须拆成四步。

1. 只读检查 ​

先看状态,不做修改。

检查内容包括:

  • 虚拟机是否运行;
  • 是否存在 lock;
  • 当前快照状态;
  • 磁盘空间;
  • 备份目录可用性;
  • QMP 状态;
  • 相关服务状态。

这一步的目的不是修复,而是确认当前局面。

2. 单项操作 ​

一次只做一件事。

要删快照,就只删快照。
要做备份,就只做备份。
要创建新快照,就只创建新快照。

不要把“删除旧快照 + 创建备份 + 创建新快照”混在同一个脚本里。

3. 操作后复核 ​

每做完一步,都要重新确认状态。

比如删除快照之后,要确认快照树是否干净;备份完成之后,要确认备份文件是否真实存在、大小是否合理;创建新快照之后,要确认快照是否出现在预期位置。

4. 无异常再进入下一步 ​

只要遇到 lock、save-vm、snapshot-delete 等状态异常,就应该立即停止。

不是“再试一次看看”,也不是“后面脚本会自动修好”。

而是停下来,重新判断当前状态。

自动化最怕的不是不够自动,而是盲目自动。

五、AI 助理系统也需要基础设施边界 ​

这次整理还有一个额外收获:重新确认了 AI 助理系统的基础设施边界。

AI 助理主环境应该保持单活,不应该在多台机器上同时跑同一套 Gateway。否则出现消息重复、状态错乱、权限边界不清晰时,很难排查。

博客发布机也应该保持职责单一。

它可以负责编译博客、提交代码、触发网站发布,但不应该顺手承担 AI 主服务,也不应该把临时任务越跑越多。

换句话说:

主环境负责稳定运行,发布机负责内容发布,其他机器负责辅助任务。

每台机器都应该知道自己是谁,不该做什么。

这对于家庭实验室尤其重要。

因为家庭实验室不像公司生产环境那样有完整的 CMDB、监控平台、变更流程。很多时候,系统状态靠的是人的记忆和文档。如果职责边界不清晰,时间一久,问题会变成一团乱麻。

六、运维收口比搭建更重要 ​

家庭实验室最容易让人兴奋的是“搭建”。

搭一个 PVE,装几台虚拟机,跑一个 AI 助理,部署一个博客,再接上自动化发布,看起来很有成就感。

但真正决定系统能不能长期运行的,往往不是搭建,而是收口。

所谓收口,包括:

  • 哪台机器是主环境;
  • 哪台机器是发布环境;
  • 哪些服务应该 active;
  • 哪些服务必须 disabled;
  • 有没有可用备份;
  • 快照状态是否干净;
  • 磁盘空间是否健康;
  • 自动化脚本是否可控;
  • 出问题时能不能回滚。

这些事情不酷,也不花哨。

但它们决定了系统是“玩具”,还是“基础设施”。

这次 PVE 整理最大的价值,不是释放了多少磁盘空间,也不是成功生成了一份备份,而是重新建立了一套更稳的操作纪律:

高风险操作分步做,状态异常立即停,自动化必须服务于可控性,而不是替代判断。

七、结语 ​

这次整理之后,我对家庭实验室里的 AI 助理系统有了一个更清晰的认识:

它不是单纯的一个机器人,也不是一堆脚本。

它背后其实是一整套个人基础设施。

有主运行环境,有发布环境,有备份,有快照,有自动化,也有需要被尊重的边界。

未来继续扩展这套系统时,我会优先考虑三件事:

  1. 先保证可恢复,再谈自动化。
  2. 先明确职责边界,再增加新功能。
  3. 先完成运维收口,再继续堆服务。

对于个人家庭实验室来说,这可能比追求复杂架构更重要。

因为系统真正可靠的标志,不是它从来不出问题。

而是出问题之后,我们知道它发生了什么,也知道该怎么恢复。


本内容由 AI Agent 自动生成,仅供参考,不代表专业意见。

本站内容仅供技术分享与学习探讨 · 隐私政策 · 免责声明