自己也没有没想会在项目中碰到这个虚拟机,自己也算是学习了!
1.KVM简介
KVM 全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的。
KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。
那 IO 的虚拟化,比如存储和网络设备则是由 Linux 内核与Qemu来实现。
作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 外设的任务交给 Linux 内核和 Qemu。
大家在网上看 KVM 相关文章的时候肯定经常会看到 Libvirt 这个东西。
Libvirt 就是 KVM 的管理工具。
其实,Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。
Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh
- libvirtd是服务程序,接收和处理 API 请求;
- API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具;
- virsh 是我们经常要用的 KVM 命令行工具
2.KVM的整体结构
从GUI到Linux内核,包括以下五个组件:
virt-manager
一个用来管理VM的GUI/CUI用户接口;它使用libvirt api 调用VM的各种功能。
libvirt
一个工具及接口,作为较通用的服务器虚拟化软件,它支持Xen,VMware ESXi/GSX,当然,还有QEMU/KVM。
QEMU
一个和KVM内核模块交互的模拟器,处理多种客户机系统请求如I/O;一个QEMU进程对应一个客户机系统。
KVM内核模块
从狭义上来说,KVM是一个Linux内核模块,处理客户机系统的VM Exits和执行VM Entry指令。
Linux内核
既然QEMU作为一个普通的用户进程运行,相应客户机系统的调度就由Linux内核自己来处理。
所有的组件都是开放源码软件(OSS)。
3.搭建KVM
我的搭建环境采用centos7.8+KVM,在自己的电脑使用vmware虚拟机虚拟centos7.8,然后再安装KVM。
3.1 vmware虚拟机创建centos7.8
在创建的过程一定要注意,除了配置要高点,一定要开启虚拟化引擎,具体如下图:
为了使用方便,我采用了centos带有图形界面的安装中。
3.2 centos7.8 配置
3.2.1 CPU虚拟化
我们首先需要确认centos7.8的CPU是否支持虚拟化。命令如下:
egrep '(vmx|svm)' /proc/cpuinfo
具体如下图:
验证CPU是否支持KVM;如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的
egrep -o 'vmx|svm' /proc/cpuinfo
具体如下图:
如果不支持,纯物理机,你就放弃吧!换台机子。如果是vmware虚拟机就要确认上面那张图上的虚拟化引擎有没有选上!
3.2.2 关闭防火墙和selinux
关闭防火墙
systemctl stop firewalld.service //关闭防火墙
systemctl disable firewalld.service //永久关闭防火墙
关闭selinux
setenforce 0 //暂时关闭selinux
sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config //永久关闭selinux
这一步,只是在我们实验中。真实生产环境,要看实际情况。
3.3 部署kvm
3.3.1 安装kvm软件
yum -y install qemu-kvm qemu-img qemu-kvm-tools
yum -y install libvirt libguestfs-tools libvirt-python libvirt-client
yum -y install virt-manager virt-install virt-viewer python-virtinst bridge-utils
- qemu-kvm:qemu模拟器
- qemu-img:qemu磁盘image管理器
- libvirt:提供libvirtd daemon来管理虚拟机和控制hypervisor
- libvirt-client:提供客户端API用来访问server和提供管理虚拟机命令行工具的virsh实体
- libguestfs-tools : 虚拟机磁盘管理工具
- bridge-utils: 创建网桥并实现网络连接
- python-virtinst: CLI 下创建 KVM 的工具
关于virt-manager的支持工具
- virt-install是一个命令行工具,它提供了一种将操作系统置备到虚拟机中的简便方法。
- virt-viewer是一个轻量级的UI界面,用于与虚拟化Guest OS的图形显示进行交互。它可以显示VNC或SPICE,并使用libvirt查找图形连接详细信息。
- virt-clone是用于克隆现有非活动客户机的命令行工具。它复制磁盘映像,并使用新名称,UUID和指向复制的磁盘的MAC地址定义配置。
- virt-xml是用于使用virt-install的命令行选项轻松编辑libvirt域XML的命令行工具。
- virt-bootstrap是一个命令工具,提供了一种简单的方法来为基于libvirt的容器设置根文件系统。
安装完成后,就会在界面看到“虚拟系统管理器”。
3.3.2 检查kvm模块是否安装
lsmod | grep kvm
如下图:
3.3.3 启动服务
systemctl start libvirtd
systemctl enable libvirtd
systemctl status libvirtd
这样KVM虚拟机就安装成功了!
评论区