当前位置:网站首页 > 容器化与Kubernetes > 正文

kvm虚拟化原理(kvm虚拟化分为哪三层)



虚拟化分类:
1、虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互相不影响,从而显著提高计算机的工作效率。

虚拟化使用软件的方法重新定义划分 IT 资源,可以实现 IT 资源的动态分配、灵活调度、跨域共享,提高 IT 资源利用率,使 IT 资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

2、虚拟化层次种类:

(1) 完全虚拟化 — 最流行的虚拟化方法使用名为 hypervisor 的一种软件,在虚拟服务器和底层硬件之间建立一个抽象层。 VMware 和微软的VirtualPC 是代表该方法的两个商用产品,而基于核心的虚拟机 (KVM) 是面向 Linux 系统的开源产品hypervisor 可以捕获 CPU 指令,为指令访问硬件控制器和外设充当中介。因而,完全虚拟化技术几乎能让任何一款操作系统不用改动就能安装到虚拟服务器上,而它们不知道自己运行在虚拟化环境下。主要缺点是, hypervisor 给处理器带来开销

(2)准虚拟化 — 完全虚拟化是处理器密集型技术,因为它要求 hypervisor管理各个虚拟服务器,并让它们彼此独立。减轻这种负担的一种方法就是,改动客户端操作系统,让它以为自己运行在虚拟环境下,能够与hypervisor 协同工作。这种方法就叫准虚拟化 (para-virtualization)Xen 是开源准虚拟化技术的一个例子。操作系统作为虚拟服务器在 Xen hypervisor 上运行之前,它必须在核心层面进行某些改变。因此, Xen 适用于 BSD 、 Linux 、 Solaris 及其他开源操作系统,但不适合对像Windows 这些专有的操作系统进行虚拟化处理,因为它们无法改动。准虚拟化技术的优点是性能高。经过准虚拟化处理的服务器可与hypervisor 协同工作,其响应能力几乎不亚于未经过虚拟化处理的服务器。准虚拟化与完全虚拟化相比优点明显,以至于微软和 VMware 都在开发这项技术,以完善各自的产品。

(3)系统虚拟化 — 就操作系统层的虚拟化而言,没有独立的hypervisor 层。相反,主机操作系统本身就负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器彼此独立。一个明显的区别是,如果使用操作系统层虚拟化,所有虚拟服务器必须运行同一操作系统 ( 不过每个实例有各自的应用程序和用户。

账户 ) 。虽然操作系统层虚拟化的灵活性比较差,但本机速度性能比较高。此外,由于架构在所有虚拟服务器上使用单一、标准的操作系统,管理起来比异构环境要容易。

(4)桌面虚拟化 — 服务器虚拟化主要针对服务器而言,而虚拟化最接近用户的还是要算的上桌面虚拟化了,桌面虚拟化主要功能是将分散的桌面环境集中保存并管理起来,包括桌面环境的集中下发,集中更新,集中管理。桌面虚拟化使得桌面管理变得简单,不用每台终端单独进行维护,每台终端进行更新。终端数据可以集中存储在中心机房里,安全性相对传统桌面应用要高很多。桌面虚拟化可以使得一个人拥有多个桌面环境,也可以把一个桌面环境供多人使用。

KVM — 全称是基于内核的虚拟机(Kernel-based Virtual Machine)
是一个开源软件,基于内核的虚拟化技术,实际是嵌入系统的一个虚拟化模块,通过优化内核来使用虚拟技术,该内核模块使得 Linux 变成了一个Hypervisor,虚拟机使用 Linux 自身的调度器进行管理。

KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU。

Linux 上的用户空间、内核空间、虚机:
Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被 KVM 置于一种受限制的 CPU 模式下运行。

KVM:运行在内核空间,提供CPU 和内存的虚级化,以及客户机的 I/O 拦截。Guest 的 I/O 被 KVM 拦截后,交给 QEMU 处理。

QEMU:修改过的为 KVM 虚机使用的 QEMU 代码,运行在用户空间,提供硬件 I/O 虚拟化,通过IOCTL /dev/kvm 设备和 KVM 交互。

4、KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。IO 的虚拟化,就交给 Linux 内核和qemu来实现。

Libvirt:是 KVM 的管理工具。Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。OpenStack 底层也使用 Libvirt。

Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh

(1)libvirtd是服务程序,接收和处理 API 请求;

(2)API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具,后面我们也会介绍;

(3)virsh 是我们经常要用的 KVM 命令行工具,后面会有使用的示例。作为 KVM 和 OpenStack 的实施人员,virsh 和 virt-manager 是一定要会用的。

虚拟化VT开启确认
KVM 本身也有一些弱点,那就是相比裸金属虚拟化架构的 Xen 、 VMware ESX 和 HyperV , KVM 是运行在 Linux 内核之上的寄居式虚拟化架构,会消耗比较多的计算资源;不过针对这一点, Intel 、 AMD 已经在处理器设计上有专门的VT-x 和 AMD-V 扩展,这种特性在每次硬件更新的时候也会更新,往往每次更新后都对虚拟化性能和速度上有明显的提升,所以长远来看,也不是什么大问题。

KVM 的虚拟化需要硬件支持(需要处理器支持虚拟化:如 Intel 厂商的 Intel-VT ( vmx )技术&&AMD 厂商的 AMD-V ( svm )技术。是基于硬件的完全虚拟化。而 Xen 早期则是基于软件模拟的半虚拟化( Para-Virtualization ),新版本则是基于硬件支持的完全虚拟化。但 Xen 本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。

知识拓展:
CPU 虚拟化给我们带来了哪些好处?

CPU 的虚拟化技术可以将单 CPU 模拟多 CPU 并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

虚拟化技术与多任务超线程的技术的区别?

虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的 CPU 或者是虚拟主机上;而超线程技术只是单 CPU 模拟双 CPU 来平衡程序运行性能,这两个模拟出来的 CPU 是不能分离的,只能协同工作。

安装环境:

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

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_nginx

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_服务器_02

1.关闭防火墙与selinux

2.安装环境依赖

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_03

3.配置环境修改网站访问并发量

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_04

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_05

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_KVM虚拟化架构架构图_06

4.kvm安装

5.启动服务,验证安装结果

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_07

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_08

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_KVM虚拟化架构架构图_09

kvm 的 web 管理界面是由 webvirtmgr 程序提供的
1.安装依赖包

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_服务器_10

用pip管理工具安装库文件时,默认使用国外的源文件,因此在国内的下载速度会比较慢,可能只有50KB/s。幸好,国内的一些顶级科研机构已经给我们准备好了各种镜像,下载速度可达2MB/s。

临时方法

#从github上下载webvirtmgr代码

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_服务器_11

#安装webvirtmgr

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_服务器_12

#检查sqlite3是否安装

2.初始化帐号信息

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_13

#拷贝web网页至指定目录

#生成密钥 首次生成直接回车,不是则Overwrite (y/n)? y 选择覆盖

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_14

#由于这里webvirtmgr和kvm服务部署在同一台机器,所以这里本地信任。如果kvm部署在其他机器,则需要更换ip

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_15

#查看端口转发

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_16

#配置nginx

#添加webvirtmgr.conf

#确保bind绑定的是本机的8000端口

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_KVM虚拟化架构架构图_17

#启动nginx

#设置supervisor

#启动supervisor并设置开机自动启动

#配置nginx用户 未创建nginx用户,所以用su命令赋予它交互式登录的权限

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_nginx_18

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_19

#web管理界面:

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_KVM虚拟化架构架构图_20

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_服务器_21

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_服务器_22

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_nginx_23

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_nginx_24

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_nginx_25

#通过远程连接软件上传ISO镜像文件至存储目录/var/lib/libvirt/images/

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_服务器_26

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_nginx_27

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_KVM虚拟化架构架构图_28

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_服务器_29

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_KVM虚拟化架构架构图_30

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_服务器_31

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_KVM虚拟化架构架构图_32

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_33

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_虚拟化_34

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_nginx_35

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_KVM虚拟化架构架构图_36

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_nginx_37

KVM虚拟化架构架构图 kvm虚拟化分为哪三层_nginx_38

接下来就是正常安装虚拟机就可以了

到此这篇kvm虚拟化原理(kvm虚拟化分为哪三层)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 启动docker容器命令(docker启动容器命令解释)2025-07-03 07:36:04
  • kvm虚拟化技术原理(简述kvm虚拟化功能特性及优缺点?)2025-07-03 07:36:04
  • docker启动容器命令解释(docker容器启动过程)2025-07-03 07:36:04
  • 启动docker 容器(docker如何启动容器)2025-07-03 07:36:04
  • kubernetes中kubelet主要功能(kubernetes的功能)2025-07-03 07:36:04
  • docker版本降级(docker容器降级)2025-07-03 07:36:04
  • kubernetes中kubelet主要功能(kubelet主要负责)2025-07-03 07:36:04
  • docker启动容器命令解释(docker 启动容器命令)2025-07-03 07:36:04
  • cruise软件汉化(cruise2019破解版安装教程)2025-07-03 07:36:04
  • k8s查看pod yaml(k8s查看pod 容器状态)2025-07-03 07:36:04
  • 全屏图片