vmware 虚拟机克隆
在完成vmware的虚拟克隆功能后,我们还需要进行后续的收尾操作来使得克隆后的虚拟机正常工作, 本栏使用的是比较干净的虚拟机环境, 没有多余配置.只是为了简化课程实验的步骤. 在实际生产中一般不允许使用实例迁移. 当然, 生产不用虚拟机的.
实验环境:
Centos 6.7
实验步骤
克隆虚拟机的本质是复制,这会导致新旧两台机器在网络身份、系统身份和安全身份上完全相同。我们的目标就是把新克隆的虚拟机变成一个独一无二的、干净的独立个体,以避免在网络中产生任何冲突。
第一部分:网络配置修复 (最关键)
这是解决“网络不通”问题的核心,目标是让系统配置与虚拟机的新硬件(尤其是新MAC地址)完全匹配。
首选方案:保留原始网卡名 (如 eth0)
获取新MAC地址: 启动克隆机后,用 ip addr show 或 ifconfig -a 查到新网卡的真实MAC地址和它被临时分配的名字 (如 eth1)。
清除旧硬件规则: 删除系统对“旧MAC地址 -> eth0”的记忆。
codeBash
rm -f /etc/udev/rules.d/70-persistent-net.rules修改网卡配置文件: 编辑 /etc/sysconfig/network-scripts/ifcfg-eth0。
HWADDR: 必须修改为第1步中获取的新MAC地址。
UUID: 必须将该行删除,让系统重新生成。
IPADDR: 如果使用静态IP,必须修改为一个新的、未被占用的IP地址。
重启使规则生效: 必须执行 reboot 重启整个虚拟机,不能只重启网络服务。
第二部分:系统身份修改 (避免混淆)
目标是让新虚拟机在网络中拥有自己独一无二的名字。
修改主机名 (Hostname):
永久修改: 编辑 /etc/sysconfig/network 文件,修改 HOSTNAME 字段为一个新名字(例如 slave, node2 等)。
立即生效: 执行 hostname [新主机名],可以让当前会话立即看到新名字。
更新本地解析文件 (/etc/hosts):
编辑 /etc/hosts 文件。
找到包含旧主机名和旧IP地址的那一行。
将其更新为新的IP地址和新的主机名,确保本机能正确解析自己。
示例:
codeCode
# 修改前 192.168.1.10 master.localdomain master # 修改后 192.168.1.20 slave.localdomain slave
第三部分:安全身份重置 (避免安全警告)
目标是为新虚拟机生成一套全新的SSH身份密钥,防止SSH客户端因密钥重复而发出安全警告。
删除旧的SSH主机密钥:
codeBash
rm -f /etc/ssh/ssh_host_*重新生成新密钥:
最简单的方法就是重启虚拟机 (reboot)。系统在启动sshd服务时,发现密钥不存在会自动创建。
或者,也可以只重启sshd服务:service sshd restart。
简明操作流程总结
下次克隆虚拟机后,您可以直接按照这个简化流程操作:
启动克隆机,用 ip addr show 记录下新网卡的MAC地址。
rm -f /etc/udev/rules.d/70-persistent-net.rules
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改 HWADDR 为新MAC。
修改 IPADDR 为新IP。
删除 UUID 行。
vi /etc/sysconfig/network
修改 HOSTNAME 为新主机名。
vi /etc/hosts
更新IP和主机名映射。
rm -f /etc/ssh/ssh_host_*
reboot