① 网络虚拟化技术
数据包从虚拟机到物理机过程:
半虚拟化技术使数据包跳过QEMU虚拟网卡,从虚拟机直接到虚拟化层,
虚拟网卡性能排序:
简化虚拟化环境中的交换网络,代替传统的linux TAP设备加Bridge设备组合
MacVTap设备有3中不同的工作模式:
创建MacVTap端口过程
KVM虚拟机使用MacVTap网络
在xml文件配置如下
虚拟机开启后,宿主系统会自动创建一台MacVTap设备给虚拟机使用,这台MacVTap设备附属于母设备eth0,工作模式为Bridge
xml文件配置
1.物理网卡的中断与多队列
查看网卡是否支持RSS:
ls /sys/class/net/eth0/queues/
2.绑定中断
3.多队列Virtio网卡
查看是否支持:
grep IFF_MULTL_QUEUE /usr/include/Linux/if_tun.h
多队列Virtio网卡配置:
N 1-8最多支持8个队列,在虚拟机上执行以下命令开启多队列网卡:
ethtool -L eth0 combined M
M 1-N,M小于等于N
PCI Passthrough配置
1.查看网卡设备信息:
lspci 或者 virsh nodedev-list --tree
2.得到pci_0000_02_00_0的配置信息
virsh nodedev-mpxml pci_0000_02_00_0
3.编辑虚拟机xml文件,加入PCI设备信息
SR-IOV 上有两个功能类型。
SR- IOV 标准允许高效共享PCI-E 设备, 有以下优点:
2.网卡S R-IO V 的配置
SR-IOV 的配置需要先配置宿主机 PF , 然后将子网卡通过网卡独占的方式供虚拟机使用。
(1) 加载SR-IOV 内核模块
通过modprobe 命令加载igb 模块。
modprobe igb
实际加载的时候,需要激活虚拟功能(VF)。
modprobe igb max_vfs=7
如果需要重新设置VF, 可以删除模块再重新加载。
modprobe -r igb
将配置永久写入配置文件。
echo "options igb max_vfs=7" >> /etc/modprobe.d/igb.c onf
通过 lspci 命令可以看多主网卡和子网卡。
(2) 子网卡的使用
虚拟机可以通过网卡独占的方式使用子网卡。
virsh nodedev-list |grep 0b
虚拟机网卡xml 配置文件如下:
虚拟机需要安装网卡驱动才能 使用子网卡,高版本的Linux系统可以自动识别子网卡,
Windows系统只能是2008 Sevrer 以上版本,并且要安装最新的 Intel网卡驱动。
② pci重定向什么意思
一:修改KVM的配置文件
1.查看KVM的xml配置文件
KVM的配置文件存放在/etc/libvirt/qemu目录下
使用vi进行编辑 下面的这个KVM是重定向了一个PIC控制器
添加的代码如下
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
</hostdev>
登录后复制
2.使用virsh命令
list --all
登录后复制
使用list --all可以查看服务器下的虚拟机
使用 edit + 虚拟机名称 进行编辑
edit vm6u437944
登录后复制
然后再在对应的位置 添加对应的代码
二 查看PCI信息
查看USB控制器
lspci -vnn | grep USB
登录后复制
找到需要重定向的USB控制器,可以在前面看对应的控制器名称 如:01:00:0
然后将改设备写入到KVM中
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
</hostdev>
bus对应的就是01 slot对应的就是第二项 00 function对应的就是0 这三项分别对应了控制器名称 其他可以不做改变,直接复制进去
PCI
属羊人要“睡不着”了,2023年跟住这个人,别分开,是你的福气
麦玲玲仅供娱乐
广告
kvm-gpu:通过KVM进行GPU直通的实用程序
1下载·0评论
2021年5月9日
使用SR-IOV创建KVM虚拟机报错“host doesn’t support passthrough of host PCI devices”解决
3089阅读·0评论·0点赞
2022年3月9日
openstack 开发step-by-step
144阅读·0评论·0点赞
2015年5月5日
KVM详解,太详细太深入了,经典
4.9W阅读·4评论·45点赞
2016年9月29日
kvm控制服务器上传文件,KVM简单使用 | leon的博客
625阅读·0评论·0点赞
2021年8月13日
Ubuntu Server 20.04 LTS使用KVM创建虚拟机和指定显卡直通
1434阅读·0评论·2点赞
2022年6月7日
限时2年0利率,0压力提新车,电马新能源车全新价24.99万元起!
00:17
电马新能源车
广告
linuxPci驱动获取指定设备bus、device以及devfn数据方式
4002阅读·0评论·1点赞
2017年11月17日
主机pci设备直通
5718阅读·0评论·0点赞
2014年3月6日
pci设备的初始化
2666阅读·0评论·0点赞
2016年12月2日
如何用命令的方式在KVM上创建虚拟机
6804阅读·0评论·0点赞
2018年10月24日
虚拟媒介技术服务器,Raritan Dominion KXⅡKVM 配置虚拟媒体
173阅读·0评论·0点赞
2021年8月11日
KVM设备透传与重定向
2613阅读·0评论·3点赞
2019年12月18日
简单KVM安装+桥接模式
1416阅读·0评论·3点赞
2020年1月12日
06、KVM 中给虚拟机添加磁盘
954阅读·0评论·2点赞
2020年9月17日
kvm libvirt: hostdev passthrough support 解决加密狗冲突问题
3899阅读·0评论·1点赞
2013年9月15日
基于KVM的SRIOV直通配置及性能测试
1728阅读·0评论·3点赞
2022年1月7日
kvm如何实现pci设备的物理穿透?
352阅读·0评论·0点赞
2020年12月10日
KVM+显卡直通(passthrough)配置方法及问题说明
4.3W阅读·19评论·6点赞
2018年12月24日
Ubuntu20.04.3 KVM+显卡直通(passthrough)配置方法
5238阅读·0评论·0点赞
2022年3月31日
kvm安装虚拟机命令详解
③ 如何使用vnc-view查看kvm的虚拟机
虚拟机反看宿主机这个我也没找到方法
但是无非几个主要的点,比如主机名
一般主要是通过宿主机查看虚拟机,因为宿主机来批量管理虚拟机的,图形化界面也可以使用VNC,详细的命令就不说了,如果需要根据虚拟机来找宿主机的,那么肯定是配置之前规划有问题,乱了
④ qemu-kvm怎么进入虚拟机配置文件
如果有yum的话,直接运行
# yum install qemu -y
如果不知道一个文件被包含在哪个包里,但确定有这个文件,
# yum provides /*/qemu-kvm
⑤ 创建基于SRIOV的KVM虚拟机
本文来自微信公众号“ICT大融合”。
一、利用 iso 创建虚机
1. 安装环境:
适用于centos/redhat.
2. 安装准备:
yum -y install kvm
yum -y install qemu-kvmpython-virtinst libvirt libvirt-python virt-manager libguestfs-toolsbridge-utils virt-install
systemctl startlibvirtd.service
systemctl enablelibvirtd.service
3. 构建虚拟网络:
brctl addbr br0
brctl addif br0 ens6np0
注:ens6np0是netreonome CX-25G智能网卡,
[root@test4 vms]# ethtool -i ens6np0
driver: nfp
version: rev-2020.01.13.0820.a3cf8e9 (o-
firmware-version: 0.0.3.5 0.30 sriov-2.1.16.1nic
expansion-rom-version:
bus-info: 0000:02:00.0
4. 安装虚拟机
mkdir -p /home/vms/
virt-install --virt-type=kvm --name=centos88 --vcpus=2--memory=4096 --location=/home/CentOS-7-x86_64-DVD-1908.iso --diskpath=/home/vms/centos88.qcow2,size=40,format=qcow2 --network bridge=br0--graphics none --extra-args='console=ttyS0' –force
注:
安装镜像iso一定放在/home/或其他可访问目录,否则提示没有操作权限。
然后一路按照提示,设置相应参数,直到虚拟机构建完成。
安装完成之后,用virshlish查看虚拟机状态。
[root@test4 vms]# virsh list
Id Name State
----------------------------------------------------
2 centos88 running
以上是虚拟机的网卡是基于virtio并接入主机的bridge,用ps可以看到相应进程。
[root@test4 ~]# ps -e |grep kvm
15484 ? 00:00:38 qemu-kvm
15491 ? 00:00:00 kvm-pit/15484
18406 ? 00:00:14 qemu-kvm
18413 ? 00:00:00 kvm-pit/18406
[root@test4 ~]# ps -e |grep vhost
15486 ? 00:00:00 vhost-15484
18408 ? 00:00:00 vhost-18406
二、用通过镜像创建基于 SRIOV 虚拟机。
1. 创建vf :
echo 2 > /sys/class/net/ens6np0/device/sriov_numvfs
可以用如下命令查看,
lspci -kd 19ee:
lspci | grep -i ethernet
注意:19ee是netreonome的PCI vendor ID号。
2. 创建虚拟机镜像文件:
cp centos88.qcow2 centos7.200.qcow2
chown qemu:qemu centos7.200.qcow2
cp centos88.xml centos7.200.xml
3. 修改配置文件
vi centos7.200.xml
其中,uuid采用uuidgen 命令生成。
选项Interface进行修改,Mac地址随便改一个,不重复就行。关键是修改vf的PCI地址,用lspci获取。
virsh define centos7.200.xml
4. 创建磁盘:
qemu-img create /home/vms/centos200.img 40G
5. 启动虚机:
virsh start centos200
三、常见命令
virsh基本命令:
virsh list # 查看在运行的虚拟机
virsh mpxml vm-name # 查看kvm虚拟机配置文件
virsh start vm-name # 启动kvm虚拟机
virsh shutdown vm-name # 正常关机
virsh destroy vm-name # 非正常关机,强制关闭虚拟机(相当于物理机直接拔掉电源)
virsh undefine vm-name # 删除vm的配置文件
ls /etc/libvirt/qemu
# 查看删除结果,Centos-6.6的配置文件被删除,但磁盘文件不会被删除
virsh define file-name.xml # 根据配置文件定义虚拟机
virsh suspend vm-name # 挂起,终止
virsh resumed vm-name # 恢复被挂起的虚拟机
virsh autostart vm-name # 开机自启动vm
virsh console <虚拟机名称> # 连接虚拟机
virt-install参数:
–name指定虚拟机名称
–memory分配内存大小。
–vcpus分配CPU核心数,最大与实体机CPU核心数相同
–disk指定虚拟机镜像,size指定分配大小单位为G。
–network网络类型,此处用的是默认,一般用的应该是bridge桥接。
–accelerate加速
–cdrom指定安装镜像iso
–vnc启用VNC远程管理,一般安装系统都要启用。
–vncport指定VNC监控端口,默认端口为5900,端口不能重复。
–vnclisten指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。
–os-type=linux,windows
–os-variant=rhel6
--name 指定虚拟机名称
--ram 虚拟机内存大小,以 MB 为单位
--vcpus 分配CPU核心数,最大与实体机CPU核心数相同
–-vnc 启用VNC远程管理,一般安装系统都要启用。
–-vncport 指定VNC监控端口,默认端口为5900,端口不能重复。
–-vnclisten 指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。
--network 虚拟机网络配置
#其中子选项,bridge=br0 指定桥接网卡的名称。
–os-type=linux,windows
–os-variant=rhel7.2
--disk 指定虚拟机的磁盘存储位置
#size,初始磁盘大小,以 GB 为单位。
--location 指定安装介质路径,如光盘镜像的文件路径。
--graphics 图形化显示配置
#全新安装虚拟机过程中可能会有很多交互操作,比如设置语言,初始化 root 密码等等。
--extra-args 根据不同的安装方式设置不同的额外选项
⑥ kvm虚拟机配置文件怎么注释配置
Java代码
<domain type="kvm">
// domain 是一个所有虚拟机都需要的根元素,type定义使用哪个虚拟机管理程序,
<name>$vmUuid</name>
// name定义了一个名字
<uuid>$vmUuid</uuid>
// id唯一的标示一个运行的虚拟机
<memory unit="KiB">$vmMemory</memory>
// memory 定义客户端启动时可以分配到的最大内存
<vcpu placement="static">$vmVcpu</vcpu>
// vcpu的内容是为虚拟机最多分配几个cpu,值处于1~maxcpu之间 //placement参数指定一个domain的cpu的分配模式,static、auto
<os>
<type arch="x86_64" machine="pc-i440fx-trusty">hvm</type>
// type参数指定了虚拟机操作系统的类型 // arch指定虚拟机的CPU架构,machine指定机器的类型 // hvm表明需要全虚拟化
<boot dev="hd" />
// boot:指定启动设备,hd表示从硬盘启动
</os>
<features>
// Hypervisors所有的特性都在fearures元素中
<acpi />
// 用于电源管理
<apic />
// 是装置的扩充组合用来驱动 Interrupt 控制器
<pae />
// 扩展物理地址模式,使32位的客户端支持大于4GB的内存
</features>
<clock offset="utc" />
// 客户端的时间初始化来自宿主机的时间 // 大多数操作系统期望硬件时钟保持UTC格式,UTC也是默认格式 // 当一个客户端的OS触发lifecycle时,它将采取新动作覆盖默认操作 // 具体状态参数如下:
<on_poweroff>destroy</on_poweroff>
// 当客户端请求poweroff时执行特定的动作 // destroy:domain将会被完全终止,domain的所有资源会被释放
<on_reboot>restart</on_reboot>
// 当客户端请求reboot时执行特定的动作 // restart: domain会被终止,然后以相同的配置重新启动
<on_crash>restart</on_crash>
// 当客户端崩溃时执行的动作 // restart: domain会被终止,然后以相同的配置重新启动
<devices>
// 所有的设备都是一个名为devices元素的子设备
<emulator>/usr/bin/kvm-spice</emulator>
// emulator元素指定模拟设备二进制文件的全路径
<disk type="file" device="disk">
// 所有的设备看起来就像一个disk、floppy、cdrom等 // 他们通过一个disk元素指定。 // disk是一个描述disks的容器,这个disk的type是file
<driver name="qemu" type="qcow2" />
// driver允许更进一步的指定hypervisor driver的 // 相关细节。如果hypervisor支持多个后端驱动程序, // name属性选择一个主要的后端驱动的名称, // type参数可以指定一个子类型,qcow2 写时拷贝2
<source file="$imagePath" />
// source元素:在disk的type是file时,file属性 // 指定一个合格的全路径文件映像作为客户端的磁盘
<target dev="sda" bus="virtio" />
// 将磁盘暴露给客户机时的总线类型和设备名称。 // target元素:控制总线设备在某个磁盘被选为客户 // 端的OS时,dev属性表明本地磁盘在客户端上的实际 // 名称,因为实际设备的名称指定并不能保证映射到 // 客户端OS上的设备。 // bus属性指定了哪种类型的磁盘被模拟 // virtio 半虚拟化
</disk>
#foreach($!disk in $!diskList) // 循环创建虚拟硬盘
<disk type="file" device="disk">
<driver name="qemu" type="$!disk.diskDTO.diskFormat.value" />
<source file="$!disk.diskDTO.diskPath" />
<target dev="$!disk.devName" bus="usb" />
</disk>
#end // 控制器=====
<controller type="usb" index="0" model="ich9-ehci1">
<address type="pci" domain="0x0000" bus="0x00" slot="0x07" function="0x7" />
</controller>
<controller type="usb" index="0" model="ich9-uhci1">
<master startport="0" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x07" function="0x0" multifunction="on" />
</controller>
<controller type="pci" index="0" model="pci-root" />
<controller type="ide" index="0">
⑦ 华为虚拟化(kvm)平台,如何在宿主机上底层查看到虚拟机在共享存储上存放位置和模板文件格式谢谢!
在linux上玩过kvm的朋友基本都晓得,在宿主机上运行了虚拟主机以后,我们无法直接看到某一个虚拟主机IP地址。比如:
[root@21yunwei /]$virsh list --all
Id 名称 状态
----------------------------------------------------
3 geoip running
4 tomcat running
5 jenkins running
18 gitlab running
19 win7 running
如果我们想知道gitlab这个虚拟机的IP地址,那么是无法直接看到的。这里就需要一个小方法做排查,很简单的,就两步骤:
1,编辑虚拟主机配置文件。
[root@21yunwei /]$virsh edit gitlab
进去以后直接查找mac 可以定位到如下地址信息,记录下mac后退出:
<mac address='52:54:00:FA:61:75'/>
2,通过arp -a判定虚拟机器IP地址。
[root@21yunwei /]$arp -a | grep -i 52:54:00:FA:61:75
? (192.168.1.101) at 52:54:00:fa:61:75 [ether] on br1
注意这里一定要加上-i 忽略大小写。不然因为大小写问题有可能查不到。
说明:这里只根据通信缓存记录的mac 、IP地址手段做排查。也有可能找不到。最好的办法是自己写一个脚本跟网段内的所有服务器都ping一次,记录下mac、ip地址以后再查找就没问题。
⑧ 如何把kvm创建的虚拟机镜像拷出来
一、kvm虚拟机静态迁移
1.静态迁移就是虚拟机在关机状态下,拷贝虚拟机虚拟磁盘文件与配置文件到目标虚拟主机中,实现的迁移。
(1)虚拟主机各自使用本地存储存放虚拟机磁盘文件
本文实现基于本地磁盘存储虚拟机磁盘文件的迁移方式,
(2)虚拟主机之间使用共享存储存放虚拟机磁盘文件
该方式只是在目标虚拟主机上重新定义虚拟机就可以了。
2.静态迁移过程如下
(1)确定虚拟机关闭状态
⑨ 如何给运行的kvm虚拟机做快照
KVM-快照管理
1.kvm克隆
kvm 虚拟机有两部分组成:img镜像文件和xml配置文件(/etc/libvirt/qemu
克隆命令:virt-clone -o rhel6- 71 -n xuegod63-kvm2 -f /var/lib/libvirt/images/xuegod63-kvm2.img
virt-clone -o 原虚拟机 -n 新虚拟机 -f 新img文件
对比配置文件,将两份xml文件做diff对比,里面只修改了name、img、Mac 3个位置信息
克隆完成后,需要修改新虚拟机的网卡配置,并删除/etc/udev/rule.d/70-*-net文件,
2.快照(snapshot)
kvm默认格式为raw格式,如需要修改镜像文件格式。需要配置xml文件
查看镜像文件格式qemu-ig info 镜像文件
1)、转换格式(将raw格式转换为qcow2格式)
qemu-img convert -f raw -O qrow2 /var/lib/libvert/images/xuegod63-kvm2.img
需要修改xml文件virsh edit 虚拟机
2)、创建快照
qemu-img snapshot-create 虚拟机(可以用snapshot-create-as指定快照名称)
3)、快照管理
qemu-img snapshot-list
4)、恢复快照
查看虚拟机状态:virsh domstate xuegod63-kvm2
恢复快照:virsh snapshot-revert 虚拟机 快照名
查看当前快照: virsh snapshot-current xuegod63-kvm2
快照目录:/var/lib/libvert/qemu/snapshot/虚拟机
删除快照: virsh snapshot-delete 虚拟机 快照名
⑩ vcenter查看所有的虚拟机地址
1,在终端输入: ip addr 然后enter
2,进入终端:ifconfig 然后enter
若出现bash: ifcogfig: 未找到命令...
解决办法,先安装net-tool插件
输入命令:sudo yum install net-tools
这样便解决了出现未找到命令的问题
3,进入终端输入:ifconfig -a 然后enter
白格的地方即为虚拟机地址