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_intelCentOS 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 查看当前目录下的创建结果。
第六步,在该安装盘上创建测试虚拟机
命令如下,注意标红部分,不要写错:
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,以此类推。
连接成功后,如下:
剩下的安装步骤,是常规的 Linux 系统安装过程,一步步操作即可。如果不知道如何操作,可以参考文章《Windows安装CentOS系统图文教程详解》,其中 CentOS 6.5 的安装截图,完全符合这里的操作步骤,按照截图一步步操作即可。
到此,KVM 的安装和简单测试已基本完成,对上面安装的测试虚拟机想操作,可以参考下面附录部分的命令。
附录:virsh 相关命令
在创建虚拟机的过程中,可以通过 virsh 命令查看虚拟机当前状态,其中 virsh 是基于 libvirt 的命令行工具。
[root@test243 kvm]# virsh
Welcome to virsh, the virtualization interactive terminal.Type: 'help' for help with commands
'quit' to quitvirsh # list --all
Id Name State
----------------------------------------------------
1 centos-6.5 running
2 centos-6.5-2 runningvirsh # destroy 1
Domain 1 destroyedvirsh # destroy 2
Domain 2 destroyedvirsh # list --all
Id Name State
----------------------------------------------------
- centos-6.5 shut off
- centos-6.5-2 shut offvirsh # undefine centos-6.5-2
Domain centos-6.5-2 has been undefinedvirsh # start centos-6.5
Domain centos-6.5 startedvirsh # list --all
Id Name State
----------------------------------------------------
1 centos-6.5 running
剩下的登录后【玩】就行了~