一、 KVM概述

KVM 即 Kernel-based Virtual Machine 基于内核的虚拟机。
KVM,是一个开源的系统虚拟化模块,自 Linux 2.6.20 之后集成在 Linux 的各个主要发行版本中。它使用 Linux 自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM 目前已成为学术界的主流 VMM(虚拟机监控器)之一。KVM 的虚拟化需要硬件支持(如 Intel VT 技术戒者 AMD V 技术)。是基于硬件的完全虚拟化。而 Xen 早期则是基于软件模拟的 Para-Virtualization。

KVM: 是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。是第一个整合到 Linux内核的虚拟化技术。在 KVM 模型中,每一个虚拟机都是一个由 Linux 调度程序管理的标准进程,你可以在用户空间启动客户机操作系统。
一个普通的 Linux 进程有两种运行模式:内核和用户。 KVM 增加了第三种模式:客户模式(有自己的内核和用户模式)
XEN :需要升级内核,只能支持和物理机系统一样的操作系统。 xen 虚拟上,可以运行 windows ?
KVM: 支持 linux 以外的其它系统。比如:windows
QEMU:是一套由 Fabrice Bellard 所编写的以 GPL 许可证分发源码的模拟处理器,在 GNU/Linux平台上使用广泛。QEMU 具有高速度和跨平台的特性,QEMU 能模拟至接近真实电脑的速度。
QEMU 能模拟整个电脑系统,包括中央处理器及其他周边设备。
QEMU 和 vmware 一样都是支持仿真虚拟化,效率比较低。

二、 搭建KVM虚拟化

1、 KVM虚拟化硬件资源
建议CPU是4核,内存至少4GB,在原有硬盘的基础上增加一块硬盘,作为存放镜像文件或KVM虚拟机存储使用。
KVM虚拟化图形化界面是基于Linux图形化界面的基础上才能使用,所以如果要使用KVM虚拟化图形化操作界面,必须Linux系统有安装图形化界面才可以使用。

VMware虚拟机安装需要开启如下功能:

kvm虚拟化方案 虚拟化 kvm xen_kvm虚拟化方案

2、 实验环境
主机名 IP地址 作用
xuegod110 192.168.1.110 KVM服务器

3、 安装KVM虚拟机
1) 最小化安装的Linux系统,安装图形化界面

[root@xuegod110 ~]# yum –y groupinstall “X Window System”
 [root@xuegod110 ~]# yum –y groupinstall “GNOME Desktop” “Graphical Administration Tools”

2) 安装KVM模块、管理工具和libvirt

[root@xuegod110 ~]# yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python –y


注:使用系统镜像,先配置好 yum 本地源
注:
qemu-kvm : kvm 主程序, KVM 虚拟化模块
virt-manager: KVM 图形化管理工具
libvirt: 虚拟化服务
libguestfs-tools : 虚拟机的系统管理工具
virt-install : 安装虚拟机的实用工具 。比如 virt-clone 克隆工具就是这个包安装的
libvirt-python : python 调用 libvirt 虚拟化服务的 api 接口库文件

3) 查看安装的KVM服务

[root@xuegod110 ~]# systemctl start libvirtd #启动服务
 [root@xuegod110 ~]# systemctl enable libvirtd #开机启动
 [root@xuegod110 ~]# systemctl is-enabled libvirtd #查看是否开机启动
 enabled

4) 确认模块是否加载

[root@xuegod110 ~]# lsmod | grep kvm #CPU虚拟化一定要打开

kvm虚拟化方案 虚拟化 kvm xen_KVM虚拟化搭建_02

5) 修改语言环境

[root@xuegod110 ~]# echo $LANG
 en_US.UTF-8
 [root@xuegod110 ~]# LANG=‘zh_CN.UTF-8’
 [root@xuegod110 ~]# echo $LANG
 zh_CN.UTF-8


6) 配置KVM网络桥接功能
网桥介绍: 我们经常所说的 Bridge 设备其实就是网桥设备,也就相当于现在的二层交换机,用于连接同一网段内的所有机器,所以我们的目的就是将网络设备 eth0 添加到 br0,此时 br0 就成为了所谓的交换机设备,我们物理机的 eth0 也是连接在上面的。

安装网桥设备工具

[root@xuegod110 ~]# yum -y install bridge-utils


##默认系统一般都会安装

把ens33绑定到br0设备上

[root@xuegod110 ~]# cd /etc/sysconfig/network-scripts/
 [root@xuegod110 network-scripts]# cp ifcfg-ens33 /tmp/ #备份配置为文件
 [root@xuegod110 network-scripts]# vim ifcfg-ens33 #编辑网卡配置文件
 TYPE=Ethernet
 PROXY_METHOD=none
 BROWSER_ONLY=no
 BOOTPROTO=none
 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=c713acec-674b-411d-9e61-646482a292ca
 DEVICE=ens33


IPADDR=192.168.1.110 #这些加粗内容需要删除

NETMASK=255.255.255.0
 GATEWAY=192.168.1.1
 DNS1=202.106.46.151
 ONBOOT=yes
 IPV6_PRIVACY=no
 PEERDNS=no
 BRIDGE=“br0” #在文件最后添加一行内容

生成桥设备的配置文件

[root@xuegod110 network-scripts]# vim ifcfg-br0 #添加如下内容
 DEVICE=“br0”
 NM_CONTROLLED=“yes”
 ONBOOT=“yes”
 TYPE=“Bridge”
 BOOTPROTO=none
 IPADDR=192.168.1.110
 NETMASK=255.255.255.0
 GATEWAY=192.168.1.1
 DNS1=192.168.1.1

重启网络服务

[root@xuegod110 network-scripts]# systemctl restart network

查看IP信息

kvm虚拟化方案 虚拟化 kvm xen_KVM虚拟化搭建_03

查看桥接的信息

[root@xuegod110 ~]# brctl show

kvm虚拟化方案 虚拟化 kvm xen_KVM图形化管理创建虚拟机_04

7) 使用LVM图形化界面创建虚拟机

[root@xuegod110 ~]# virt-manager

注:使用xshell连接KVM调用图形化界面,必须要安装x-manager软件,让xshell可以调用x-manager的图形化界面程序显示。

如果使用centos系统自带的图形化界面,可以直接调用。

如果xshell调用不出来,将如下选项开启即可

kvm虚拟化方案 虚拟化 kvm xen_KVM图形化管理创建虚拟机_05

执行KVM图形化管理工具

[root@xuegod110 ~]# virt-manager

kvm虚拟化方案 虚拟化 kvm xen_KVM常用命令_06

三、 使用图形化界面创建一台KVM虚拟机

1、 将添加的硬盘分区

[root@xuegod110 ~]# ls /dev/sd*
 /dev/sda /dev/sda1 /dev/sda2 /dev/sdb
 [root@xuegod110 ~]# fdisk /dev/sdb


欢迎使用 fdisk (util-linux 2.23.2)。

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

Device does not contain a recognized partition table


使用磁盘标识符 0xe5acdfc3 创建新的 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.


正在同步磁盘。

2、 格式化分区

[root@xuegod110 ~]# mkfs.xfs /dev/sdb1

kvm虚拟化方案 虚拟化 kvm xen_KVM常用命令_07

3、 挂载分区
将新的硬盘挂载到KVM的目录下

[root@xuegod110 ~]# mount /dev/sdb1 /var/lib/libvirt/images/

将挂载信息写入到fstab文件,实现开机启动挂载分区

[root@xuegod110 ~]# echo “/dev/sdb1 /var/lib/libvirt/images/ xfs defaults 0 0” >> /etc/fstab

4、 上传centos7.5的镜像文件到挂载目录

kvm虚拟化方案 虚拟化 kvm xen_KVM图形化管理创建虚拟机_08


kvm虚拟化方案 虚拟化 kvm xen_KVM常用命令_09


5、 创建虚拟机

[root@xuegod110 ~]# virt-manager

在弹出的界面中,选择QEMU/KVM,右键选择NEW

kvm虚拟化方案 虚拟化 kvm xen_KVM虚拟化搭建_10

选择本地介质安装系统

kvm虚拟化方案 虚拟化 kvm xen_虚拟化_11

选择系统镜像

kvm虚拟化方案 虚拟化 kvm xen_kvm虚拟化方案_12


选择内存和CPU

kvm虚拟化方案 虚拟化 kvm xen_KVM图形化管理创建虚拟机_13

分配硬盘大小

kvm虚拟化方案 虚拟化 kvm xen_KVM图形化管理创建虚拟机_14

选择配置后在开始安装,并选择网卡

kvm虚拟化方案 虚拟化 kvm xen_kvm虚拟化方案_15


调整启动顺序

kvm虚拟化方案 虚拟化 kvm xen_KVM常用命令_16

选择显示选择

类型修改为VNC,键盘类型简则en-us,不然安装虚拟机过程中鼠标和键盘都无法使用。

kvm虚拟化方案 虚拟化 kvm xen_KVM虚拟化搭建_17

配置完毕,选择开始安装即可

kvm虚拟化方案 虚拟化 kvm xen_虚拟化_18


不再详细说明具体安装系统的步骤,可在网上找相关配置文档。

四、 KVM常用的命令

1、 列出运行中的虚拟机

[root@xuegod110 ~]# virsh list

kvm虚拟化方案 虚拟化 kvm xen_虚拟化_19


2、 启动kvm虚拟机

[root@xuegod110 ~]# virsh start centos7.0

kvm虚拟化方案 虚拟化 kvm xen_虚拟化_20


因为已经启动了,所以提示域活跃中

3、 关闭虚拟机

[root@xuegod110 ~]# virsh shutdown centos7.0

4、 设置开机启动

[root@xuegod110 ~]# virsh autostart centos7.0

kvm虚拟化方案 虚拟化 kvm xen_KVM虚拟化搭建_21

5、 查看KVM是否开机启动

[root@xuegod120 ~]# chkconfig --list libvirtd #开机启动了
 libvirtd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

五、 解决centos6系统上shutdown关不了虚拟机的问题

1、 解决方法
在安装好的 KVM 的 Linux 虚拟机中安装并启动 acpid 服务
virsh shutdown 命令使用发送 acpi 指令来控制虚拟机的电源,
而 kvm 虚拟机最小化安装的 centos6 系统时默认是没有安装 acpi 服务的,所以并不会处理shutdown 发来的关机信号。 在 centos7 最小化安装的 linux 系统上有安装 acpid 服务。
只需要在虚拟机里安装和启劢 acpid 服务即可。
做一件事: 安装 acpid 服务 -》 yum 源

[root@localhost yum.repos.d]# yum install acpid -y
 [root@localhost yum.repos.d]# service acpid start //启动 acpic 服务,
 [root@localhost yum.repos.d]# chkconfig --list acpid
 acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off //安装后默认会加入到开机

启动的
在 xuegod120 KVM 真机上测试:

[root@xuegod120 ~]# virsh shutdown rhel6-71 #关闭 rhel6-71 虚拟机