一,准备环境

 

物理机

虚拟机

操作系统

CentOS 6.8 x64

CentOS 6.8 x64

CPU/内存

10核超线程x2/64G

2核/4G

外网IP

 

--

内网IP

eth1_192.168.0.85

eth0_192.168.0.91-100

硬盘

1T

100G

 

 

 

二,安装服务

1、检查当前物理机是否支持虚拟化技术:

 

# egrep 'vmx|svm' /proc/cpuinfo

 

如果输出的结果包含VMX,它是Intel处理器虚拟机技术标志:如果包含SVM,它是AMD处理器虚拟机技术的标志,如果你什么都没有得到,那应你的系统并没有支持虚拟化的处理,不能使用KVM,另处linux发行版本必须在64bit环境中才能使用KVM。

2、准备相应程序包:

# yum install kvm python-virtinst libvirt  bridge-utils virt-manager qemu-kvm-tools  virt-viewer  virt-v2v tunctl tigervnc-server

 

3、关闭selinux:

# vi /etc/selinux/config

SELINUX=disabled

此处更改后需重新服务器。

 

4、查看libvirtd虚拟化进程是否启动:

 # /etc/init.d/libvirtd restart

 

5、检查kvm模块是否加载:

# lsmod | grep kvm

kvm_intel              55464  8

kvm                   345038  1 kvm_intel

 

6、检查kvm应用是否正常:

# virsh list --all

名称                         状态

----------------------------------------------------

此处应为空,因为还未安装任何虚拟机。

 

7、修改qemu配置内vnc监听端口:

 # vi /etc/libvirt/qemu.conf

 vnc_listen = "0.0.0.0"

 

8、重启libvirtd

# service libvirtd restart

 

9、启动vncserver:

# service vncserver restart

至此,KVM平台搭建前准备工作完成。

 

三、网络部分

1、关闭NetworkManager

 # service NetworkManager stop

 # chkconfig NetworkManager off

 

2、配置桥接网络

 # vi /etc/sysconfig/network-scripts/ifcfg-br0

 DEVICE=br0

 TYPE=Bridge

 ONBOOT=yes

 NM_CONTROLLED=yes

 BOOTPROTO=static

 IPADDR=192.168.0.85

 NETMASK=255.255.255.0

 GATEWAY=192.168.0.1

 DNS1=202.106.0.20

 DEFROUTE=no

 

 # vi /etc/sysconfig/network-scripts/ifcfg-eth1 (em1)

DEVICE=eth1

TYPE=Ethernet

UUID=f47dd8ad-781b-44d7-861e-420a0621114a

ONBOOT=yes

NM_CONTROLLED=yes

HWADDR=08:94:EF:04:56:09

BRIDGE=br0

 

3、重启网络

 # service network restart

 

4、检查网桥配置  (本机物理机ip地址)

# ifconfig

br0       Link encap:Ethernet  HWaddr 08:94:EF:04:56:09  

          inet addr:192.168.0.85  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::a94:efff:fe04:5609/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:207182 errors:0 dropped:0 overruns:0 frame:0

          TX packets:158584 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:63477520 (60.5 MiB)  TX bytes:95134411 (90.7 MiB)

 

eth1      Link encap:Ethernet  HWaddr 08:94:EF:04:56:09  

          inet6 addr: fe80::a94:efff:fe04:5609/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:208376 errors:0 dropped:0 overruns:0 frame:0

          TX packets:182265 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:67234410 (64.1 MiB)  TX bytes:97388133 (92.8 MiB)

          Interrupt:17 

 

# brctl show

 bridge name     bridge id               STP enabled     interfaces

 br0             8000.0894ef045609       no              eth1

 virbr0          8000.000000000000       yes

 

#########centos7.9 虚拟网口配置(含有bond)########

# cat ifcfg-enp97s0f0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=enp97s0f0
DEVICE=enp97s0f0
ONBOOT=yes
MASTER=bond4
SLAVE=yes

 

# cat ifcfg-enp97s0f1
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=enp97s0f1
DEVICE=enp97s0f1
ONBOOT=yes
MASTER=bond4
SLAVE=yes

 

# cat ifcfg-bond4
TYPE=Bond
NAME=bond4
DEVICE=bond4
USERCTL=no
BONDING_MASTER=yes
PEERDNS=yes
BONDING_OPTS="mode=802.3ad miimon=100 lacp_rate=fast mode=4 xmit_hash_policy=layer2+3"

 

# cat ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.148.11.114
NETMASK=255.255.255.0
GATEWAY=10.148.11.254
DNS1=114.114.114.114

kvm gpu直通 一个显示器 kvm显卡直通win7_kvm gpu直通 一个显示器

 

 

 

三、安装第一台kvm虚拟机

1、建立img路径文件夹

 # mkdir /app/kvm-machines/kvm01 -p

 

2、执行初始化虚拟机操作(在vnc里边执行)

 磁盘有两种格式,分别是qcow2和raw

 区别是 用qcow2格式创建的虚拟机不会立即使用磁盘;

 但是用raw格式创建的虚拟机会立即使用磁盘;物理机磁盘容量的增长会很快,但是qcow2格式的磁盘会慢慢增长,但不会超过总共给他分配的容量。

 

# qemu-img create -f qcow2 /app/kvm-machines/kvm01/kvm01.qcow2 100G  

 

@1 第一种安装方式

# virt-install --name=kvm01 --ram=4096 --vcpus=2 --disk path=/app/kvm-machines/kvm01/kvm01.qcow2,format=qcow2,size=100 --accelerate --cdrom=/app/CentOS-6.8-x86_64-bin-DVD1.iso --graphics vnc,password="******",port=5920 --network bridge=br0 --force --autostart            (在vnc里面执行)

 *******************************************************************************************************************************************************************************************************

@2 第二种安装方式

物理机上两块网卡,需要虚拟机也有两块网卡,并且//最小化//安装虚拟机:   需要:    yum remove  virt-viewer

virt-install --name vm01 --boot network,hd,cdrom,menu=on --ram 1024 --vcpus=1 --os-variant=rhel6 --accelerate --cdrom=/opt/iso/CentOS-6.4-x86_64-bin-DVD1.iso --disk path=/opt/kvmimg/vm01.img,size=5,bus=virtio --bridge=br0,model=virtio  --bridge=br1,model=virtio(如果是两块网卡的话需要这样写)  --autostart --vnc --vncport=5900 --vnclisten=0.0.0.0

 

******************************************** windows server 2008*********************************

@3 第三种安装方式

virt-install --name douniushizhibo --ram 4096 --vcpus=4 --os-type=windows --accelerate --cdrom=/data/Microsoft_server64_eval_zh-cn-GRMSXEVAL_CN_DVD.iso   --disk path=/data/kvm-machines/vm09/douniushizhibo.qcow2,format=qcow2,bus=ide --bridge=br0  --bridge=br1  --autostart --vnc --vncport=5928 --vnclisten=0.0.0.0

 

 

参数说明:

:虚拟机名称

ram:内存分配(M)

vcpus:虚拟cpu核数

disk:磁盘选项

:img文件路径

:磁盘大小(G)

:是否启用KVM加速器

:镜像所在路径

:GUI选项

:使用VNC作为GUI图形配置端

:vnc连接密钥

:vnc连接端口

:网络选项

:桥接网卡

:关闭交互

:指定物理机启动后自动启动该虚拟机

 

3、检查虚拟磁盘文件生成情况

 # qemu-img info kvm01.qcow2

 image: kvm01.qcow2

 file format: raw

 virtual size: 100G (85899345920 bytes)

 disk size: 6.9G

 

4、使用vnc客户端连接虚拟机安装界面:

连接串:IP:5920/******

 

5、系统安装过程:(查看以下链接)

 http://www.osyunwei.com/archives/9505.html

 

6、检查虚拟机运行情况:

 # virsh list --all

 

名称                         状态

 ----------------------------------------------------

  28    kvm01                          running

 

四、虚拟机复制

1、关闭源虚拟机

 # virsh shutdown kvm01

 

2、复制源虚拟机至目标虚拟机

 # virt-clone -o kvm01 -n kvm02 -f /app/kvm-machines/kvm02/kvm02.qcow2

 

3、使用vnc客户端连接至物理机界面,进入目标虚拟机配置,删除“显示 VNC”项目: (如果没有的话直接右键删除硬件,点overview,右键新加硬件graphics)

kvm gpu直通 一个显示器 kvm显卡直通win7_ci_02

 

4、建立新的VNC项目:

 

kvm gpu直通 一个显示器 kvm显卡直通win7_配置文件_03

 

5、启动目标虚拟机

 

# virsh start kvm02

 

6、查看kvm02状态

 

 # virsh list --all

名称                         状态

----------------------------------------------------

关闭

 30    kvm02                          running

 

进入kvm02更改主机名、IP等信息

 

8、 启动源虚拟机kvm01

 # virsh start kvm01

 

查看所有虚拟机状态:

# virsh list --all

名称                         状态

----------------------------------------------------

 28    kvm01                          running

 30    kvm02                          running

至此,虚拟机复制工作完成。

 

10、在此可以添加/etc/hosts文件

 

11、ssh  kvm01  如果不成功的话要在  vim /etc/ssh/sshd_config   中将修改

# /etc/init.d/sshd  restart 

12、如果是克隆的网卡,那么需要改变三个地方的信息:

,rm -rf /etc/udev/rules.d/70-persistent-net.rules

,vim /etc/sysconfig/network 修改主机名

,vim /etc/sysconfig/network-scripts/ifcfg-eth0  修改ip和网关关键是

            reboot

13、在有外网的物理机上可做SNAT转换

-A POSTROUTING -s 192.168.0.85/32 -j SNAT --to-source x:x:x:x(外网IP)

 

通过所配置ip进行ping操作,并ssh所有虚拟机,如均成功,说明整体KVM平台搭建配置完整。

五、回退

 

删除KVM域并清除img文件:

 

# virsh undefine kvm01

# rm -fr /app/kvm-machines/kvm01/kvm01.qcow2

 

致此。kvm搭建成功。

 

附加1: 

挂载磁盘以及修改配置文件的方法:

关机虚拟机-------------》

#   cd   /var/lib/libvirt/images

# mv ./  /data/kvm-machines/kvm01

# vim /etc/libvirt/qemu/kvm01.xml

如果是新增加的卷要修改其文件路径

<source file='/data/kvm-machines/kvm01/kvm01.qcow2'/>

 

然后重新加载配置文件

#  virsh define kvm01.xml

开机虚拟机-----------------》

利用vnc查看磁盘文件路径是/data/kvm-machines/kvm01/kvm01.qcow2

说明修改成功!

 

附加2:

命令行增加kvm虚拟机磁盘与内存:

1. qemu-img create -f raw xiaofei_new.img 200G

2.在 xiaofei.xml 文件中增加: 或者使用以下命令:
<disk type='file' device='disk'>
32 <driver name='qemu' type='raw' cache='none'/>
33 <source file='/web/repo/vmimages/wx1-kvm80/xiaofei.img'/>
34 <target dev='vdb' bus='virtio'/> ------------------------------>>>>>关键是设备 vdb不要和之前的vda重复,需要修改下
36 </disk>

# virsh attach-disk [--domin] $DOMIN [--source] $SOURCEFILE [--target] $TARGET --subdriver qcow2 --config --live
或者
virsh attach-disk xiaofei /web/repo/vmimages/wx1-kvm80/xiaofei_new.img vdb --subdriver raw --config

增加内存配置: 16777216

4.修改完配置文件之后需要重置下配置文件
virsh define /etc/libvirt/qemu/xiaofei.xml
5.virsh start xiaofei
6.fdisk -l
fdis /dev/vdb
---> n
---> p
--->1
--------回车

mkfs.ext4 /dev/vdb
7.挂载目录
预计挂载/data 目录 可以先把data下的数据备份到别地方 挂载后再把数据重新拷贝回来;
mount /dev/vdb1 /home
8.放在fstab里面
/dev/vdb1 /home/ ext4 defaults 0 0

 

附加三:

Kvm 宿主机修改关机的虚拟机网卡信息:

 

1.需要安装 virt-edit  工具:

 virt-edit -d anamm(虚拟机名称)  /etc/sysconfig/network-scripts/ifcfg-eth0

2.virsh edit 修改配置文件后自动生效  不用define    

除非是vim  配置文件才需要 define 

 

附加四:

kvm宿主机连接不上网络解决方法:

# brctl show

kvm gpu直通 一个显示器 kvm显卡直通win7_3D_04

 

br1 对应的外网网卡上是空的,意思是没有关联上,要上网是不可能的。

解决方法:

/usr/sbin/brctl addif br1 eth1

[root@wx5 ~]# brctl show

kvm gpu直通 一个显示器 kvm显卡直通win7_3D_05

 有了相应的外网网卡接口,此时: ping 114.114.114.114  可以通。

kvm 虚拟机所在的宿主机   bro------eth0   对应的 mac 地址是一样的

                                           br1------eth1   对应的 mac 地址是一样的

 

附加五、

KVM 配置透传显卡GPU ,显卡型号Tesla T4

前提条件:需要将kvm 虚拟机能够正常启动,网络正常

1.关闭虚拟机: 

virsh shutdown dengqinwen-computer-vision-10.148.11.151

2.查看宿主机显卡 

 2.1 安装lspci 工具: 

  yum install pciutils

2.2 查看显卡

>  lspci -D   |grep  NVIDIA

0000:3d:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
0000:3e:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
0000:40:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
0000:41:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
0000:b1:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
0000:b2:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
0000:b4:00.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
0000:b5:00.0

> lspci -n |grep 3d:00.0

10de:1eb8

>lspci -n |grep 3e:00.0
3e:00.0 0302: 10de:1eb8

>lspci -n |grep 40:00.0
40:00.0 0302: 10de:1eb8 (rev a1)

> lspci -n |grep 41:00.0
41:00.0 0302: 10de:1eb8 (rev a1)

> lspci -n |grep b1:00.0
b1:00.0 0302: 10de:1eb8 (rev a1)

> lspci -n |grep b2:00.0
b2:00.0 0302: 10de:1eb8 (rev a1)

> lspci -n |grep b4:00.0
b4:00.0 0302: 10de:1eb8 (rev a1)

> lspci -n |grep b5:00.0
b5:00.0 0302: 10de:1eb8

即:

> lspci  -n |grep 10de

3d:00.0 0302: 10de:1eb8 (rev a1)
3e:00.0 0302: 10de:1eb8 (rev a1)
40:00.0 0302: 10de:1eb8 (rev a1)
41:00.0 0302: 10de:1eb8 (rev a1)
b1:00.0 0302: 10de:1eb8 (rev a1)
b2:00.0 0302: 10de:1eb8 (rev a1)
b4:00.0 0302: 10de:1eb8 (rev a1)
b5:00.0 0302: 10de:1eb8 (rev a1)

 

3.修改虚拟机配置文件,增加以下内容

一共有八块显卡  0,1,2,3,4,5,6,7
   3.1. 比如使用序号 1 显卡;修改下面例子,编辑kvm 虚拟机配置文件:
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0xb4' slot='0x00' function='0x0'/>
</source>
</hostdev>

将bus='0xb4' 中的 b4 修改为: 3e
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x3e' slot='0x00' function='0x0'/>
</source>
</hostdev>

   3.2. 如果使用两块gpu (0号和3号):
bus=0x3d 和 0x41
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x3d' slot='0x00' function='0x0'/>
</source>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x41' slot='0x00' function='0x0'/>
</source>
</hostdev>

 

使用0显卡

> virsh edit dengqinwen-computer-vision-10.148.11.151  

kvm gpu直通 一个显示器 kvm显卡直通win7_配置文件_06

 

 

4. 启动虚拟机

> virsh start  dengqinwen-computer-vision-10.148.11.151 

报错:

kvm gpu直通 一个显示器 kvm显卡直通win7_3D_07

 

 

需要内核支持透传,解决方法:

查看当前启动内核

>grubby --default-kernel

/boot/vmlinuz-5.4.162-1.el7.elrepo.x86_64

 

对所有内核加上intel_iommu=on
> grubby --update-kernel=ALL --args=intel_iommu=on

 

重启系统

> reboot 

 

有返回内容,证明已经生效

>cat /proc/cmdline  |grep intel_iommu    

 

> virsh start dengqinwen-computer-vision-10.148.11.151

启动成功

 

进入虚拟机安装驱动:

kvm gpu直通 一个显示器 kvm显卡直通win7_ci_08

 

附加六、kvm 虚拟机重命名

1. virsh list --all

dengqinwen-jiqifanyi-10.147.100.153 running

2 .关闭虚拟机

virsh shutdown dengqinwen-jiqifanyi-10.147.100.153

3.导出xml 文件

cd /etc/libvirt/qemu

virsh  dumpxml    dengqinwen-jiqifanyi-10.147.100.153    >    dengqinwen-jiqifanyi-10.148.11.153.xml

4.编辑dengqinwen-jiqifanyi-10.148.11.153.xml文件

vim dengqinwen-jiqifanyi-10.148.11.153.xml

kvm gpu直通 一个显示器 kvm显卡直通win7_kvm gpu直通 一个显示器_09

 

 5.重定义

virsh undefine  dengqinwen-jiqifanyi-10.147.100.153  #删除原虚拟机

virsh define dengqinwen-jiqifanyi-10.148.11.153.xml 

6.启动虚拟机

virsh start  dengqinwen-jiqifanyi-10.148.11.153

7.再次查看

virsh list --all

dengqinwen-jiqifanyi-10.148.11.153 running