尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Proxmox 服务迁移实践笔记

Proxmox 服务迁移实践笔记 从统一基线到有状态服务Proxmox 服务迁移实践迁移 Jenkins、对象存储和镜像仓库时难点通常不在于“启动新虚拟机”而在于同时保障数据一致性、网络身份连续性和可回退性。本文总结一套可复用的迁移方法适用于 Proxmox 上由系统盘与大容量数据盘组成的有状态服务。本文的 IP、MAC、用户名、卷名、密码、UUID 和实际路径均应替换为脱敏示例。不要将凭据、访问密钥、Jenkins secrets 或生产配置提交到公开仓库。一、目标架构核心原则是分离系统与数据系统盘只保存操作系统、软件包和基础配置。数据盘保存服务数据、镜像层、对象文件、构建数据和日志。新服务节点从统一系统基线克隆。迁移时优先移交数据盘而不是复制 TB 级数据。这样可以让服务迁移拆成两个独立问题重建并验证运行环境。安全地移交数据状态。二、为什么要从统一基线克隆统一基线包含固定的操作系统版本和内核。QEMU Guest Agent。SELinux、firewalld、fstrim 的基础策略。明确的根分区与数据盘目录规范。在服务安装前创建基线快照再从该快照完整克隆新 VM可以减少“手工安装造成配置漂移”的问题。但完整克隆不是瞬时操作qcow2 系统盘会实际复制数据。因此迁移前要检查目标存储的空闲容量、I/O 带宽和业务窗口。三、系统盘与数据盘的职责推荐约束如下位置作用/操作系统、系统软件、必要配置/opt应用安装目录可绑定到独立数据盘/var/log系统和应用日志可绑定到独立数据盘/data对象存储或通用服务数据/data/harborHarbor Registry、数据库和持久化数据/mnt/sdb/jenkinsJenkins 控制器数据根分区应保持低使用率。根分区被日志、镜像层或构建产物填满时通常会导致服务异常、数据库失败甚至系统无法启动。四、迁移前检查清单迁移前应至少记录VM 配置、CPU、内存、网卡、MAC、IP、磁盘映射。所有快照及其父子关系。数据盘文件系统、UUID、挂载点、容量和使用率。服务版本、配置目录、监听端口和防火墙规则。服务运行状态与健康检查方式。回退路径旧 VM、旧系统盘、配置归档和新 VM 快照。不要只依赖 Proxmox 的磁盘大小。必须进入来宾系统确认lsblk -f findmnt df -hT systemctl status service五、快照链为什么会阻止数据盘移交Proxmox 可能拒绝移交被快照引用的磁盘Cant move disk used by a snapshot to another VM原因是 qcow2 快照通过 backing file 链保存增量数据。直接把当前磁盘交给另一台 VM会破坏旧 VM 的快照完整性。可选方案删除旧 VM 的快照链再直接移交数据盘。复制数据盘保留旧快照。暂缓迁移保留旧实例。第一种最快但会失去旧 VM 的快照回退点。执行前必须确认服务已经停止。旧 VM 已关机。新旧 VM 不会同时挂载同一数据盘。旧 VM 系统盘和服务配置归档仍保留。六、网络身份切换如果新 VM 要接管旧服务 IP可按以下顺序操作新 VM 使用临时 MAC 或保持关机。停止旧服务归档配置。关闭旧 VM。将旧数据盘移交到新 VM。在新 VM 恢复数据、配置和服务。在临时网络或控制台完成服务验证。停止新 VM将其 MAC 修改为旧 VM 的 MAC。启动新 VM等待 DHCP 重新分配旧 IP。从独立节点验证服务端口、健康状态和数据访问。绝不能让两个节点同时使用同一 MAC/IP也不能让两个 VM 同时写入同一个 qcow2 数据盘。七、不同服务的恢复重点Jenkins保留完整JENKINS_HOME尤其是secrets/、identity.key.enc、插件和 Job 配置。确保JENKINS_HOME与 Webroot 都位于数据盘。验证服务状态、HTTP 页面、插件加载和 Job 清单。SeaweedFS恢复 systemd unit、二进制文件、S3 配置和安全配置。使用原数据盘挂载/data。验证 master、volume、filer、S3 和 metrics 端口。Harbor恢复/opt/harbor、Docker 配置和/data/harbor。安装与源端兼容的 Docker 和 Docker Compose。验证 registry、core、DB、Redis、jobservice、nginx 等容器均为 healthy。准备国内镜像或内部 RPM 仓库避免外网软件源不可达阻塞恢复。八、快照一致性与 QEMU Guest Agent快照前Proxmox 会调用 QEMU Guest Agent 冻结来宾文件系统。如果出现failed to open /mnt/sdb: Permission denied应检查QEMU Guest Agent 是否运行。挂载点 SELinux 标签是否正确。virt_qemu_ga_t是否具有最小必要的挂载点查询和冻结权限。fsfreeze-freeze与fsfreeze-thaw是否能手工验证。文件系统冻结成功意味着快照具备更好的文件系统一致性但数据库、高写入 Registry 和对象存储仍应考虑应用层暂停、事务日志或独立备份。九、fstrim 与容量治理虚拟机中的 qcow2 数据盘应启用定期 fstrim[Timer] OnCalendarSat *-*-* 05:30:00 AccuracySec1min RandomizedDelaySec0 Persistenttrue这可以将文件系统已释放的块通知底层存储避免 qcow2 或精简置备卷持续膨胀。同时应持续监控根分区使用率。数据盘使用率。Docker overlay2 占用。Jenkins workspace 和构建产物。SeaweedFS volume 文件增长。Harbor Registry、数据库和日志目录。十、回退设计迁移完成后不要立刻删除旧 VM。建议保留旧 VM 的系统盘和关机状态。新 VM 的迁移后快照。服务配置归档。数据盘移交记录。服务健康检查结果。回退的基本步骤关闭新 VM。从新 VM 解绑数据盘。重新附加给旧 VM。恢复旧 VM 的 MAC/IP。启动旧 VM 并验证服务。十一、公开分享前的安全要求必须删除或替换SSH 密码、Harbor 管理员密码、S3 access key 和 secret key。Jenkinssecrets/、credentials.xml、identity.key.enc。内部 IP、MAC、UUID、主机名、数据盘路径和存储名称。Proxmox VM 描述里的凭据。Harborharbor.yml、SeaweedFS S3 配置、私有证书和 Docker 配置中的密钥。结语有状态服务迁移的关键不是“复制虚拟机”而是将系统环境、数据状态、网络身份、快照策略和回退路径拆开管理。只要坚持系统盘与数据盘分离、单写者原则、可验证切换和明确回退就能将高风险迁移变成可重复、可审计的运维流程。
返回列表