KVM虚拟机无法连网分析

KVM虚拟机无法连网分析

1. 主机设置 virtio 网络

两种方法:

a. virt-manager 图形设置,如下

b. 命令行设置

# virsh edit <domin name>
在 <devices> 和 </devices> 之间找一个合适的地方添加如下:

    <interface type='network'>
      <mac address='52:54:00:af:77:01'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

通过以上步骤后,发现虚拟机仍然无法连接网络。

2. 虚拟机内查看 网络接口

# ip link show
得到如下:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default 
    link/sit 0.0.0.0 brd 0.0.0.0
观察到主机虽然添加了硬件,但是虚拟机网络接口并不可见。下面就需要查看虚拟机硬件。

3. 虚拟机内查看 硬件

# lspci
得到如下:
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: VMware SVGA II Adapter
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 Audio device: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 01)
00:05.0 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02)
00:06.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:06.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:06.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:06.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:07.0 Communication controller: Red Hat, Inc Virtio console
00:08.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon
“00:03.0 Ethernet controller: Red Hat, Inc Virtio network device” 可以看出虚拟机上已经存在步骤1 中添加的硬件了。下面需要查看虚拟机驱动。

4. 虚拟机内查看驱动

# lsmod
得到如下:

Module                  Size  Used by
nfsd                  231723  13 
看出virtio 这个网络设备对应的驱动并没有加载。

最后,选择 virtio_net 这个驱动,重新编译内核,重启机器,加载驱动后,网络正常。

最后主机上的加载模块:

# lsmod
Module                  Size  Used by
nfsd                  231723  13 
virtio_net             17177  0 
virtio_pci             11567  0 
virtio_ring             5621  2 virtio_net,virtio_pci
virtio                  4479  2 virtio_net,virtio_pci

### 在KVM虚拟机中创建新的KVM虚拟机KVM虚拟机中创建新的KVM虚拟机,实际上是在一个运行KVM虚拟机中嵌套另一个KVM虚拟机。这种操作需要确保宿主机和虚拟机都支持硬件虚拟化,并且需要正确配置相关参数。 #### 1. 确保硬件虚拟化支持 在宿主机(物理机)上启用硬件虚拟化功能(Intel VT-x 或 AMD-V),并且确保该功能能够传递到KVM虚拟机中。可以通过以下命令检查硬件虚拟化是否启用: ```bash egrep -c '(vmx|svm)' /proc/cpuinfo ``` 如果返回值大于0,则表示支持硬件虚拟化[^1]。 #### 2. 配置KVM虚拟机以支持嵌套虚拟化 编辑现有KVM虚拟机的XML配置文件,添加或启用嵌套虚拟化的选项: ```bash virsh edit <虚拟机名称> ``` 在 `<cpu>` 节点中添加以下内容: ```xml <feature name='vmx' policy='require'/> ``` 保存并退出后重启虚拟机以使更改生效: ```bash virsh reboot <虚拟机名称> ``` #### 3. 安装必要的工具 确保KVM虚拟机中已经安装了 `libvirt` 和相关工具: ```bash yum install -y libvirt virt-install qemu-kvm systemctl start libvirtd systemctl enable libvirtd ``` #### 4. 创建新的KVM虚拟机 使用 `virt-install` 命令在KVM虚拟机中创建新的虚拟机。以下是一个示例命令: ```bash virt-install \ --name=NewVM \ --ram=2048 \ --vcpus=2 \ --disk path=/var/lib/libvirt/images/NewVM.qcow2,size=20,bus=virtio,format=qcow2 \ --os-type=linux \ --os-variant=rhel7 \ --network bridge=virbr0,model=virtio \ --graphics vnc,listen=0.0.0.0 \ --cdrom=/path/to/your.iso \ --noautoconsole ``` 上述命令中: - `--name` 指定新虚拟机的名称。 - `--ram` 和 `--vcpus` 分别指定内存大小和CPU核心数。 - `--disk` 指定磁盘路径、大小、格式等信息。 - `--os-type` 和 `--os-variant` 指定操作系统类型和变体。 - `--network` 指定网络桥接方式。 - `--graphics` 指定图形界面监听地址。 - `--cdrom` 指定ISO镜像路径[^4]。 #### 5. 启动并管理新虚拟机 启动新创建的虚拟机: ```bash virsh start NewVM ``` 连接到虚拟机的控制台: ```bash virsh console NewVM ``` 或者通过VNC客户端连接到虚拟机的图形界面。 --- ### 注意事项 - 嵌套虚拟化会增加性能开销,建议仅在必要时使用。 - 确保宿主机和KVM虚拟机的内核版本支持嵌套虚拟化。 - 如果遇到问题,可以检查日志文件 `/var/log/libvirt/qemu/<虚拟机名称>.log`[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值