<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>备份恢复 on 吾爱主机</title><link>https://blog.waihost.com/tags/%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D/</link><description>Recent content in 备份恢复 on 吾爱主机</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 09 Jul 2026 09:06:19 +0800</lastBuildDate><atom:link href="https://blog.waihost.com/tags/%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D/index.xml" rel="self" type="application/rss+xml"/><item><title>etcd 3.7.0 正式发布：Kubernetes 控制面的升级、备份与兼容性检查清单</title><link>https://blog.waihost.com/posts/etcd-3-7-upgrade-guide/</link><pubDate>Thu, 09 Jul 2026 09:06:19 +0800</pubDate><guid>https://blog.waihost.com/posts/etcd-3-7-upgrade-guide/</guid><description>&lt;img src="https://blog.waihost.com/images/covers/etcd-3-7-upgrade-guide.svg" alt="Featured image of post etcd 3.7.0 正式发布：Kubernetes 控制面的升级、备份与兼容性检查清单" /&gt;&lt;p&gt;etcd 是 Kubernetes 控制面的关键依赖：API Server 的对象状态、Leader 选举、租约与 watch 通知，最终都要落到这个分布式键值存储上。2026 年 7 月 8 日，etcd 项目发布了 v3.7.0。它不是一个只改版本号的小更新：官方发布说明明确要求升级前阅读 v3.7 升级指南，CHANGELOG 中同时包含安全修复、依赖升级、v2 相关能力移除、clientv3 行为变化以及运维工具改动。&lt;/p&gt;
&lt;p&gt;这篇文章基于 etcd 官方 Release、CHANGELOG、v3.7 升级文档，以及 Kubernetes 官方 etcd 运维文档整理成一份实践清单。它不是复制某一篇公告，而是面向真实生产环境回答三个问题：是否应该升级、升级前要检查什么、如果你运行的是 Kubernetes 集群该如何降低风险。&lt;/p&gt;
&lt;h2 id="这次发布最值得关注的变化"&gt;&lt;a href="#%e8%bf%99%e6%ac%a1%e5%8f%91%e5%b8%83%e6%9c%80%e5%80%bc%e5%be%97%e5%85%b3%e6%b3%a8%e7%9a%84%e5%8f%98%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;这次发布最值得关注的变化
&lt;/h2&gt;&lt;h3 id="1-安全修复与依赖升级"&gt;&lt;a href="#1-%e5%ae%89%e5%85%a8%e4%bf%ae%e5%a4%8d%e4%b8%8e%e4%be%9d%e8%b5%96%e5%8d%87%e7%ba%a7" class="header-anchor"&gt;&lt;/a&gt;1. 安全修复与依赖升级
&lt;/h3&gt;&lt;p&gt;v3.7.0 的正式版 CHANGELOG 提到两个服务端修复：当配置 &lt;code&gt;--listen-client-http-urls&lt;/code&gt; 时，gRPC listener 上的 CRL enforcement bypass 问题得到修复；同时修复了带 &lt;code&gt;bearer&lt;/code&gt; 前缀 token 的 websocket 认证问题。依赖层面，官方二进制使用 Go 1.26.5 编译，并将 &lt;code&gt;golang.org/x/crypto&lt;/code&gt; 升级到 v0.52.0，以处理多项 CVE。&lt;/p&gt;
&lt;p&gt;对运维团队来说，这意味着 v3.7.0 不应只被看成“新功能版本”。如果你的 etcd 暴露在严格证书校验、客户端证书吊销列表、或经过网关/WebSocket 访问的场景中，安全修复本身就值得排期评估。&lt;/p&gt;
&lt;h3 id="2-v2-时代彻底退出"&gt;&lt;a href="#2-v2-%e6%97%b6%e4%bb%a3%e5%bd%bb%e5%ba%95%e9%80%80%e5%87%ba" class="header-anchor"&gt;&lt;/a&gt;2. v2 时代彻底退出
&lt;/h3&gt;&lt;p&gt;v3.7 升级文档说明，v2 store 已在 v3.7 中完全移除：&lt;code&gt;--enable-v2&lt;/code&gt;、&lt;code&gt;--experimental-enable-v2v3&lt;/code&gt;、v2 discovery service、&lt;code&gt;client/v2&lt;/code&gt; 包以及 v2 snapshot 文件加载都不再存在。CHANGELOG 也把移除 v2 discovery、client/v2、v2 request/apply 等列为 v3.7.0-rc.0 的 breaking changes。&lt;/p&gt;
&lt;p&gt;如果你的集群已经稳定运行在 3.6，并且历史上没有保留 v2 数据，这通常不是阻塞项；但如果某些遗留脚本仍依赖 v2 API，或者你还保留了旧版本快照恢复流程，就必须在升级前完成迁移与演练。&lt;/p&gt;
&lt;h3 id="3-clientv3-创建连接不再阻塞"&gt;&lt;a href="#3-clientv3-%e5%88%9b%e5%bb%ba%e8%bf%9e%e6%8e%a5%e4%b8%8d%e5%86%8d%e9%98%bb%e5%a1%9e" class="header-anchor"&gt;&lt;/a&gt;3. clientv3 创建连接不再阻塞
&lt;/h3&gt;&lt;p&gt;CHANGELOG 写明：&lt;code&gt;clientv3&lt;/code&gt; 创建 etcd client 变为 non-blocking，etcd 不再遵循已废弃的 &lt;code&gt;grpc.WithBlock&lt;/code&gt; dial option。过去一些程序会假设 &lt;code&gt;clientv3.New(...)&lt;/code&gt; 返回成功就代表连接已建立；升级依赖后，这类程序需要改为显式执行健康检查、超时控制或首次请求重试。&lt;/p&gt;
&lt;p&gt;一个更稳妥的模式是：创建 client 后立即用带超时的上下文调用 &lt;code&gt;Status&lt;/code&gt; 或 &lt;code&gt;EndpointHealth&lt;/code&gt;，把“创建对象成功”和“后端可达”拆开处理。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cancel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Background&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Second&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;defer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;cancel&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cli&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://127.0.0.1:2379&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;nil&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Errorf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;etcd endpoint not ready: %w&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="4-命令行工具与可观测性变化"&gt;&lt;a href="#4-%e5%91%bd%e4%bb%a4%e8%a1%8c%e5%b7%a5%e5%85%b7%e4%b8%8e%e5%8f%af%e8%a7%82%e6%b5%8b%e6%80%a7%e5%8f%98%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;4. 命令行工具与可观测性变化
&lt;/h3&gt;&lt;p&gt;v3.7 系列整理了 &lt;code&gt;etcdctl&lt;/code&gt; 命令，使帮助输出更简洁；&lt;code&gt;etcdutl&lt;/code&gt; 为所有命令增加 timeout flag，用于等待数据库文件锁时避免无限等待。监控方面，CHANGELOG 提到新增 &lt;code&gt;etcd_server_request_duration_seconds&lt;/code&gt;，以及多项 watch send loop 相关指标。对于依赖 Prometheus 告警的集群，升级后应同步检查 dashboard 和 recording rules，避免因为指标新增、命名差异或告警阈值不适配导致误报或漏报。&lt;/p&gt;
&lt;h2 id="生产升级前的硬性检查"&gt;&lt;a href="#%e7%94%9f%e4%ba%a7%e5%8d%87%e7%ba%a7%e5%89%8d%e7%9a%84%e7%a1%ac%e6%80%a7%e6%a3%80%e6%9f%a5" class="header-anchor"&gt;&lt;/a&gt;生产升级前的硬性检查
&lt;/h2&gt;&lt;p&gt;官方 v3.7 升级文档给出了两个基础前提：运行中的集群必须已经是 v3.6.11 或更高版本；etcd 只支持一次升级一个 minor 版本。如果你还在 3.5 或更早版本，应先升级到 3.6，再从 3.6 升级到 3.7。&lt;/p&gt;
&lt;p&gt;升级前建议执行以下检查：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 检查所有成员版本与健康状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ETCDCTL_API&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt; etcdctl &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --endpoints&lt;span class="o"&gt;=&lt;/span&gt;https://127.0.0.1:2379 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cacert&lt;span class="o"&gt;=&lt;/span&gt;/etc/kubernetes/pki/etcd/ca.crt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cert&lt;span class="o"&gt;=&lt;/span&gt;/etc/kubernetes/pki/etcd/server.crt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --key&lt;span class="o"&gt;=&lt;/span&gt;/etc/kubernetes/pki/etcd/server.key &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; endpoint status --cluster -w table
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ETCDCTL_API&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt; etcdctl &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --endpoints&lt;span class="o"&gt;=&lt;/span&gt;https://127.0.0.1:2379 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cacert&lt;span class="o"&gt;=&lt;/span&gt;/etc/kubernetes/pki/etcd/ca.crt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cert&lt;span class="o"&gt;=&lt;/span&gt;/etc/kubernetes/pki/etcd/server.crt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --key&lt;span class="o"&gt;=&lt;/span&gt;/etc/kubernetes/pki/etcd/server.key &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; endpoint health --cluster
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 创建快照，保留到升级窗口结束后&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ETCDCTL_API&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt; etcdctl &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --endpoints&lt;span class="o"&gt;=&lt;/span&gt;https://127.0.0.1:2379 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cacert&lt;span class="o"&gt;=&lt;/span&gt;/etc/kubernetes/pki/etcd/ca.crt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cert&lt;span class="o"&gt;=&lt;/span&gt;/etc/kubernetes/pki/etcd/server.crt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --key&lt;span class="o"&gt;=&lt;/span&gt;/etc/kubernetes/pki/etcd/server.key &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; snapshot save /backup/etcd-&lt;span class="k"&gt;$(&lt;/span&gt;date +%F-%H%M&lt;span class="k"&gt;)&lt;/span&gt;.db
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3. 校验快照状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;etcdutl snapshot status /backup/etcd-YYYY-MM-DD-HHMM.db -w table
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Kubernetes 官方文档也强调了 &lt;code&gt;etcdctl&lt;/code&gt; 与 &lt;code&gt;etcdutl&lt;/code&gt; 的分工：&lt;code&gt;etcdctl&lt;/code&gt; 主要用于通过网络管理集群、键值和健康状态；&lt;code&gt;etcdutl&lt;/code&gt; 更偏向直接操作数据文件，例如快照恢复、碎片整理、迁移与一致性验证。不要把两者混用成一个“万能命令”。&lt;/p&gt;
&lt;h2 id="推荐的滚动升级节奏"&gt;&lt;a href="#%e6%8e%a8%e8%8d%90%e7%9a%84%e6%bb%9a%e5%8a%a8%e5%8d%87%e7%ba%a7%e8%8a%82%e5%a5%8f" class="header-anchor"&gt;&lt;/a&gt;推荐的滚动升级节奏
&lt;/h2&gt;&lt;p&gt;v3.7 升级文档说明，常规情况下从 v3.6 到 v3.7 可以通过零停机滚动升级完成：一次停止并替换一个成员，所有成员升级完成后，集群才被视为真正升级到 v3.7，并启用新版本能力。升级期间，混合版本集群会按最低共同版本协议运行。&lt;/p&gt;
&lt;p&gt;一个三节点集群可以按下面节奏执行：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在预发环境复刻生产拓扑，确认 kube-apiserver、控制器、调度器和自研组件能正常读写。&lt;/li&gt;
&lt;li&gt;对生产集群做快照，并确认快照可读、可复制到独立存储。&lt;/li&gt;
&lt;li&gt;逐个成员停止服务、替换二进制或镜像、启动服务。&lt;/li&gt;
&lt;li&gt;每升级一个成员后检查 &lt;code&gt;endpoint health --cluster&lt;/code&gt;、leader 是否稳定、API Server 错误率是否异常。&lt;/li&gt;
&lt;li&gt;所有成员升级完成后再观察至少一个业务高峰周期。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果是 kubeadm 管理的控制面，不建议绕过发行版或 kubeadm 文档直接替换宿主机上的 etcd；应先确认当前 Kubernetes 版本支持的 etcd 版本范围，并在维护窗口执行。&lt;/p&gt;
&lt;h2 id="日常维护也要一起复盘"&gt;&lt;a href="#%e6%97%a5%e5%b8%b8%e7%bb%b4%e6%8a%a4%e4%b9%9f%e8%a6%81%e4%b8%80%e8%b5%b7%e5%a4%8d%e7%9b%98" class="header-anchor"&gt;&lt;/a&gt;日常维护也要一起复盘
&lt;/h2&gt;&lt;p&gt;升级窗口是复盘 etcd 维护策略的好时机。官方维护文档指出，etcd 需要周期性维护以保持可靠性；如果 keyspace 历史没有及时压缩，后端数据库没有碎片整理，空间配额触发后集群会进入只接受读取和删除的受限维护模式。&lt;/p&gt;
&lt;p&gt;建议把下面三件事纳入升级后的运维基线：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 自动压缩：保留最近 1 小时历史（示例，需按业务 watch/回放需求调整）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;etcd --auto-compaction-mode&lt;span class="o"&gt;=&lt;/span&gt;periodic --auto-compaction-retention&lt;span class="o"&gt;=&lt;/span&gt;1h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 手动压缩到某个 revision 后，再对成员做 defrag&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ETCDCTL_API&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt; etcdctl compact &amp;lt;revision&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;ETCDCTL_API&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt; etcdctl defrag --cluster
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 关注 DB Size、leader 切换、请求延迟、watch 延迟等指标&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 结合新增的 etcd_server_request_duration_seconds 更新 Prometheus 告警&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="升级风险清单"&gt;&lt;a href="#%e5%8d%87%e7%ba%a7%e9%a3%8e%e9%99%a9%e6%b8%85%e5%8d%95" class="header-anchor"&gt;&lt;/a&gt;升级风险清单
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;遗留 v2 依赖&lt;/strong&gt;：检查脚本、SDK、旧控制器和快照恢复流程，不要等升级后才发现 &lt;code&gt;client/v2&lt;/code&gt; 或 v2 snapshot 不可用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;客户端连接假设&lt;/strong&gt;：如果业务代码使用 &lt;code&gt;clientv3&lt;/code&gt;，确认是否依赖 &lt;code&gt;grpc.WithBlock&lt;/code&gt; 带来的阻塞语义。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快照不可恢复&lt;/strong&gt;：只保存快照不够，至少要在隔离环境验证一次恢复流程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;混合版本时间过长&lt;/strong&gt;：滚动升级可以混合版本运行，但不应长期停留在混合状态。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes 兼容性&lt;/strong&gt;：控制面组件、发行版、kubeadm 与 etcd 版本必须一起评估。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="总结"&gt;&lt;a href="#%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;总结
&lt;/h2&gt;&lt;p&gt;etcd 3.7.0 的关键词是“安全修复、v2 清理、客户端语义调整、运维工具增强”。对于新集群，它让技术债更少；对于老集群，它会暴露历史遗留依赖。真正稳妥的升级不是简单替换二进制，而是先确认版本链路、备份可恢复、客户端行为可接受、监控和维护策略同步更新。只要把这些检查前置，v3.6 到 v3.7 的滚动升级可以成为一次相对可控的控制面基础设施升级。&lt;/p&gt;
&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;etcd 官方 Release：&lt;a class="link" href="https://github.com/etcd-io/etcd/releases/tag/v3.7.0" target="_blank" rel="noopener"
 &gt;https://github.com/etcd-io/etcd/releases/tag/v3.7.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;etcd 官方 CHANGELOG 3.7：&lt;a class="link" href="https://github.com/etcd-io/etcd/blob/main/CHANGELOG/CHANGELOG-3.7.md" target="_blank" rel="noopener"
 &gt;https://github.com/etcd-io/etcd/blob/main/CHANGELOG/CHANGELOG-3.7.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;etcd 官方 v3.7 升级指南：&lt;a class="link" href="https://etcd.io/docs/v3.7/upgrades/upgrade_3_7/" target="_blank" rel="noopener"
 &gt;https://etcd.io/docs/v3.7/upgrades/upgrade_3_7/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;etcd 官方维护文档：&lt;a class="link" href="https://etcd.io/docs/v3.7/op-guide/maintenance/" target="_blank" rel="noopener"
 &gt;https://etcd.io/docs/v3.7/op-guide/maintenance/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kubernetes 官方 etcd 管理文档：&lt;a class="link" href="https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/" target="_blank" rel="noopener"
 &gt;https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>在 Proxmox VE（PVE）中迁移虚拟机的完整流程</title><link>https://blog.waihost.com/posts/proxmox-vm-migration/</link><pubDate>Sun, 27 Apr 2025 14:22:14 +0800</pubDate><guid>https://blog.waihost.com/posts/proxmox-vm-migration/</guid><description>&lt;img src="https://blog.waihost.com/images/covers/proxmox-vm-migration.svg" alt="Featured image of post 在 Proxmox VE（PVE）中迁移虚拟机的完整流程" /&gt;&lt;p&gt;以下是详细教程，涵盖通过 &lt;strong&gt;备份与恢复&lt;/strong&gt; 在 Proxmox VE（PVE）中迁移虚拟机的完整流程，包括 &lt;code&gt;scp&lt;/code&gt; 和 &lt;code&gt;rsync&lt;/code&gt; 传输备份的详细步骤：&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="方法1通过备份与恢复迁移虚拟机无需集群"&gt;&lt;a href="#%e6%96%b9%e6%b3%951%e9%80%9a%e8%bf%87%e5%a4%87%e4%bb%bd%e4%b8%8e%e6%81%a2%e5%a4%8d%e8%bf%81%e7%a7%bb%e8%99%9a%e6%8b%9f%e6%9c%ba%e6%97%a0%e9%9c%80%e9%9b%86%e7%be%a4" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;方法1：通过备份与恢复迁移虚拟机（无需集群）&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="适用场景"&gt;&lt;a href="#%e9%80%82%e7%94%a8%e5%9c%ba%e6%99%af" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;适用场景&lt;/strong&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;源和目标 PVE 服务器&lt;strong&gt;未加入同一集群&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;需要&lt;strong&gt;离线迁移&lt;/strong&gt;（允许短暂停机）。&lt;/li&gt;
&lt;li&gt;支持&lt;strong&gt;任意存储类型&lt;/strong&gt;（本地存储、NFS、Ceph 等）。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="一准备工作"&gt;&lt;a href="#%e4%b8%80%e5%87%86%e5%a4%87%e5%b7%a5%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;一、准备工作&lt;/strong&gt;
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;检查源服务器和目标服务器&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确保目标服务器有&lt;strong&gt;足够的存储空间&lt;/strong&gt;（至少等于虚拟机备份后的大小）。&lt;/li&gt;
&lt;li&gt;确认两台服务器间网络互通（通过 &lt;code&gt;ping&lt;/code&gt; 测试）。&lt;/li&gt;
&lt;li&gt;开放防火墙端口（默认 SSH 端口 &lt;code&gt;22&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;备份目录权限&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;确认目标服务器的 &lt;code&gt;/var/lib/vz/dump/&lt;/code&gt; 目录存在且有写入权限：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ssh&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@目标服务器&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;mkdir -p /var/lib/vz/dump/ &amp;amp;&amp;amp; chmod 700 /var/lib/vz/dump/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id="二步骤1在源-pve-创建虚拟机备份"&gt;&lt;a href="#%e4%ba%8c%e6%ad%a5%e9%aa%a41%e5%9c%a8%e6%ba%90-pve-%e5%88%9b%e5%bb%ba%e8%99%9a%e6%8b%9f%e6%9c%ba%e5%a4%87%e4%bb%bd" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;二、步骤1：在源 PVE 创建虚拟机备份&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="11-关闭虚拟机可选"&gt;&lt;a href="#11-%e5%85%b3%e9%97%ad%e8%99%9a%e6%8b%9f%e6%9c%ba%e5%8f%af%e9%80%89" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1.1 关闭虚拟机（可选）&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 停止虚拟机（确保数据一致性）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qm stop &amp;lt;VMID&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 示例：关闭 VMID 为 101 的虚拟机
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qm stop 101
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="12-执行备份"&gt;&lt;a href="#12-%e6%89%a7%e8%a1%8c%e5%a4%87%e4%bb%bd" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1.2 执行备份&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 使用 vzdump 创建备份（压缩格式为 zstd，备份模式为 stop）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vzdump &amp;lt;VMID&amp;gt; --compress zstd --mode stop --storage &amp;lt;存储名称&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 示例：备份 VMID 101 到默认存储（通常为 local）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vzdump 101 --compress zstd --mode stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;关键参数&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--compress zstd&lt;/code&gt;：压缩备份文件，节省空间和传输时间。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--mode stop&lt;/code&gt;：关闭虚拟机后备份（数据一致性最高）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--storage&lt;/code&gt;：指定备份存储位置（默认为 &lt;code&gt;local&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="13-确认备份文件"&gt;&lt;a href="#13-%e7%a1%ae%e8%ae%a4%e5%a4%87%e4%bb%bd%e6%96%87%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1.3 确认备份文件&lt;/strong&gt;
&lt;/h4&gt;&lt;p&gt;备份完成后，文件会保存在 &lt;code&gt;/var/lib/vz/dump/&lt;/code&gt; 目录，命名格式为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vzdump-qemu-&amp;lt;VMID&amp;gt;-YYYY_MM_DD-XX_XX_XX.vma.zst
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过以下命令确认：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;lh&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;VMID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;-*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="三步骤2传输备份文件到目标服务器"&gt;&lt;a href="#%e4%b8%89%e6%ad%a5%e9%aa%a42%e4%bc%a0%e8%be%93%e5%a4%87%e4%bb%bd%e6%96%87%e4%bb%b6%e5%88%b0%e7%9b%ae%e6%a0%87%e6%9c%8d%e5%8a%a1%e5%99%a8" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;三、步骤2：传输备份文件到目标服务器&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="21-方法一使用"&gt;&lt;a href="#21-%e6%96%b9%e6%b3%95%e4%b8%80%e4%bd%bf%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2.1 方法一：使用 &lt;code&gt;scp&lt;/code&gt; 传输&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 传输单个备份文件（默认 SSH 端口）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;scp&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;VMID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;-*&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@目标服务器&lt;/span&gt;&lt;span class="ne"&gt;IP&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 示例（指定自定义 SSH 端口 2222）：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;scp&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;P&lt;/span&gt; &lt;span class="mi"&gt;2222&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2024&lt;/span&gt;&lt;span class="n"&gt;_01_01&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="n"&gt;_00_00&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;vma&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zst&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="22-方法二使用"&gt;&lt;a href="#22-%e6%96%b9%e6%b3%95%e4%ba%8c%e4%bd%bf%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2.2 方法二：使用 &lt;code&gt;rsync&lt;/code&gt; 传输（推荐）&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启用压缩、断点续传和进度显示（适用于大文件）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsync&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;avzP&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;partial&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;VMID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;-*&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@目标服务器&lt;/span&gt;&lt;span class="ne"&gt;IP&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 示例：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsync&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;avzP&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;partial&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2024&lt;/span&gt;&lt;span class="n"&gt;_01_01&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="n"&gt;_00_00&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;vma&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zst&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;参数说明&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-a&lt;/code&gt;：归档模式（保留文件属性）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-v&lt;/code&gt;：显示详细输出。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-z&lt;/code&gt;：启用压缩传输。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-P&lt;/code&gt;：显示进度并支持断点续传。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--partial&lt;/code&gt;：保留部分传输的文件，便于中断后继续。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="23-验证传输完整性"&gt;&lt;a href="#23-%e9%aa%8c%e8%af%81%e4%bc%a0%e8%be%93%e5%ae%8c%e6%95%b4%e6%80%a7" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2.3 验证传输完整性&lt;/strong&gt;
&lt;/h4&gt;&lt;p&gt;在目标服务器检查文件大小和校验和：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 检查文件大小&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;lh&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;VMID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;-*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 计算 MD5 校验和（与源服务器比对）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;md5sum&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;VMID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;-*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="四步骤3在目标-pve-恢复虚拟机"&gt;&lt;a href="#%e5%9b%9b%e6%ad%a5%e9%aa%a43%e5%9c%a8%e7%9b%ae%e6%a0%87-pve-%e6%81%a2%e5%a4%8d%e8%99%9a%e6%8b%9f%e6%9c%ba" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;四、步骤3：在目标 PVE 恢复虚拟机&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="31-确认备份文件存在"&gt;&lt;a href="#31-%e7%a1%ae%e8%ae%a4%e5%a4%87%e4%bb%bd%e6%96%87%e4%bb%b6%e5%ad%98%e5%9c%a8" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3.1 确认备份文件存在&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ssh&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@目标服务器&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ls -lh /var/lib/vz/dump/vzdump-qemu-&amp;lt;VMID&amp;gt;-*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="32-执行恢复操作"&gt;&lt;a href="#32-%e6%89%a7%e8%a1%8c%e6%81%a2%e5%a4%8d%e6%93%8d%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3.2 执行恢复操作&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 恢复备份到目标存储（存储名称需与源服务器一致）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;qmrestore&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;VMID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;-*.&lt;/span&gt;&lt;span class="n"&gt;vma&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zst&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;VMID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;storage&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;目标存储名称&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 示例：将备份恢复到 VMID 101，存储到 local-lvm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;qmrestore&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2024&lt;/span&gt;&lt;span class="n"&gt;_01_01&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="n"&gt;_00_00&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;vma&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zst&lt;/span&gt; &lt;span class="mi"&gt;101&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;storage&lt;/span&gt; &lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;lvm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;关键参数&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;VMID&amp;gt;&lt;/code&gt;：恢复后的虚拟机 ID（若目标服务器已有相同 ID，需先删除或指定新 ID）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--storage&lt;/code&gt;：指定目标存储（必须存在且类型兼容）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="33-修改虚拟机配置可选"&gt;&lt;a href="#33-%e4%bf%ae%e6%94%b9%e8%99%9a%e6%8b%9f%e6%9c%ba%e9%85%8d%e7%bd%ae%e5%8f%af%e9%80%89" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3.3 修改虚拟机配置（可选）&lt;/strong&gt;
&lt;/h4&gt;&lt;p&gt;如果目标服务器网络或硬件配置不同，需调整虚拟机设置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 示例：修改网络桥接接口为 vmbr1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qm set 101 --net0 virtio,bridge=vmbr1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="五步骤4验证迁移结果"&gt;&lt;a href="#%e4%ba%94%e6%ad%a5%e9%aa%a44%e9%aa%8c%e8%af%81%e8%bf%81%e7%a7%bb%e7%bb%93%e6%9e%9c" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;五、步骤4：验证迁移结果&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="41-启动虚拟机"&gt;&lt;a href="#41-%e5%90%af%e5%8a%a8%e8%99%9a%e6%8b%9f%e6%9c%ba" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;4.1 启动虚拟机&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qm start &amp;lt;VMID&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 示例
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qm start 101
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="42-检查虚拟机状态"&gt;&lt;a href="#42-%e6%a3%80%e6%9f%a5%e8%99%9a%e6%8b%9f%e6%9c%ba%e7%8a%b6%e6%80%81" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;4.2 检查虚拟机状态&lt;/strong&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;通过 PVE Web 界面查看虚拟机控制台。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;或通过命令行检查运行状态：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qm status 101
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="43-测试网络和服务"&gt;&lt;a href="#43-%e6%b5%8b%e8%af%95%e7%bd%91%e7%bb%9c%e5%92%8c%e6%9c%8d%e5%8a%a1" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;4.3 测试网络和服务&lt;/strong&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;通过 SSH 或远程桌面登录虚拟机。&lt;/li&gt;
&lt;li&gt;验证关键服务（如 Web、数据库）是否正常运行。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="六补充说明"&gt;&lt;a href="#%e5%85%ad%e8%a1%a5%e5%85%85%e8%af%b4%e6%98%8e" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;六、补充说明&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="1-传输大文件的优化技巧"&gt;&lt;a href="#1-%e4%bc%a0%e8%be%93%e5%a4%a7%e6%96%87%e4%bb%b6%e7%9a%84%e4%bc%98%e5%8c%96%e6%8a%80%e5%b7%a7" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1. 传输大文件的优化技巧&lt;/strong&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;使用 &lt;code&gt;rsync&lt;/code&gt; 断点续传&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsync&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;avzP&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;partial&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;rsh&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ssh -p 2222&amp;#34;&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="o"&gt;-*.&lt;/span&gt;&lt;span class="n"&gt;vma&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zst&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;后台传输（避免 SSH 超时）&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nohup rsync -avzP ... &amp;gt; rsync.log 2&amp;gt;&amp;amp;1 &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="2-存储名称不一致的解决方案"&gt;&lt;a href="#2-%e5%ad%98%e5%82%a8%e5%90%8d%e7%a7%b0%e4%b8%8d%e4%b8%80%e8%87%b4%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2. 存储名称不一致的解决方案&lt;/strong&gt;
&lt;/h4&gt;&lt;p&gt;如果目标服务器的存储名称与源服务器不同（如源用 &lt;code&gt;local&lt;/code&gt;，目标用 &lt;code&gt;local-lvm&lt;/code&gt;），恢复时需指定目标存储：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qm restore vzdump-qemu-101-*.vma.zst 101 --storage local-lvm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="3-清理备份文件"&gt;&lt;a href="#3-%e6%b8%85%e7%90%86%e5%a4%87%e4%bb%bd%e6%96%87%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3. 清理备份文件&lt;/strong&gt;
&lt;/h4&gt;&lt;p&gt;迁移完成后删除临时文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 源服务器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rm&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vz&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dump&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vzdump&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;qemu&lt;/span&gt;&lt;span class="o"&gt;-&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;VMID&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;-*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 目标服务器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ssh&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="err"&gt;@目标服务器&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;rm /var/lib/vz/dump/vzdump-qemu-&amp;lt;VMID&amp;gt;-*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="七注意事项"&gt;&lt;a href="#%e4%b8%83%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;七、注意事项&lt;/strong&gt;
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;虚拟机停机时间&lt;/strong&gt;：&lt;code&gt;--mode stop&lt;/code&gt; 会关闭虚拟机，若需最小化停机，可改用 &lt;code&gt;--mode suspend&lt;/code&gt;（需短暂暂停）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;存储兼容性&lt;/strong&gt;：目标服务器的存储类型（如 LVM、ZFS、NFS）需支持恢复的磁盘格式。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;网络带宽&lt;/strong&gt;：传输大文件时建议使用千兆或万兆网络，避免长时间占用带宽。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权限问题&lt;/strong&gt;：确保目标服务器的 &lt;code&gt;/var/lib/vz/dump/&lt;/code&gt; 目录对 root 用户可写。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;通过以上步骤，您可以安全、完整地将虚拟机迁移到另一台 PVE 服务器。如有报错，可检查日志 &lt;code&gt;/var/log/pve/tasks/active&lt;/code&gt; 或使用 &lt;code&gt;qm config &amp;lt;VMID&amp;gt;&lt;/code&gt; 验证配置。&lt;/p&gt;</description></item></channel></rss>