KVM安装部署

KVM原理简介

广义的 KVM 实际上包含两部分, 一部分是基于 LINUX 内核支持的 KVM 内核模块, 另一部分就是经过简化和修改的 Qemu。KVM 内核模块模拟处理器和内存以支持虚拟机的运行,Qemu 主要处理 I/O 以及为用户提供一个用户空间工具来进行虚拟机的管理。 两者相互结合, 相辅相成, 构成了一个完整的虚拟化平台。
请注意: Qemu 本身并不是 KVM 的一部分, Qemu 是一套完整的虚拟化解决方案, 是纯软件实现虚拟化, 包括处理器虚拟化、 内存虚拟化以及各种虚拟设备的模拟, 但因为是纯软件模拟出来的, 所以 Qemu 的性能比较低。

KVM 运行时的三种模式

客户模式

  • 可以简单理解成客户机在操作系统运行中的模式, 客户模式又分为内核模式和用户模式。

用户模式

  • 为用户提供虚拟机管理的用户空间工具以及代表用户执行 I/O, Qemu 运行在这个模式之下。

内核模式

  • 模拟 CPU 以及内存, 实现客户模式的切换, 处理从客户模式的退出。 KVM 内核模块运行在这个模式下

KVM工作原理

用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。 KVMDriver 为虚拟机创建虚拟 CPU 和虚拟内存, 然后执行 VMLAU·NCH 指令进入客户模式, 装载 Guest OS 并运行。 Guest OS 运行过程中如果发生中断或者影子缺页等异常, 将暂停 Guest OS 的运行并保存当前上下文退出到内核模式来处理这些异常。 内核模式处理这些异常时如果不需要 I/O则处理完成后重新进入客户模式。 如果需要 I/O 则进入到用户模式, 由 Qemu 来处理 I/O,处理完成后进入内核模式, 再进入客户模式

实验环境

主机名 操作系统 IP地址 主要软件
kvm Centos 7.6 192.168.7.155 KVM
test01 Centos 7.6 192.168.7.156 虚拟机

实验步骤

1、系统安装准备
安装一台Centos系统的虚拟机,cpu为双核双线程,内存8G,磁盘空间300G
2、准备KVM环境
安装完成后,关闭防火墙、核心防护功能

[root@kvm ~]# systemctl stop firewalld
[root@kvm ~]# systemctl disable firewalld
[root@kvm ~]# setenforce 0
[root@kvm ~]# vim /etc/sysconfig/selinux
SELINUX=disabled

3、设置网卡为桥接模式

[root@kvm ~]# cd /etc/sysconfig/network-scripts/
[root@kvm network-scripts]# vim ifcfg-ens33 
TYPE="Ethernet"
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="ens33"
UUID="df93b31d-59f4-4238-a7d0-0ec412070383"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE=br0

[root@kvm network-scripts]# cp -p ifcfg-ens33 ifcfg-br0
[root@kvm network-scripts]# vim ifcfg-br0 
TYPE=Bridge
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.7.155
NETMASK=255.255.255.0
GATEWAY=192.168.7.2
DNS1=8.8.8.8

[root@kvm network-scripts]# service network restart
Restarting network (via systemctl):                        [  确定  ]
[root@kvm network-scripts]# ifconfig 
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.7.155  netmask 255.255.255.0  broadcast 192.168.7.255
        · · ·
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:3e:d7:f9  txqueuelen 1000  (Ethernet)
#ping百度正常,可以连网
[root@kvm network-scripts]# ping www.baidu.com
PING www.wshifen.com (103.235.46.39) 56(84) bytes of data.
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=2 ttl=128 time=311 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=3 ttl=128 time=314 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=4 ttl=128 time=304 ms    

4、安装KVM

#安装 GNOME 桌面环境  如果装了图形界面此安装命令可以忽略
[root@kvm ~]# yum groupinstall -y "GNOME Desktop"                
[root@kvm ~]# yum -y install qemu-kvm \		//KVM 模块
qemu-kvm-tools \		//KVM 调试工具,可不安装
virt-install \			//构建虚拟机的命令行工具
qemu-img \				//qemu组件,创建磁盘、 启动虚拟机等
bridge-utils \			//网络支持工具
libvirt \				//虚拟机管理工具
virt-manager			//图形界面管理虚拟机

#查看CPU是否支持虚拟化
[root@localhost ~]# cat /proc/cpuinfo | grep vmx         
#安装完成,重启虚拟机
[root@kvm ~]# init 6
#开启libvirtd服务
[root@kvm ~]# systemctl start libvirtd
[root@kvm ~]# systemctl enable libvirtd

5、KVM管理

#centos镜像上传的目录(本文使用版本是Centos7.6)
[root@kvm ~]# mkdir -p /data_kvm/iso
#虚拟机存储目录
[root@kvm ~]# mkdir -p /data_kvm/store
#将镜像上传至镜像保存目录
[root@kvm ~]# ls /data_kvm/iso/
CentOS-7.6-x86_64-DVD-1810.iso

6、安装虚拟机
(1)在图形界面打开虚拟系统管理器,使用命令virt-manager也可调出
在这里插入图片描述
(2)创建存储卷
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)创建虚拟机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7、字符界面管理虚拟机

#查看KVM的配置文件存放目录
[root@kvm ~]# ls /etc/libvirt/qemu
autostart  centos7.0.xml  networks
#查看所有虚拟机状态
[root@kvm ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 2     centos7.0                      running
#关闭centos7.0虚拟机
[root@kvm ~]# virsh shutdown centos7.0
域 centos7.0 被关闭
[root@kvm ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     centos7.0                      关闭
#开启centos7.0虚拟机
[root@kvm ~]# virsh start centos7.0
域 centos7.0 已开始

[root@kvm ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 3     centos7.0                      running
发布了95 篇原创文章 · 获赞 197 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45682995/article/details/104957492