首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
虚拟化与KVM介绍
KVM部署及应用-宿主机设置
CentOS 8 VNC远程桌面
KVM虚拟化部署
KVM 应用-创建虚拟机
KVM 虚拟机系统安装
KVM虚拟机管理
KVM-虚拟机克隆
KVM控制台连接
KVM虚拟机网络设置
KVM虚拟机热扩容
KVM虚拟机迁移
当前位置:
首页>>
技术小册>>
虚拟化之KVM实战
小册名称:虚拟化之KVM实战
## 一、什么是虚拟化? **虚拟化其实就是在电脑系统中虚拟电脑**,以CentOS 8为例介绍 CentOS 8提供了虚拟化功能,它使运行CentOS 8的机器*主机*多个虚拟机(VM),也被称为Guest。VM使用主机的物理硬件和计算资源来运行单独的虚拟化操作系统(*guest OS*),KVM虚拟机作为主机操作系统上的用户空间进程。 换句话说,虚拟化使得在操作系统内具有操作系统成为可能。 **虚拟化软件:** - VMware workstation-vmware - KVM-redhat - vbox-oracle ![](/uploads/images/20231230/d060dac9260728daf2b5b8717d2a5962.png) **虚拟化的发展** 1. 仿真虚拟化:早期VMware,对系统硬件没有要求,性能最低。 2. 半虚拟化:xen,虚拟机可以使用真机物理硬件,性能高,需要改内核 3. 硬件辅助虚拟化:vmware kvm - 需要硬件支持 [cpu 主板] - 不需要改内核 - 可以直接使用真机硬件,性能可达到真机的95% 4. 容器:docker ## 二、为什么需要虚拟化 有效利用机器资源 节约公司硬件采购成本 快速部署,减少采购流程 ## 三、虚拟化的优势 与使用物理机相比,使用虚拟机(VM)具有以下好处: - **灵活细粒度的资源分配** VM在通常是物理主机的主机上运行,并且也可以分配物理硬件供VM OS使用。但是,向VM分配物理资源是在软件级别完成的,因此非常灵活。VM使用主机内存,CPU或存储空间的可配置部分,并且该配置可以指定非常细粒度的资源请求。 例如,vm OS看作为其磁盘的内容可以表示为主机文件系统上的文件,并且该磁盘的大小受约束的程度小于物理磁盘的可用大小。 - **软件控制的配置** VM的整个配置将作为数据保存在主机上,并且受软件控制。因此,可以轻松地创建,删除,克隆,迁移,远程操作或连接到远程存储的VM。 - **与主机分离** VM OS在与主机OS分开的虚拟化内核上运行。这意味着任何操作系统都可以安装在VM上,即使VM操作系统变得不稳定或受到威胁,主机也不会受到任何影响。 - **节省空间和成本** 一台物理计算机可以承载大量VM。因此,它避免了需要多个物理机器执行相同的任务,从而降低了与物理硬件相关联的空间,功耗和维护要求。 - **软件兼容性** 由于VM可以使用与其主机不同的OS,因此虚拟化可以运行最初未为主机OS发布的应用程序。例如,使用CentOS 6 guest虚拟机操作系统,可以在CentOS 8主机系统上运行为CentOS 6发布的应用程序。 ## 四、KVM介绍 KVM 仅仅是 Linux 内核的一个模块。管理和创建完整的 KVM 虚拟机,需要更多的辅助工具。CentOS 8中的虚拟化包含以下主要软件组件: ### 4.1、虚拟机组件及其交互 **管理程序** **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分层** ![](/uploads/images/20231230/a3a4b29e927cdc314b44b8ae9b987076.png) ``` cpu 分为4层 ring0-ring3 0 执行特权指令 3 用户指令 ring1 vmm ``` **XML配置** 基于主机的XML配置文件(也称为*域XML*文件)描述了特定的VM。这包括: - 元数据,例如VM的名称,时区以及有关VM的其他信息。 - VM中的设备的描述,包括虚拟CPU(vCPUS),存储设备,输入/输出设备,网络接口卡以及其他实际和虚拟硬件。 - VM设置,例如它可以使用的最大内存量,重新启动设置以及有关VM行为的其他设置。 **组件互动** 启动VM后,系统管理程序将使用XML配置来创建VM的实例,作为主机上的用户空间进程。管理程序也使得虚拟机进程访问的基于主机的接口,比如`virsh`,`virt-install`和`guestfish`实用程序或Web控制台GUI。 使用这些虚拟化工具时,libvirt会将其输入转换为QEMU的指令。QEMU将指令传递给KVM,以确保内核适当分配执行指令所需的资源。结果,QEMU可以执行相应的用户空间更改,例如创建或修改VM,或在VM的操作系统中执行操作。 ### 4.2、CentOS 8虚拟化架构 ![](/uploads/images/20231230/ca7124f3dfd5be16eab892794a069123.png) ## 五、虚拟化管理的工具 您可以使用命令行界面(CLI)或几个图形用户界面(GUI)在CentOS 8中管理虚拟化。 **命令行界面** CLI是CentOS 8中管理虚拟化的最强大方法。虚拟机(VM)管理的主要CLI命令包括: - **virsh-** 通用的虚拟化命令行实用程序和shell,具有多种用途,具体取决于提供的参数。例如: - 启动和关闭VM- `virsh start`和`virsh shutdown` - 列出可用的VM- `virsh list` - 从配置文件创建VM- `virsh create` - 进入虚拟化命令行- `virsh` - `virt-install`-用于创建新VM的CLI实用程序。 - `virt-xml` -用于编辑VM配置的实用程序。 - `guestfish`-用于检查和修改VM磁盘映像的实用程序 **图形界面** 您可以使用以下GUI在CentOS 8中管理虚拟化: - 所述**CentOS 8 web控制台**,也称为*驾驶舱*,提供了一种远程访问和易于使用的图形用户界面,用于管理虚拟机和虚拟化主机。 - Virtual Machine Manager(**virt-manager**)应用程序提供了用于管理VM和虚拟化主机的专用GUI。 ``` 注意 尽管CentOS 8仍支持该功能,但不赞成使用virt-manager。Web控制台打算在后续版本中替代它。因此,建议您熟悉用于 在GUI中管理虚拟化的Web控制台。 ```
下一篇:
KVM部署及应用-宿主机设置
该分类下的相关小册推荐:
云计算那些事儿:从IaaS到PaaS进阶(三)
人人都会用的宝塔Linux面板
架构师成长之路
etcd基础入门与实战
云计算Linux基础训练营(下)
高并发系统设计核心
Linux性能优化实战
Ansible自动化运维平台
MySQL数据库实战
从 0 开始学架构
IM即时消息技术剖析
Linux内核技术实战