KVM 的全称 Kernel-based Virtual Machine,是指基于内核的虚拟机,它是一个 Linux 系统的一个内核模块,从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中,该内核模块可以使得 Linux 变成了一个 Hypervisor。

那什么又是 Hypervisor 呢?Hypervisor 又称虚拟机监视器(英语:virtual machine monitor,缩写为 VMM),是用来建立与执行虚拟机器的软件、固件或硬件。hypervisor 提供虚拟的作业平台来执行虚拟操作系统,而这些虚拟操作系统可以共享 Hypervisor 所在机器的硬件资源。

那接下来简单说说如何在 CentOS 操作系统中安装 KVM,并如何通过 KVM 再虚拟化创建操作系统。

基本环境

测试系统:CentOS-7.9-x86_64-Minimal-2009

yum源:可以按照自己需求用哪个 yum 源都行,具体 yum 源的配置,可以参考文章《如何搭建 yum 源私服及配置使用私服》,这里测试用的 yum 源私服。

第一步,安装 KVM 及相关软件

在 CentOS 6 中用下面的命令安装即可。

命令:yum install qemu-kvm virt-manager libvirt libvirt-python python-virtinst bridge-utils

但在 CentOS 7 中用以上命令安装时,发现提示如下信息。

No package python-virtinst available.

换了阿里云的 yum 源,也没法下载该包,通过查找,发现在 CentOS 7 中,只要按照下面命令安装即可。

命令:yum install qemu-kvm virt-* libvirt bridge-utils qemu-img

第二步,检查 KVM 是否已嵌入到 Linux 内核

在第一步操作之前,可以发现下面的命令输出为空。

命令:lsmod | grep kvm

第一步安装相关软件后,执行以上命令输出结果如下。

CentOS 6:

kvm_intel              55432  0 
kvm                   346318  1 kvm_intel

CentOS 7:

kvm_intel             188740  3 
kvm                   637289  1 kvm_intel
irqbypass              13503  3 kvm

如果按照步骤执行,没嵌入内核的话,可以手动执行命令,嵌入到 Linux 内核。命令如下:

命令1:modprobe kvm

命令2:modprobe kvm-intel

第三步,关闭防火墙,启动虚拟化服务

CentOS 6 命令如下:

默认关闭防火墙:
service iptables stop
chkconfig iptables off
chkconfig iptables --list
默认启动虚拟化:
service libvirtd start
chkconfig libvirtd on
chkconfig libvirtd --list

CentOS 7 命令如下:

默认关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
默认启动虚拟化:
systemctl start libvirtd
systemctl enable libvirtd
systemctl status libvirtd

第四步,上传测试的操作系统镜像

创建测试目录。

命令:mkdir /kvm

上传测试的操作系统镜像到该目录,这里以 CentOS-6.5-i386-minimal.iso 作为测试镜像。

切换到该目录。

命令:cd /kvm

第五步,创建测试安装盘

命令:qemu-img create -f qcow2 /kvm/centos-6.5.qcow2 10G

输出结果:Formatting '/kvm/centos-6.5.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off 

看到如上结果,说明安装盘创建成功,可以 ls -l 查看当前目录下的创建结果。

zabbix 监控 kvm虚拟机 虚拟机监控器简称_zabbix 监控 kvm虚拟机

第六步,在该安装盘上创建测试虚拟机

命令如下,注意标红部分,不要写错:

virt-install --virt-type kvm --name centos-6.5 --ram 1024 \
--vcpus 1 \
--cdrom=/kvm/CentOS-6.5-i386-minimal.iso \
--disk /kvm/centos-6.5.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6

输出结果如下:

Starting install...
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

看到如上结果,说明开始创建了。

第七步,通过 VNC 工具连接继续创建

注意,如果是第一次创建,端口默认是 5900,如果再创建一次,是 5901,以此类推。

zabbix 监控 kvm虚拟机 虚拟机监控器简称_Domain_02

连接成功后,如下:

zabbix 监控 kvm虚拟机 虚拟机监控器简称_Domain_03

剩下的安装步骤,是常规的 Linux 系统安装过程,一步步操作即可。如果不知道如何操作,可以参考文章《Windows安装CentOS系统图文教程详解》,其中 CentOS 6.5 的安装截图,完全符合这里的操作步骤,按照截图一步步操作即可。

zabbix 监控 kvm虚拟机 虚拟机监控器简称_CentOS_04

到此,KVM 的安装和简单测试已基本完成,对上面安装的测试虚拟机想操作,可以参考下面附录部分的命令。

附录:virsh 相关命令

在创建虚拟机的过程中,可以通过 virsh 命令查看虚拟机当前状态,其中 virsh 是基于 libvirt 的命令行工具。

[root@test243 kvm]# virsh
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # list --all
 Id    Name                           State
----------------------------------------------------
 1     centos-6.5                     running
 2     centos-6.5-2                   running

virsh # destroy 1
Domain 1 destroyed

virsh # destroy 2
Domain 2 destroyed

virsh # list --all
 Id    Name                           State
----------------------------------------------------
 -     centos-6.5                     shut off
 -     centos-6.5-2                   shut off

virsh # undefine centos-6.5-2
Domain centos-6.5-2 has been undefined

virsh # start centos-6.5
Domain centos-6.5 started

virsh # list --all      
 Id    Name                           State
----------------------------------------------------
 1     centos-6.5                     running

zabbix 监控 kvm虚拟机 虚拟机监控器简称_zabbix 监控 kvm虚拟机_05

剩下的登录后【玩】就行了~