创建基于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 dumpxml 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 根据不同的安装方式设置不同的额外选项

你可能感兴趣的:(创建基于SRIOV的KVM虚拟机)