跳转到主要内容

日常管理

唯一 deployment 的正常生命周期:检查、访问、扩容、变更、停止与销毁。

本教程描述 Barn 0.9.0 发布候选。发布与验收边界见当前状态。

检查与访问

barn status
barn ssh meta
barn exec node-1 -- hostname
barn logs meta --source serial

应用状态默认位于 ~/.barn(可由 BARN_HOME 覆盖),这些命令可在任意目录执行。 切换工作目录不会创建另一套 deployment。 Status 默认显示镜像和资源;--verbose 显示架构、加速器、SSH 端口和 PID, TCG 在普通输出中也明确标记。异常节点不会隐藏其他节点的状态。 barn up 会在选中 VM 启动后,根据完整 applied deployment 重建默认 SSH 别名;因此 局部 up 不会删除未选中节点,可直接运行 ssh meta;如需手工重写,使用 barn ssh-config --install。 plan、up、reload、recreate 依次优先使用 -f、当前目录发现的 Inventory, 两者都没有时才回退到已应用规格;validate 始终需要文件。

再次执行 up 会重试未完成的客机初始化、原位更新旧脚本,健康 VM 无需重启。结果会列出 可选功能限制,JSON/YAML 提供 nodes[].warnings 与 nodes[].repairs。不可用的测试 数据文件系统可能被清空重建,包括持久盘,详见数据盘说明。

停止与启动

barn stop
barn start
barn restart node-1
barn reload -f barn.yml       # 读取并检查配置、停止、收敛

start 启动已停止的 VM 并复查运行中 VM 的就绪状态;start 与 restart 都使用已应用 状态,并刷新 SSH 别名,包括重新分配的自动端口。reload 先读取 Inventory、检查配置变化与启动依赖,再停止选中节点 并执行完整的 up 路径。

up、start、restart、reload、recreate 还会刷新运行中 guest 的 Barn hosts 和控制节点 SSH 条目。--no-wait 跳过就绪检查、客机恢复与 guest 刷新,后续运行 up 补齐。

变更 deployment

barn plan
barn up                         # 创建/启动选中节点,并安装 SSH 别名
barn recreate node-1            # 应用某个节点的 VM 定义变化

plan 规划 Catalog 镜像时无需先准备宿主,展示镜像、资源总量、变更原因与磁盘影响; 规划导入的 local-* 镜像还会校验缓存,需要 qemu-img。CPU/内存等定义 变化仍通过 recreate 应用,会替换根盘与非持久数据盘,持久盘保留。若多个节点同时 变化,局部重建受未选节点影响时会提前拒绝,并列出所需节点。

recreate 与 destroy 在终端上展示磁盘范围并要求输入确认词;--force 跳过提示, 无终端时必须显式传入。

字段 含义 操作
create 配置有、状态无 barn up
recreate VM 定义改变 barn recreate <node>
missing 状态有、配置无 恢复配置,或显式 destroy

删除 YAML 永远不会删除 VM。未消费的 Pigsty 变更得到 action:none;命名与 node-admin 字段虽然不以 vm_ 开头,仍会被消费。成功的 recreate 也会刷新完整 SSH fragment。

并发命令(0.9 候选版)

修改 deployment 的命令会等待其他 Barn 操作释放锁,最长十分钟,同时受命令自身 超时限制。等待信息会显示持锁命令、PID 与开始时间。等待超时返回退出码 4,JSON 为 error: conflict、reason: deployment_busy;持锁操作完成后再重试。 持锁进程退出时锁自动释放;不要通过删除锁文件打断仍在运行的操作。

status、ssh、exec、ssh-config,以及 hosts 读取部署状态的步骤不会排队等待 这把锁,而是读取已写入的状态。其他命令持锁时,status 会附带 note,并且不会 收敛该命令正在进行的状态转换。因此尚在启动中的 VM 可能暂时无法 SSH。

中断恢复见故障排查,脚本处理结果见 自动化。

销毁

barn destroy node-3
barn destroy
barn destroy --delete-persistent
barn destroy --purge
barn purge                         # 无需确认,处置整套实验室

--delete-persistent 与 --purge 只适用于整体销毁,不能和节点选择器一起使用。 --purge 删除持久盘、密钥和 deployment 状态,但保留镜像。节点级 destroy 会刷新 剩余节点的 SSH fragment,整体 destroy 会移除默认 Barn SSH 集成。宿主网络单独卸载, 仍有 VM 挂接时会拒绝。

barn purge 是一次性实验室的简洁路径,等价于 对已有部署执行 destroy --force --purge。它不接受节点选择器,没有 Deployment 时 幂等成功,保留镜像缓存与 宿主网络,同时不会绕过进程身份、属主和路径完整性检查。

**0.9 候选版:**没有 deployment 时,普通 destroy 直接成功。状态已删除但还有 归属明确的持久盘时,使用 purge;destroy --delete-persistent 或 destroy --purge 会提示改用该命令。旧的 rm 别名已移除,必须写出 purge。

barn network uninstall --yes

镜像选择、镜像站与缓存清理见镜像仓库;彻底移除宿主状态见 卸载与清理环境。