【KVM】KVM介绍及功能概述

前言

大家好,我是秋意零。

今天介绍的内容是KVM的概述,以及它所支持的基本功能。

👿 简介

  • 🏠 个人主页秋意零
  • 🔥 账号 :全平台同名, 秋意零 账号创作者、 云社区 创建者
  • 🧑 个人介绍 :在校期间参与众多云计算相关比赛,如:🌟 "省赛"、"国赛",并斩获多项奖项荣誉证书
  • 🎉 目前状况:24 届毕业生,拿到一家私有云(IAAS)公司 offer,目前已在实习
  • 💕欢迎大家:欢迎大家一起学习云计算,走向年薪 30 万
  • 💕推广 :CSDN 主页左侧,是个人扣扣群推广 。方便大家技术交流、技术博客互助

一、KVM介绍

KVM全称是Kernel-based Virtual Machine,基于内核的虚拟机,是采用硬件虚拟化技术的全虚拟化解决方案(对于某些设备,如硬盘、网卡,KVM也支持virtio的半虚拟化方式)。

2006年10月,KVM模块的源代码被正式纳入Linux kernel,成为内核源代码的一部分。

KVM基于硬件虚拟化支持的全虚拟化实现 。它以内核模块的形式加载之后,就将Linux内核变成了一个Hypervisor ,但硬件管理等还是通过Linux kernel来完成的,所以它是一个典型的Type 2 Hypervisor

二、架构

一个KVM虚拟机对应于一个Linux进程,每个vCPU是该进程下的一个线程,还有单独的处理IO的线程,也是在该进程中的线程组内。

所以,宿主机上各个虚拟机是由宿主机内核像调度普通进程一样调度的,即可以通过Linux的各种进程调度的手段来实现不同客户机的权限限定、优先级等功能。

虚拟机所看到的硬件设备是QEMU模拟出来的 (不包括VT-d透传的设备),当虚拟机对模拟设备进行操作时,由QEMU截获并转换为对实际的物理设备(可能设置都不实际物理地存在)的驱动操作来完成。

三、功能概述

3.1 内存管理

KVM依赖Linux内核进行内存管理。上面提到,一个KVM客户机就是一个普通的Linux进程,所以,客户机的"物理内存"就是宿主机内核管理的普通进程的虚拟内存。进而,Linux内存管理的机制,如大页、KSM (Kernel Same Page Merge,内核的同页合并)、NUMA(Non-Uniform Memory Arch,非一致性内存架构)、通过mmap的进程间共享内存,统统可以应用到客户机内存管理上。

3.2 存储和客户机镜像的格式

严格来说,这是QEMU的功能特性。

KVM能够使用Linux支持的任何存储来存储虚拟机镜像,包括具有IDE、SCSI和SATA的本地磁盘,网络附加存储 (NAS) (包括NFS和SAMBA/CIFS),或者支持iSCSI和光线通道的SAN。多路径I/0可用于改进存储吞吐量和提供几余。

KVM的原生磁盘格式为QCOW2,它支持快照,允许多级快照、压缩和加密。

3.3 实时迁移

KVM支持实时迁移,这提供了在宿主机之间转移正在运行的客户机而不中断服务的能力。实时迁移对用户是透明的,客户机保持打开,网络连接保持活动,用户应用程序也持续运行,但客户机转移到了一个新的宿主机上。

除了实时迁移,KVM支持将客户机的当前状态 (快照,snapshot) 保存到磁以允许存储并在以后恢复它。

3.4 设备驱动程序

KVM支持混合虚拟化,因为KVM使用的QEMU软件模拟IO设备(网卡、磁盘、显卡),性能比较低,这个时候在虚拟机中安装使用VirtIO半虚拟化驱动来实现IO等性能的提高。

其中半虚拟化的驱动程序安装在客户机操作系统中,允许虚拟机使用优化的I/O接口而不使用模拟的设备,从而为网络和块设备提供高性能的I/0。

KVM使用的半虚拟化的驱动程序是VirtlO标准;它是一个与Hypervisor独立的、构建设备驱动程序的接口,允许多种Hypervisor使用一组相同的设备驱动程序,能够实现更好的对客户机的互操作性。

同时,KVM也支持Intel的VT-d技术,通过将宿主机的PCI总线上的设备透传(pass-through)给客户机,让客户机可以直接使用原生的驱动程序高效地使用这些设备。这种使用是几乎不需要Hypervisor的介入的。

3.5 性能和可伸缩性

KVM也继承了Linux的性能和可伸缩性。KVM在CPU、内存、网络、磁盘等虚拟化性能上表现出色,大多都在原生系统的95%以上。KVM的伸缩性也非常好支持拥有多达288个vCPU和4TB RAM的客户机,对于宿主机上可以同时运行的客户机数量,软件上无上限。

这意味着,任何要求非常苛刻的应用程序工作负载都可以运行在KVM虚拟机。

总结

通过KVM介绍,我们知道了KVM是基于内核的虚拟机,是基于硬件虚拟化辅助的全虚拟化技术,KVM的VMM层目前已经被写入到了Linux内核模块中

功能概述中,介绍了KVM的虚拟机可以安装VirtIO来提高我们IO性能。

相关推荐
阿昭L13 小时前
VMM分类
虚拟化·保护模式·vmm
真上帝的左手17 小时前
19. 大数据- 湖仓一体&BI - 阿里云实践
大数据·阿里云·云计算
小新讲网安2 天前
云安全攻防实战:AWS与阿里云渗透测试全流程指南
安全·web安全·网络安全·阿里云·自动化·云计算·aws
星野川崎2062 天前
电商多店运维:云机长期挂机频繁掉线、账号无故风控原因剖析与解决方案
大数据·运维·云计算·电商
AKAMAI3 天前
Akamai Cloud Pulse 审计日志现已全面开放使用
人工智能·云计算
workflower3 天前
智能无人机成低空经济核心赛道
运维·人工智能·机器学习·机器人·云计算·无人机
Dr.kangder3 天前
嵌入式面试总结(二十一)——C语言关键字
c语言·开发语言·面试·职场和发展·架构·虚拟化
海兰3 天前
【AI工具】腾讯云开源自研 AI 助手 Octop介绍及安装使用指南
人工智能·云计算·腾讯云
天疆说4 天前
02 API 鉴权与腾讯云公网桥接:把局域网模型服务安全地挂到域名上
安全·云计算·腾讯云
k4m7v2pz4 天前
在Arch Linux笔记本上搭建ReactOS 0.4.15虚拟机:从Mac远程开发调试Windows XP风格应用的完整指南
qemu·虚拟机·kvm·交叉编译·mingw-w64·reactos