【KVM】KVM介绍及功能概述

news2024/11/25 3:01:40

前言

大家好,我是秋意零。

今天介绍的内容是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性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173855.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安吉寻梦桃花原

安吉——西湖边的那片竹海 安吉县,地处浙江西北部,湖州市辖县之一,北靠天目山,面向沪宁杭。建县于公元185年,县名出自《诗经》“安且吉兮”之意。 安吉县生态环境优美宜居,境内“七山一水二分田”&#xf…

多线程与高并发实战

什么是进程? OS操作系统分配CPU资源的基础单位为进程 OS操作系统调度(执行)CPU资源的基础单位为线程 单核CPU设定多线程是否有意义? 线程数是不是设置的越大越好? 线程切换也要消耗资源 工作线程数(线程…

浅谈前端出现率高的设计模式

目录 六大原则: 23 种设计模式分为“创建型”、“行为型”和“结构型” 前端九种设计模式 一、创建型 1.构造器模式:抽象了对象实例的变与不变(变的是属性值,不变的是属性名) 2. 工厂模式:为创建一组相关或相互依赖的对象提…

普通人快速逆袭的一个路径:AI赛道+早+下场干

昨天参加去参加了一场AI峰会,几点收获: 1、要早 无界AI300万用户,2022年5月就已经入场干 黄小刀出版最早的ChatGPT书籍和最早的ChatGPT训练营 浙工大团队也是2022年最早的使用AI绘画 2、要快速下场干 最早的知道这个事情没用,…

1067 试密码

一.问题: 当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死。本题就请你实现这个小功能。 输入格式: 输入在第一行给出一个密码(长度不超过 20 的、不…

周记录总结2

1.feign注解中没有URL/服务名是错误的 导致报错:找不到服务 2.测试环境测试时,接口看不到日志,但是页面可以看到接口的返回值 说明有其他机器注册到eureka中 配置文件register 调整为false 3.there is not getter for xxxx 重新编译打个包 …

LangChain+LLM实战---实用Prompt工程讲解

原文:Practical Prompt Engineering 注:本文中,提示和prompt几乎是等效的。 这是一篇非常全面介绍Prompt的文章,包括prompt作用于大模型的一些内在机制,和prompt可以如何对大模型进行“微调”。讲清楚了我们常常听到的…

SpringSecurity6从入门到上天系列第三篇:回顾Filter以及SpringSecurity6的实现原理

文章目录 前言 1:几个核心问题 2:一个关键思考 一:回顾Filter 1:过滤器概念作用 2:过滤器核心代码 3:过滤器原理 4:过滤器链 FilterChain 二:SSC的FilterChain 1&#xff…

2019数二(二重积分的不等式问题)

注&#xff1a; 1、在相同积分区域内的积分比较大小&#xff1a;被积函数大的积分值大&#xff0c;被积函数小的积分值小 2、在区间[0&#xff0c;Π/2]上 &#xff1a;sinx < x < tanx

JS+CSS随机点名详细介绍复制可用(可自己添加人名)

想必大家也想拥有一个可以随机点名的网页&#xff0c;接下来我为大家介绍一下随机点名&#xff0c;可用于抽人&#xff0c;哈哈 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>* {margin: 0;…

前端框架Vue学习 ——(四)Axios

文章目录 Axios 介绍Axios 入门 Axios 介绍 介绍: Axios 对原生的 Ajax 进行了封装&#xff0c;简化书写&#xff0c;快速开发。&#xff08;异步请求&#xff09; 官网: https://www.axios-http.cn/ 官网介绍&#xff1a;Axios 是一个基于 promise 网络请求库&#xff0c;作…

一个很不错的开源图像库 Graphics32

Graphics32 是一个很不错的开源图像库。通过调试和跟踪Graphics32 的代码&#xff0c;可以快速的熟悉图像处理的一些知识。例外Graphics32有着很不错的性能。在不使用DirectX的情况下能达到一个惊人的速度&#xff0c;可以作为一个简单的2D引擎来使用&#xff0c;就功能上讲比那…

基于STC15单片机温度光照蓝牙传输-proteus仿真-源程序

一、系统方案 本设计采用STC15单片机作为主控器&#xff0c;液晶1602显示&#xff0c;DS18B20采集温度&#xff0c;光敏电阻采集光照、按键设置温度上下限&#xff0c;测量温度小于下限&#xff0c;启动加热&#xff0c;测量温度大于上限&#xff0c;启动降温。 二、硬件设计 …

Photoshop图片处理

工具 Photoshop剪映 步骤 打开photoshop 工具主界面 2. 导入素材图片 或者直接将图片拖入主界面 3. 双击图层&#xff0c;将背景图改为可编辑图层 4. 使用多边形套索工具勾画需要搽除的区域 5. 希望删除的区域使用多边形套索工具勾画出来后&#xff0c; 按“del”键&a…

Flutter 08 三棵树(Widgets、Elements和RenderObjects)

一、Flutter三棵树背景 1.1 先思考一些问题 1. Widget与Element是什么关系&#xff1f;它们是一一对应的还是怎么理解&#xff1f; 2. createState 方法在什么时候调用&#xff1f;state 里面为啥可以直接获取到 widget 对象&#xff1f; 3. Widget 频繁更改创建是否会影响…

手把手教程 | YOLOv8-seg训练自己的分割数据集

&#x1f680;&#x1f680;&#x1f680;手把手教程&#xff1a;教会你如何使用自己的数据集开展分割任务 &#x1f680;&#x1f680;&#x1f680;YOLOv8-seg创新专栏&#xff1a;http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8&#xff0c;从入门到创新&#xff0c;轻轻松…

基于卷尾猴算法的无人机航迹规划-附代码

基于卷尾猴算法的无人机航迹规划 文章目录 基于卷尾猴算法的无人机航迹规划1.卷尾猴搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用卷尾猴算法来优化无人机航迹规划。 1.卷尾猴…

C++入门学习(1)命名空间和输入输出

前言 在C语言和基本的数据结构学习之后&#xff0c;我们终于迎来了期待已久的C啦&#xff01;C发明出来的意义就是填补一些C语言的不足&#xff0c;让我们更加方便的写代码&#xff0c;所以今天我们就来讲一下C语言不足的地方和在C中的解决办法&#xff01; 一、命名空间 在学习…

云产品 FC 免费试用获取奖励完整步骤

文章目录 步骤 1&#xff1a;获取活动链接步骤 2&#xff1a;报名参加步骤 3&#xff1a;试用产品步骤 4&#xff1a;部署步骤 5&#xff1a;访问应用步骤 6&#xff1a;生成小说步骤 7&#xff1a;提交作品步骤 8&#xff1a;提交任务获取奖励 &#x1f389;云产品 FC 免费试用…

动态规划(Dynamic Programming)—— Java解释

一、基本思想 动态规划(Dynamic Programming)算法的核心思想是&#xff1a;将大问题划分为小问题进行解决&#xff0c;并将子问题的求解结果存储起来避免重复求解&#xff0c;从而一步步获取最优解的处理算法。 动态规划算法与分治算法类似&#xff0c;其基本思想也是将待求解…