虚拟化其实就是在电脑系统中虚拟电脑,以CentOS 8为例介绍
CentOS 8提供了虚拟化功能,它使运行CentOS 8的机器主机多个虚拟机(VM),也被称为Guest。VM使用主机的物理硬件和计算资源来运行单独的虚拟化操作系统(guest OS),KVM虚拟机作为主机操作系统上的用户空间进程。
换句话说,虚拟化使得在操作系统内具有操作系统成为可能。
虚拟化软件:
虚拟化的发展
有效利用机器资源
节约公司硬件采购成本
快速部署,减少采购流程
与使用物理机相比,使用虚拟机(VM)具有以下好处:
KVM 仅仅是 Linux 内核的一个模块。管理和创建完整的 KVM 虚拟机,需要更多的辅助工具。CentOS 8中的虚拟化包含以下主要软件组件:
管理程序
hypervisor(VMM): 在CentOS 8中创建虚拟机(VM)的基础是hypervisor,它是控制硬件并允许在主机上运行多个操作系统的软件层。
系统管理程序包括 基于内核的虚拟机 KVM 模块和虚拟化内核驱动程序,例如virtio
和vfio
。这些组件可确保主机上的Linux内核为用户空间软件提供虚拟化资源。
QEMU: 在用户空间级别,QEMU仿真器模拟可运行虚拟机操作系统的完整虚拟化硬件平台,并管理如何在主机上分配资源并将其呈现给虚拟机。
QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后
两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。
QEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件
模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真
正硬件进行操作。通过这种模式,guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB设备进行交
互。但由于所有指令都需要经过QEMU来翻译,因而性能会比较差。
KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具 QEMU-KVM。所以
Linux 发行版中分为 内核部分的 KVM 内核模块和 QEMU-KVM 工具。这就是 KVM 和 QEMU 的关系。
Libvirt、virsh、virt-manager:尽管 QEMU-KVM 工具可以创建和管理 KVM 虚拟机,RedHat 为 KVM 开发
了更多的辅助工具,比如 libvirt、libguestfs 等。原因是 QEMU 工具效率不高,不易于使用。
CentOS 8特别说明
尽管QEMU是该体系结构的重要组成部分,但出于安全考虑,它并不打算直接在CentOS 8系统上使用。因此,qemu-*
红帽不支持使用命令,强烈建议使用libvirt与QEMU进行交互。
libvirt: libvirt软件套件还充当管理和通信层,使QEMU易于与之交互,执行安全规则,并提供了许多用于配置和运行VM的其他工具。
Libvirt 是一套提供了多种语言接口的 API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持 KVM,而且
支持 Xen 等其他虚拟机。使用 libvirt,你只需要通过 libvirt 提供的函数连接到 KVM 或 Xen 宿主机,便可以
用同样的命令控制不同的虚拟机了。
Libvirt 不仅提供了 API,还自带一套基于文本的管理虚拟机的命令 virsh,你可以通过使用 virsh 命令来使用
libvirt 的全部功能。
但最终用户更渴望的是图形用户界面,这就是 virt-manager。他是一套用 python 编写的虚拟机管理图形界面,用户
可以通过它直观地操作不同的虚拟机。Virt-manager 就是利用 libvirt 的 API 实现的。
拓展-CPU分层
cpu 分为4层 ring0-ring3
0 执行特权指令
3 用户指令
ring1 vmm
XML配置
基于主机的XML配置文件(也称为域XML文件)描述了特定的VM。这包括:
组件互动
启动VM后,系统管理程序将使用XML配置来创建VM的实例,作为主机上的用户空间进程。管理程序也使得虚拟机进程访问的基于主机的接口,比如virsh
,virt-install
和guestfish
实用程序或Web控制台GUI。
使用这些虚拟化工具时,libvirt会将其输入转换为QEMU的指令。QEMU将指令传递给KVM,以确保内核适当分配执行指令所需的资源。结果,QEMU可以执行相应的用户空间更改,例如创建或修改VM,或在VM的操作系统中执行操作。
您可以使用命令行界面(CLI)或几个图形用户界面(GUI)在CentOS 8中管理虚拟化。
命令行界面
CLI是CentOS 8中管理虚拟化的最强大方法。虚拟机(VM)管理的主要CLI命令包括:
virsh start
和virsh shutdown
virsh list
virsh create
virsh
virt-install
-用于创建新VM的CLI实用程序。
virt-xml
-用于编辑VM配置的实用程序。
guestfish
-用于检查和修改VM磁盘映像的实用程序
图形界面
您可以使用以下GUI在CentOS 8中管理虚拟化:
注意
尽管CentOS 8仍支持该功能,但不赞成使用virt-manager。Web控制台打算在后续版本中替代它。因此,建议您熟悉用于
在GUI中管理虚拟化的Web控制台。