自己也没有没想会在项目中碰到这个虚拟机,自己也算是学习了!

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

在创建的过程一定要注意,除了配置要高点,一定要开启虚拟化引擎,具体如下图:

image.png

为了使用方便,我采用了centos带有图形界面的安装中。

3.2 centos7.8 配置

3.2.1 CPU虚拟化

我们首先需要确认centos7.8的CPU是否支持虚拟化。命令如下:

egrep '(vmx|svm)' /proc/cpuinfo

具体如下图:

image.png

验证CPU是否支持KVM;如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的

egrep -o 'vmx|svm' /proc/cpuinfo

具体如下图:
image.png

如果不支持,纯物理机,你就放弃吧!换台机子。如果是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

这一步,只是在我们实验中。真实生产环境,要看实际情况。

image.png

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的容器设置根文件系统。

安装完成后,就会在界面看到“虚拟系统管理器”。

image.png

image.png

3.3.2 检查kvm模块是否安装

lsmod | grep kvm

如下图:

image.png

3.3.3 启动服务

systemctl start libvirtd

systemctl enable libvirtd

systemctl status libvirtd

image.png

这样KVM虚拟机就安装成功了!

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

只有把抱怨环境的情绪,化为上进的力量,才是成功的保证!