ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

虚拟机克隆全解析:完整克隆与链接克隆的本质区别及避坑指南

虚拟机克隆全解析:完整克隆与链接克隆的本质区别及避坑指南 虚拟机克隆这件事看起来只是右键点一下“克隆”、下一步下一步就完事但我见过太多人在这上面翻车克隆完开机网络不通、SID冲突导致域环境出问题、链接克隆跑着跑着磁盘爆了、克隆出来的机器拿到别人电脑上直接起不来。问题不在于克隆本身有多难而在于大多数人根本没搞清楚完整克隆和链接克隆的本质区别也不知道克隆之后还有哪些必须做的收尾动作。这篇内容我打算把虚拟机克隆这条链路从头到尾讲清楚两种克隆方式底层到底干了什么、什么场景该选哪种、克隆前后有哪些必做的操作、克隆完常见的坑怎么排。不管你是刚接触 VMware Workstation 的新手还是已经在用 ESXi 管一批虚拟机的运维都能从里面找到能直接抄作业的步骤和避坑经验。核心关键词就几个虚拟机、克隆、VMware、完整克隆、链接克隆围绕它们把整个流程讲透。1. 克隆之前先想清楚你到底需要哪种克隆很多人一上来就问“怎么克隆”但更重要的问题是“我该用哪种克隆”。VMware 里克隆分两种完整克隆Full Clone和链接克隆Linked Clone。这俩不是“高级版”和“普通版”的关系而是面向完全不同场景的两套方案。选错了要么浪费大量磁盘空间要么在关键时刻掉链子。1.1 完整克隆和链接克隆的底层差异先打个比方。完整克隆就像你把一本书从头到尾复印了一份复印出来的是一本全新的、独立的书原书撕了也不影响复印件。链接克隆则像是给原书做了一个“快捷方式”你看到的是一本新书但里面大部分内容还是指向原书只有你做了修改的那几页才是真正属于你自己的。落到技术层面完整克隆把源虚拟机的虚拟磁盘VMDK完整复制一份生成一个全新的、独立的虚拟机。克隆完成后源虚拟机和克隆机之间没有任何依赖关系你可以随便删源机、移动克隆机互不影响。链接克隆克隆机共享源虚拟机的父磁盘parent disk只把自己后续产生的写入操作记录在一个增量磁盘delta disk里。克隆机必须依赖源虚拟机存在源机的父磁盘一旦损坏或被删除所有基于它的链接克隆全部报废。这个差异直接决定了它们的适用场景。我整理了一张对照表选型的时候直接看这张表就够了对比维度完整克隆链接克隆磁盘占用大等于源机磁盘大小小只占增量部分克隆速度慢取决于磁盘大小快几秒到几十秒独立性完全独立依赖源虚拟机父磁盘源机删除后不受影响全部失效适用场景生产环境、长期使用测试、临时环境、批量部署快照支持支持支持但受父磁盘限制1.2 什么场景选完整克隆什么场景选链接克隆选型的核心判断标准就一条这台克隆出来的机器是要长期独立存在还是临时用一下完整克隆适合这些情况你要把虚拟机分发给同事或者部署到另一台电脑上——必须完整克隆因为链接克隆离开源机就是一堆废文件。生产环境里的虚拟机扩容、迁移——独立性和可靠性优先磁盘空间不是主要矛盾。需要长期保留、反复使用的模板机——完整克隆出来的每一台都是自包含的。链接克隆适合这些情况做测试今天测个软件、明天验证个配置用完就删。批量部署临时环境比如给一个培训班开 30 台一模一样的实验机用链接克隆几分钟搞定还省磁盘。配合快照做“一次性”环境从某个干净快照克隆出来折腾完直接丢弃。注意链接克隆有一个很多人忽略的限制——它依赖的父磁盘不能被修改。如果你在源虚拟机上又打了新快照、又做了磁盘整理链接克隆的链条可能会出问题。所以链接克隆的源机最好保持“冻结”状态别在它上面继续折腾。1.3 克隆效率到底受什么影响热词里有个“克隆效率”这个确实值得说。克隆速度主要受三个因素影响第一是磁盘类型和存储介质。源虚拟机放在机械硬盘上完整克隆一个 50GB 的磁盘可能要十几分钟放在 NVMe 固态上同样的量可能两三分钟就完事。这是物理层面的瓶颈换克隆方式解决不了。第二是磁盘实际使用量而非分配量。VMware 的虚拟磁盘有“厚置备”和“精简置备”之分。精简置备的磁盘克隆时只复制实际写入的数据块一个分配了 100GB 但只用了 20GB 的磁盘完整克隆可能只复制 20GB 左右的数据。所以保持磁盘精简、定期清理无用文件能显著提升克隆效率。第三是克隆方式本身。链接克隆几乎瞬间完成因为它只创建一个增量磁盘文件完整克隆要实打实复制数据。如果你追求效率且场景允许链接克隆是碾压性的优势。2. 完整克隆实操从准备到验证的完整链路搞清楚选型之后进入实操。这一节我以 VMware Workstation Pro 17 为例把完整克隆的完整流程走一遍。ESXi 上的操作逻辑类似只是入口在 vSphere Client 里我会在关键处标注差异。2.1 克隆前的准备工作克隆不是上来就点按钮前期准备做不好克隆出来的机器大概率有问题。我一般会做这几件事第一清理源虚拟机。把源机开机删掉临时文件、清空回收站、卸载不再需要的软件。这一步的目的是减小克隆体积同时避免把一堆垃圾带到新机器上。如果是 Linux 系统可以用sudo apt clean或sudo yum clean all清理包缓存。第二确认源机处于关机状态。完整克隆要求源虚拟机必须关机。如果你在开机状态下操作VMware 会提示你先关机或者自动帮你创建一个快照再克隆——但我不建议用快照方式容易在后续引入不必要的依赖。第三检查磁盘空间。完整克隆需要和目标虚拟机等量的磁盘空间。克隆前确认宿主机目标分区有足够余量别克隆到一半提示空间不足那才叫尴尬。第四记录源机的关键配置。比如 IP 地址、主机名、MAC 地址。克隆出来的机器这些信息会和源机一模一样如果不提前记录克隆完你可能都分不清哪台是哪台。2.2 完整克隆的分步操作准备工作做完开始克隆。在 VMware Workstation 里操作路径是这样的在左侧虚拟机列表里右键点击源虚拟机选择Manage管理→ Clone克隆。弹出克隆向导点击“下一步”。选择克隆来源可以是“虚拟机当前状态”也可以是某个已存在的快照。如果源机有干净的快照建议从快照克隆这样克隆出来的机器状态更可控。选择克隆类型这里选Create a full clone创建完整克隆。填写新虚拟机的名称和存储位置。名称建议带上有意义的标识比如ubuntu-base-clone-01位置选一个空间充足的分区。点击“完成”等待克隆进度条走完。整个过程视磁盘大小和存储速度而定从几分钟到十几分钟不等。克隆完成后VMware 会自动把新虚拟机加入左侧列表。在 ESXi 上路径是右键虚拟机 →Clone克隆→ Clone to Virtual Machine后续选项基本一致只是存储位置选的是数据存储Datastore而不是本地文件夹。2.3 克隆后必做的收尾动作克隆完成不代表万事大吉恰恰相反克隆后的收尾才是决定这台机器能不能正常用的关键。我见过太多人克隆完直接开机就用结果网络冲突、主机名重复、各种奇怪问题。以下动作是必做的修改主机名。克隆机和源机主机名一样在同一网络里会造成识别混乱。Linux 下用hostnamectl set-hostname 新主机名Windows 下在系统属性里改。修改 IP 地址或配置 DHCP。如果源机是静态 IP克隆机必须改成不同的 IP否则两台机器 IP 冲突网络直接瘫痪。如果环境里有 DHCP把克隆机改成自动获取也行。重新生成 MAC 地址。VMware 在克隆时通常会自动为克隆机生成新的 MAC 地址但有时候不会。你可以在虚拟机设置 → 网络适配器 → 高级里检查如果和源机一样点一下“生成”按钮重新生成。Linux 系统重新生成 machine-id 和 SSH 密钥。这一步很多人不知道但很重要。/etc/machine-id和 SSH host key 如果和源机重复在集群环境里会出问题。操作如下# 重新生成 machine-id sudo rm /etc/machine-id sudo systemd-machine-id-setup # 重新生成 SSH host key sudo rm /etc/ssh/ssh_host_* sudo dpkg-reconfigure openssh-server # Debian/Ubuntu # 或者 sudo ssh-keygen -A # 通用方式Windows 系统检查 SID。如果克隆的是 Windows 且要加入域SID 重复会导致严重问题。可以用sysprep工具做系统准备或者用NewSID之类的工具重新生成 SID。不过现在微软对 SID 的敏感度降低了工作组环境下一般问题不大域环境建议还是处理一下。实操心得我习惯在克隆完成后先不急着改配置而是把克隆机网卡先断开开机进去把该改的都改完确认无误再连网。这样能避免克隆机和源机同时在线导致的 IP 冲突和主机名冲突尤其是生产环境里这个习惯能帮你省掉很多麻烦。3. 链接克隆实操快是快但这些坑得提前知道链接克隆的操作比完整克隆还简单但它的坑更多、更隐蔽。这一节把链接克隆的操作和注意事项讲清楚。3.1 链接克隆的操作流程在 VMware Workstation 里链接克隆的入口和完整克隆一样只是在选择克隆类型那一步选Create a linked clone创建链接克隆。但有一个前提源虚拟机必须至少有一个快照。链接克隆是基于快照的没有快照就没法做链接克隆。所以流程是先给源虚拟机创建一个快照右键 → Snapshot → Take Snapshot。右键源虚拟机 → Manage → Clone。选择克隆来源时选中刚才创建的那个快照。克隆类型选Create a linked clone。填写名称和位置完成。整个过程几秒钟就结束因为实际上只创建了一个增量磁盘文件和一个配置文件。在 ESXi 上链接克隆的入口在克隆向导里同样有选项但 ESXi 环境下链接克隆更多用于 VDI虚拟桌面基础架构场景配合 View/Horizon 使用。3.2 链接克隆的依赖链条与风险链接克隆最大的特点也是最大的风险它依赖源虚拟机的父磁盘。这个依赖链条是这样的源虚拟机 └── 快照父磁盘状态 └── 链接克隆1增量磁盘 └── 链接克隆2增量磁盘 └── 链接克隆3增量磁盘这意味着源虚拟机的父磁盘不能删除、不能移动、不能损坏。如果你删除了源虚拟机的快照所有基于该快照的链接克隆全部失效。如果你把链接克隆机复制到另一台电脑它无法独立运行因为找不到父磁盘。我踩过的一个坑有一次做测试从快照克隆了 5 台链接克隆机测试做完后觉得源虚拟机占地方就把源虚拟机删了。结果那 5 台链接克隆机全部变成“找不到磁盘”的状态数据全丢。所以链接克隆的机器要么及时转成完整克隆要么在源机保留期内用完就删。3.3 链接克隆转完整克隆的方法如果你一开始用了链接克隆后来发现需要长期保留可以把它“升级”成完整克隆。VMware Workstation 里没有一键转换的功能但可以用这个思路方法一用克隆功能再克隆一次。把链接克隆机当作源机对它做一次完整克隆。这样得到的新机器就是独立的了。方法二用 VMware vCenter Converter。这是 VMware 官方的转换工具可以把链接克隆机转换成独立虚拟机适合 ESXi 环境。方法三手动合并磁盘。用vmware-vdiskmanager工具把增量磁盘和父磁盘合并但这个操作有风险不熟悉的话不建议手动搞。注意链接克隆转完整克隆的过程中源虚拟机和所有相关快照都必须保持完好。转换完成后再考虑清理源机顺序不能反。4. 克隆虚拟机跨机器部署为什么拿到别人电脑上就跑不起来热词里有一条很典型的问题“vmware虚拟机克隆好了如何再别人的电脑上部署成功”。这个问题太常见了我专门用一节来讲。4.1 跨机器部署失败的三大原因克隆好的虚拟机拿到另一台电脑上打不开通常是这三个原因第一用了链接克隆。这是最常见的。链接克隆机离开源机就是废的因为它找不到父磁盘。解决办法只有一个在源机上先转成完整克隆再拷贝。第二虚拟机配置文件里的路径不对。虚拟机的.vmx配置文件里记录了磁盘文件、快照文件的绝对路径。你把虚拟机文件夹拷到另一台电脑路径变了VMware 找不到文件自然打不开。解决办法是拷贝后在 VMware 里重新“打开”虚拟机或者手动编辑.vmx文件把路径改成相对路径。第三硬件兼容性版本不匹配。如果源机的 VMware 版本比目标机高比如源机用 Workstation 17 创建的虚拟机目标机装的是 Workstation 15可能因为硬件版本过高而无法打开。解决办法是在源机上把虚拟机的硬件兼容性调低虚拟机设置 → 选项 → 高级 → 硬件兼容性或者目标机升级 VMware 版本。4.2 跨机器部署的正确姿势正确的跨机器部署流程应该是这样的在源机上确保虚拟机是完整克隆不是链接克隆。关机确认没有残留的快照依赖如果有快照考虑先合并快照。找到虚拟机的文件夹把整个文件夹拷贝出来。文件夹里应该包含.vmx、.vmdk、.nvram等文件。拷贝到目标电脑后打开 VMware选择File → Open定位到.vmx文件打开。如果提示文件找不到检查.vmx文件里的路径改成相对路径或新路径。开机前先检查网络设置避免和源机 IP 冲突。开机后按前面说的收尾动作改主机名、IP、MAC 等。这里有个小技巧拷贝前把虚拟机文件夹里的.lck锁定文件和临时文件删掉这些文件在跨机器拷贝时没用还可能造成干扰。4.3 用 OVF/OVA 格式做标准化分发如果你需要频繁地把虚拟机分发给别人更规范的做法是导出成OVF/OVA格式。OVF 是开放虚拟化格式OVA 是它的打包版本把虚拟机的配置、磁盘、清单文件打成一个包跨平台兼容性好。导出方法在 VMware Workstation 里File → Export to OVF选择虚拟机指定输出位置等待导出完成。得到的是一个.ova文件别人拿到后直接File → Open导入即可路径问题、依赖问题都自动处理好了。OVF/OVA 的好处是标准化坏处是导出和导入都比较慢因为要重新打包和解包。适合正式分发不适合临时拷贝。5. 克隆常见问题速查与排查技巧这一节把克隆过程中最常遇到的问题整理成速查表遇到问题直接对照排查。5.1 克隆后网络不通的排查思路克隆后网络不通是最常见的问题排查顺序如下排查项检查方法解决方法IP 冲突对比源机和克隆机 IP改成不同 IP 或启用 DHCPMAC 冲突虚拟机设置里看 MAC 地址重新生成 MAC网卡未识别ip addr或ifconfig看网卡检查网卡驱动Linux 下可能需要改网卡命名规则网络服务未启动systemctl status networking启动网络服务虚拟网络编辑器配置VMware 编辑 → 虚拟网络编辑器检查 NAT/桥接配置Linux 克隆后网卡找不到是个高频问题原因是克隆机的网卡 MAC 变了但系统里还记录着旧网卡的配置。解决办法是编辑/etc/netplan/下的配置文件Ubuntu或/etc/sysconfig/network-scripts/下的网卡配置CentOS把 MAC 地址更新或删掉然后重启网络服务。5.2 克隆后系统启动异常的排查克隆后开机蓝屏、黑屏、进不去系统可能的原因磁盘控制器类型不匹配源机和目标机的磁盘控制器SCSI/IDE/SATA设置不同导致系统找不到启动盘。在虚拟机设置里调整磁盘控制器类型。硬件兼容性版本问题前面说过调低硬件版本或升级 VMware。系统激活问题Windows 克隆后可能提示未激活需要重新激活。Linux 内核与硬件不匹配少见但跨大版本 VMware 时可能遇到重新生成 initramfs 可以解决。5.3 克隆相关的独家避坑清单最后把我这些年踩过的坑和总结的经验列一下都是文档里不会写的克隆前一定给源机做快照。万一克隆过程中源机出问题还能回滚。克隆完成后可以删掉快照。克隆机第一次开机前先断网。避免和源机同时在线造成冲突改完配置再联网。批量克隆时给机器编号。test-vm-01、test-vm-02这样别用test-vm、test-vm-copy、test-vm-copy2这种后期管理会疯。链接克隆的源机不要随便动。打了新快照、改了磁盘配置都可能影响已有的链接克隆。跨机器拷贝用 OVF 而不是直接拷文件夹。虽然慢一点但省心。克隆后检查时间同步。克隆机的时间可能和源机一样如果源机时间不准克隆机也不准。开机后同步一下 NTP。ESXi 环境下克隆注意资源池和权限。克隆到不同的资源池或数据存储时确认目标位置有足够权限和空间。实操心得我现在的习惯是任何一台要长期使用的虚拟机都先做一个“黄金镜像”——装好系统、打好补丁、装好常用工具、清理干净然后关机做完整克隆。以后需要新机器直接从黄金镜像克隆改个名、改个 IP 就能用。这个习惯让我的环境搭建效率提升了至少一倍而且每台机器的初始状态都是可控的。克隆这件事说到底就是“复制”两个字但复制的方式、复制后的处理、复制的边界条件才是真正区分新手和老手的地方。把完整克隆和链接克隆的适用场景搞清楚把克隆后的收尾动作做扎实把跨机器部署的坑提前避开虚拟机克隆这条链路就算真正打通了。
返回列表