文章

vmware 虚拟机克隆

在完成vmware的虚拟克隆功能后,我们还需要进行后续的收尾操作来使得克隆后的虚拟机正常工作, 本栏使用的是比较干净的虚拟机环境, 没有多余配置.只是为了简化课程实验的步骤. 在实际生产中一般不允许使用实例迁移. 当然, 生产不用虚拟机的.

实验环境:

Centos 6.7

实验步骤

克隆虚拟机的本质是复制,这会导致新旧两台机器在网络身份、系统身份和安全身份上完全相同。我们的目标就是把新克隆的虚拟机变成一个独一无二的、干净的独立个体,以避免在网络中产生任何冲突。

第一部分:网络配置修复 (最关键)

这是解决“网络不通”问题的核心,目标是让系统配置与虚拟机的新硬件(尤其是新MAC地址)完全匹配。

首选方案:保留原始网卡名 (如 eth0)

  1. 获取新MAC地址: 启动克隆机后,用 ip addr showifconfig -a 查到新网卡的真实MAC地址和它被临时分配的名字 (如 eth1)。

  2. 清除旧硬件规则: 删除系统对“旧MAC地址 -> eth0”的记忆。

    codeBash

    rm -f /etc/udev/rules.d/70-persistent-net.rules
  3. 修改网卡配置文件: 编辑 /etc/sysconfig/network-scripts/ifcfg-eth0

    • HWADDR: 必须修改为第1步中获取的新MAC地址

    • UUID: 必须将该行删除,让系统重新生成。

    • IPADDR: 如果使用静态IP,必须修改为一个新的、未被占用的IP地址

  4. 重启使规则生效: 必须执行 reboot 重启整个虚拟机,不能只重启网络服务。

第二部分:系统身份修改 (避免混淆)

目标是让新虚拟机在网络中拥有自己独一无二的名字。

  1. 修改主机名 (Hostname):

    • 永久修改: 编辑 /etc/sysconfig/network 文件,修改 HOSTNAME 字段为一个新名字(例如 slave, node2 等)。

    • 立即生效: 执行 hostname [新主机名],可以让当前会话立即看到新名字。

  2. 更新本地解析文件 (/etc/hosts):

    • 编辑 /etc/hosts 文件。

    • 找到包含旧主机名旧IP地址的那一行。

    • 将其更新为新的IP地址新的主机名,确保本机能正确解析自己。

    示例:

    codeCode

    # 修改前
    192.168.1.10   master.localdomain master
    
    # 修改后
    192.168.1.20   slave.localdomain slave

第三部分:安全身份重置 (避免安全警告)

目标是为新虚拟机生成一套全新的SSH身份密钥,防止SSH客户端因密钥重复而发出安全警告。

  1. 删除旧的SSH主机密钥:

    codeBash

    rm -f /etc/ssh/ssh_host_*
  2. 重新生成新密钥:

    • 最简单的方法就是重启虚拟机 (reboot)。系统在启动sshd服务时,发现密钥不存在会自动创建。

    • 或者,也可以只重启sshd服务:service sshd restart


简明操作流程总结

下次克隆虚拟机后,您可以直接按照这个简化流程操作:

  1. 启动克隆机,用 ip addr show 记录下新网卡的MAC地址

  2. rm -f /etc/udev/rules.d/70-persistent-net.rules

  3. vi /etc/sysconfig/network-scripts/ifcfg-eth0

    • 修改 HWADDR 为新MAC。

    • 修改 IPADDR 为新IP。

    • 删除 UUID 行。

  4. vi /etc/sysconfig/network

    • 修改 HOSTNAME 为新主机名。

  5. vi /etc/hosts

    • 更新IP和主机名映射。

  6. rm -f /etc/ssh/ssh_host_*

  7. reboot

许可协议:  CC BY 4.0