如何配置KVM虚拟化平台
更新:HHH   时间:2023-1-7


前言

Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM已成为学术界的主流VMM之一。

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。

KVM虚拟化架构

•KVM模块直接整合在Linux内核中

KVM的组成

KVM Driver

•虚拟机创建
•虚拟机内存分配
•虚拟机CPU寄存器读写
•虚拟CPU运行 

QEMU(经过简化与修改)

•模拟PC硬件的用户控件组件
•提供I/O设备模型及访问外设的途径 

KVM虚拟化三种模式

•客户模式: 虚拟机
•用户设置: 设置
•内核模式: KVM Driver 内核态

KVM工作原理

实验操作

1、在虚拟机开机前,先在虚拟机上添加一个硬盘,并将硬盘格式化,并挂载到/data/目录下

开启虚拟机的虚拟化

[root@localhost ~]# fdisk -l

磁盘 /dev/sdb:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be35b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    12584959     6291456   83  Linux
/dev/sda2        12584960    54527999    20971520   83  Linux
/dev/sda3        54528000    62916607     4194304   82  Linux swap / Solaris
/dev/sda4        62916608    83886079    10484736    5  Extended
/dev/sda5        62918656    83886079    10483712   83  Linux
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xc2432934 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-209715199,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):
将使用默认值 209715199
分区 1 已设置为 Linux 类型,大小设为 100 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# 

[root@localhost ~]# mkfs /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214144 blocks
1310707 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Writing superblocks and filesystem accounting information: 完成   

[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/sdb1 /data/
[root@localhost ~]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda2      xfs        20G  3.3G   17G   17% /
devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs          tmpfs     1.9G  9.0M  1.9G    1% /run
tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda5      xfs        10G   37M   10G    1% /home
/dev/sda1      xfs       6.0G  174M  5.9G    3% /boot
tmpfs          tmpfs     378M   12K  378M    1% /run/user/42
tmpfs          tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1      ext2       99G   60M   94G    1% /data
[root@localhost ~]# 

2、在宿主机共享所需镜像,并挂载到虚拟机上

[root@localhost ~]# mount.cifs //192.168.100.100/tools /mnt/
Password for root@//192.168.100.100/tools:  
[root@localhost ~]# 

3、配置KVM必须环境包

[root@localhost ~]# yum groupinstall "GNOME Desktop" -y  ##安装桌面环境

[root@localhost ~]# yum install qemu-kvm  -y  ##KVM模块

[root@localhost ~]# yum install qemu-kvm-tools -y   ##KVM调试工具

[root@localhost ~]# yum install virt-install -y   ##构建虚拟机的命令行工具

[root@localhost ~]# yum install qemu-img -y   ##qemu组件,创建磁盘,启动虚拟机

[root@localhost ~]# yum install bridge-utils -y   ##网络支持工具

[root@localhost ~]# yum install libvirt -y   ##虚拟机管理工具

[root@localhost ~]# yum install virt-manager -y   ##图像化管理虚拟机

4、判断cpu是否支持虚拟化。并查看虚拟机模块

[root@localhost ~]# lsmod | grep kvm
kvm_intel             170086  0 
kvm                   566340  1 kvm_intel
irqbypass              13503  1 kvm
[root@localhost ~]# 
cat /proc/cpuinfo | grep svm   ##AMD服务器可用

cat /proc/cpuinfo | grep vmx   ##inter服务器可用

egrep '(vmx|svm)' /proc/cpuinfo   ##两者都可用

5、开启服务,并设置开机自启动

#开启服务
[root@localhost ~]# systemctl start libvirtd
#开机自启动
[root@localhost ~]# systemctl enable libvirtd

6、将所需镜像,将挂载的软件包移动到/data/目录下

[root@localhost ~]# cd /data/
#创建两个文件
[root@localhost data]# mkdir vdisk viso
#复制并调到后台运行
[root@localhost data]# cp -r /mnt/CentOS-7-x86_64-DVD-1708.iso /data/viso &
[1] 29318
[root@localhost data]# 
[1]+  完成                  cp -i -r /mnt/CentOS-7-x86_64-DVD-1708.iso /data/viso
[root@localhost data]# ls viso/
CentOS-7-x86_64-DVD-1708.iso
[root@localhost data]# 

7、配置虚拟机的桥接网卡

#进入网卡文件
[root@localhost data]# cd /etc/sysconfig/network-scripts/
#复制创建br0网卡
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-br0
#进入ens33网卡,设置桥接命令
[root@localhost network-scripts]# vim ifcfg-ens33
##末行添加
#桥接命令
BRIDGE=br0

#配置桥接网卡,将桥接网卡设置为静态的地址
[root@localhost network-scripts]# vim ifcfg-br0 
TYPE=bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.52.134
NETMASK=255.255.255.0
GATEWAY=192.168.52.1
[root@localhost network-scripts]# systemctl restart network   ##重启网卡
[root@localhost network-scripts]# ifconfig     ##查看网卡信息
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.52.134  netmask 255.255.255.0  broadcast 192.168.52.255
        inet6 fe80::69d9:68eb:e59e:c66f  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:34:07  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1274 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 29  bytes 4473 (4.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:eb:34:07  txqueuelen 1000  (Ethernet)
        RX packets 3356082  bytes 4925169168 (4.5 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 227829  bytes 18565675 (17.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

8、进入图形化管理界面

[root@localhost ~]# virt-manager

选择存储,单击选择,进入存储控制界面

选择创建新的存储池,然后输入名称

然后选择前进,然后在里边跳出的页面,单击浏览。进入下列界面

进入选择data目录下的vdisk文件夹,然后选择点击打开

退出界面后点击完成,就完成新的存储池的创建

在data上选择添加新加卷,点击进入后输入名称,并且在下边的存储卷配额上输入要分配的区间大小

跟上边一样的步骤,创建一个iso存储池,在这里选择/data/中的viso/中的/镜像,然后点击打开

然后点击完成,就完成了地址池的添加,查看创建好的存储池,创建好之后,点击文件中的关闭

点击文件,选择生成新的虚拟主机

在上述选择前进,之后,在选择要安装的系统镜像的时候,选择iso中的镜像

镜像选择完成,点击前进

分派内存的大小,一般根据自己的实际内存的大小分派

选择创建自定义存储,选择自己刚才的vdisk中创建的Centos7文件

点击选择,在安装前自定义配置,然后点击完成

在引导选项中,选择主机引导时启动虚拟机

点击开始安装,后边就跟我们安装CentOS的步骤一样了

返回云计算教程...