当我们将虚拟机从 VMware 环境迁移到 KVM 虚拟化平台时,虽然系统能够成功启动,但可能会出现无法联网的情况。解决迁移 Ubuntu 24.04 系统从 VMware 到 KVM,无法获取IP导致没有网络的问题
1. 迁移前的准备
在迁移之前,需要做好以下准备工作:
- 备份虚拟机:为了防止意外丢失数据,首先应该备份虚拟机。
- 安装 QEMU-Guest-Agent:QEMU-Guest-Agent 是 KVM 环境中必要的工具,它能增强虚拟机和宿主机之间的交互,例如提供更好的网络性能和电源管理。 安装命令如下:
sudo apt update
sudo apt install qemu-guest-agent
2. 虚拟机迁移操作
迁移过程中,可以使用如下两种方法之一进行迁移:
- 迁移虚拟磁盘:通过将 VMware 虚拟机的虚拟磁盘(通常为
.vmdk
文件)转换为 KVM 支持的格式(如.qcow2
或.raw
格式)。
可以使用 qemu-img
工具进行格式转换:
qemu-img convert -f vmdk -O qcow2 vmware_disk.vmdk kvm_disk.qcow2
- 直接导出并导入虚拟机:导出 VMware 虚拟机的配置并导入到 KVM 中,使用 KVM 的虚拟机管理工具如
virt-manager
或virsh
进行虚拟机的创建和配置。
3. 启动虚拟机并验证迁移
完成迁移后,启动虚拟机,确保虚拟机能够成功启动并进入系统。此时,我们会发现虚拟机能够正常启动,但有时候会出现无法联网的情况。
网络问题分析
在迁移完成后,我们的 Ubuntu 24.04 系统成功启动,但无法连接到网络。执行 ip a
命令时,虚拟机没有分配到 IP 地址,且网络接口无法连接。经过排查,发现问题的根本原因在于虚拟机的网络接口名称发生了变化。
VMware 与 KVM 中的网卡名称差异
在不同的虚拟化平台中,网络接口的命名规则是不同的:
- VMware 中,网卡设备名通常是
ens33
或类似的名称。 - KVM 中,网卡名称可能变为
ens3
、eth0
或其他类似的格式。
在迁移过程中,由于底层虚拟化平台的差异,网卡名称发生了变化,而系统中的网络配置文件仍然使用的是旧的设备名称,导致虚拟机无法正确连接到网络。
排查步骤
- 查看实际网卡名称
通过执行 ip a
命令查看系统中的实际网卡名称。该命令输出中显示网卡名称为 ens3
,而不是 VMware 中的 ens33
。
ip a
- 检查 Netplan 配置文件
Netplan 是 Ubuntu 系统中用于网络配置的工具。我们需要检查 Netplan 配置文件,确认是否仍然使用旧的设备名称。
cat /etc/netplan/50-cloud-init.yaml
如果文件中仍然使用的是旧的 ens33
,而实际的设备名称是 ens3
,这将导致无法应用正确的网络配置。
解决方法
为了修复这个网络问题,只需将 Netplan 配置文件中的网卡名称从 ens33
更改为实际的 ens3
,然后重新应用网络配置即可。
步骤 1:编辑 Netplan 配置文件
打开 Netplan 配置文件进行编辑:
sudo nano /etc/netplan/50-cloud-init.yaml
将原配置:
network:
version: 2
ethernets:
ens33:
dhcp4: true
修改为:
network:
version: 2
ethernets:
ens3:
dhcp4: true
步骤 2:应用新的网络配置
保存并关闭文件后,应用新的网络配置:
sudo netplan apply
步骤 3:检查网络是否恢复
重新执行 ip a
命令,检查网络接口是否已成功获取到 IP 地址:
ip a
您应该可以看到 ens3
接口已成功获取到 IP 地址,网络恢复正常。
发表回复