云原生技术之KVM半虚拟化设置

举报
tea_year 发表于 2025/08/12 17:25:29 2025/08/12
【摘要】 KVM网络虚拟化技术学习目标能够了解半虚拟化驱动工作原理 能够下载半虚拟化驱动能够查看主机是否支持半虚拟化驱动 能够安装半虚拟化驱动能够通过virt-manager为虚拟机添加网卡 能够通过virsh命令为虚拟机添加网卡能够添加四种虚拟网络交换机1. 为什么使用半虚拟化驱动?虚拟化层完全模拟出来的网卡全虚拟化网卡环境中, 一个完整的数据包从虚拟机到物理机网卡的路径是:通过驱动对操作系统进行了...

KVM网络虚拟化技术

学习目标

  • 能够了解半虚拟化驱动工作原理

  • 能够下载半虚拟化驱动

  • 能够查看主机是否支持半虚拟化驱动

  • 能够安装半虚拟化驱动

  • 能够通过virt-manager为虚拟机添加网卡

  • 能够通过virsh命令为虚拟机添加网卡

  • 能够添加四种虚拟网络交换机

1. 为什么使用半虚拟化驱动?

虚拟化层完全模拟出来的网卡


全虚拟化网卡环境中, 一个完整的数据包从虚拟机到物理机网卡的路径是:

1.png

image-20250721091500889.png

通过驱动对操作系统进行了修改,即Virtio技术

半虚拟化网卡环境中,虚拟机直接访问虚拟化层,步骤减少:

2.png

2.使用半虚拟化驱动方法

下面是windows操作系统需要下载的,linux不需要。

[http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers


libvirt:虚拟化 API

[root@localhost ~]# wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
[root@localhost ~]# yum install virtio-win


3.查看是否支持半虚拟化驱动

虚拟机查看方法

#在客户端执行
[root@xnj ~]# virt-what
vmware

#在kvm上执行
[root@xnj ~]# virt-what
kvm
[root@xnj ~]# ethtool -i eth0
如下图所示,显示driver: virtio_net就代表支持!

40.png

4.设置半虚拟化驱动方法

1.使用virt-manager添加

按照下面设置后点击应用,然后强制关机+开机就可以写到配置文件中,做到永久修改!

46.png

ovirt创建网卡时候有3中选择,分别是e1000, rtl8139, virtio。

“rtl8139”这个网卡模式是qemu-kvm默认的模拟网卡类型,RTL8139是Realtek半导体公司的一个10/100M网卡系列,是曾经非常流行(当然现在看来有点古老)且兼容性好的网卡,几乎所有的现代操作系统都对RTL8139网卡驱动的提供支持。

“e1000”系列提供Intel e1000系列的网卡模拟,纯的QEMU(非qemu-kvm)默认就是提供Intel e1000系列的虚拟网卡。

“virtio” 类型是qemu-kvm对半[虚拟化]IO(virtio)驱动的支持。

这三个网卡的最大区别(此处指最需要关注的地方)是速度:

rtl8139 10/100Mb/s

e1000 1Gb/s

virtio 10Gb/s

2.virsh命令

在宿主机操作
# virsh edit 虚拟机名称

#找network
#将model中的type改为virtio即可
<interface type='network'>
     <mac address='52:54:00:ce:63:b7'/>
     <source network='default'/>
     <model type='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
 </interface>
#这个已经有了
更改完后强制关机,就可以生效了


5.添加网卡

1.virt-manager

选择虚拟机直接执行添加网卡操作

42.png

43.png

虚拟机查看网卡

[root@smartgo_01 ~]# ip a

44.png

虚拟机复制网卡并修改

#在宿主机下连接kvm虚拟机
ssh root@kvm虚机ip连接


[root@smartgo_01 network-scripts]# cd /etc/sysconfig/network-scripts/
[root@smartgo_01 network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@smartgo_01 network-scripts]# vim ifcfg-eth1
去掉UUID,然后修改名称为eth1

45.png

重启网络

[root@smartgo_01 ~]# systemctl restart network


2.virsh命令

使用命令添加网卡,在宿主机操作

image-20250721100238635.png

[root@localhost ~]# virsh list
Id    名称                         状态
----------------------------------------------------
4     centos7.6-2                    running
5     centos7.0-1                    running
#新的指令domif
[root@localhost ~]# virsh domiflist centos7.6-2
接口     类型            型号      MAC
-------------------------------------------------------
vnet1      bridge     virbr0     virtio      52:54:00:f1:84:5b

#一定要看看是什么的格式 桥接还是network模式
[root@localhost ~]# virsh attach-interface centos7.0.1 \
--type network \
--source default \
--model virtio \
--config    #暂时不加成功

虚拟机查看网卡添加情况

[root@smartgo_01 ~]# ip a s

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。