2025年kvm虚拟化技术是什么(kvm虚拟化是什么意思)

kvm虚拟化技术是什么(kvm虚拟化是什么意思)strong 1 1 KVM Kernel based Virtual Machine 介绍 strong kvm 全称是基于内核的虚拟机 Kernel based Virtual Machine 是一个开源软件 基于内核的虚拟化技术 实际是嵌入式的一个虚拟化模块 通过优化内核来使用虚拟化技术

大家好,我是讯享网,很高兴认识大家。



<strong>1.1 KVM「Kernel-based Virtual Machine」介绍</strong></h4> 

讯享网

kvm全称是基于内核的虚拟机(Kernel-based Virtual Machine,是一个开源软件,基于内核的虚拟化技术,实际是嵌入式的一个虚拟化模块,通过优化内核来使用虚拟化技术,改内核模块使得Linux变成了一个Hypervisor。


讯享网

1.2 KVM简介

(1) kvm是以色列初创公司Qumaranet开发,2008年9月被RedHat收购;

(2) kvm是Linux内核的一个模块,它把Linux内核变成一个hypervisor;

(3) kvm是完全开源的,RedHat基于kvm的虚拟化解决方案叫做RHEV (收费);

(4) kvm在Linux操作系统里面以进程的形式出现,由标准的Linux调度程序进行调度,这使得kvm能使用Linux内核的已有功能;

(5) 只有一个kvm内核模块还不能实现虚拟化的全部功能,就好比操作系统只有内核还不能成为一个完整的操作系统一样;

(6) QEMU是一个开源的虚拟化软件,纯软件,可以虚拟化所有的硬件,但性能不强;

(7) kvm基于QEMU开发了一个能够运行在用户空间的工具QEMU-KVM;

(8) 磁盘、网络设备等都是通过QEMU-KVM这个工具模拟出来的;

(9) KVM和QEMU-KVM通信是通过/dev/kvm实现的;

(10) libvirt是用来管理KVM虚拟机的API,其命令为virsh。

1.3 什么是Libvirt?

(1) 云计算实现的三部曲:虚拟化技术实现-->虚拟机管理-->集群资源管理(云管理)。

(2) 各种不同的虚拟化技术都提供了基本的管理工具。比如,启动,停用,配置,连接控制台等。这样在构建云管理的时候就存在两个问题:

① 如果采用混合虚拟技术,上层就需要对不同的虚拟化技术调用不同管理工具,很麻烦。

② 虚拟化技术发展很迅速,系统虚拟化和容器虚拟化均在发展和演化中。可能有新的虚拟化技术更加符合现在的应用场景,需要迁移过去。这样管理平台就需要大幅改动。   

(3) 为了适应变化,我们惯用的手段是分层,使之相互透明,在虚拟机和云管理中设置一个抽象管理层。libvirt就是扮演的这个角色。有了它,上面两个问题就迎刃而解。libvirt提供各种API,供上层来管理不同的虚拟机。  

(4) Libvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。它包括一个API库,一个守护程序(libvirtd)和一个命令行工具(virsh);libvirt本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的API。

(5) libvirt的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。

1.4 Libvirt主要支持的功能

虚拟机管理:包括不同的领域生命周期操作,比如:启动、停止、暂停、保存、恢复和迁移。支持多种设备类型的热插拔操作,包括:磁盘、网卡、内存和CPU。

支持远程访问:通过在本地运行libvirt daemon,本机和远程机器,都可以访问并使用libvirt的功能。远程一般通过简单配置SSH即可。

存储管理:任何运行了libvirt daemon的主机都可以用来管理不同类型的存储,创建不同格式的文件镜像(qcow2、vmdk、raw等)、挂接NFS共享、创建LVM卷组和逻辑卷、挂接iSCSI共享等。

网络接口管理:任何运行了libvirt daemon的主机都可以用来管理物理和逻辑的网络接口。

虚拟NAT和基于路由的网络:任何运行了libvirt daemon的主机都可以用来管理和创建虚拟网络。Libvirt虚拟网络使用防火墙规则作为路由器,让虚拟机可以透明访问主机的网络。

1.5目前支持的虚拟化技术包括:

1.6Libvirt体系结构

为支持各种虚拟机监控程序的可扩展性,libvirt实施一种基于驱动程序的架构,该架构允许一种通用的API以通用方式为大量潜在的虚拟机监控程序提供服务。

讯享网镜像模式有两种,一种是全镜像模式,另一种是稀疏模式;</p> 

<strong>全镜像模式:</strong>保存了虚拟硬盘中的所有字节数据,其中㛑包括对用户而言无效的数据;raw格式就是全镜像模式。但是 qemu-img 建立的是稀疏格式模式的。</p> 

讯享网<strong>稀疏模式:</strong>只保存对用户和文件系统有效的数据,只占用必要的存储空间,这种模式的镜像文件在存放数据时使用的可能不是连续的物理磁盘空间;</p> 

<strong>创建镜像目前比较流行的格式:</strong></p> 

讯享网qcow2:只能增大,不支持缩小;性能比 raw 稍差</p> 

raw:因为实现简单,所以不支持诸如压缩、快照、加密和 CoW 等特性</p> 

讯享网<strong>RAW格式</strong></p> 

原始的磁盘镜像格式,qemu-img 默认支持的格式,它的优势在于它非常简单而且非常容易移植到其他模拟器。</p> 

讯享网raw有以下几个特点:</p> 

(1)寻址简单,访问效率高</p> 

讯享网(2)可以通过格式转换工具方便地转换为其它格式</p> 

(3)格式实现简单,不支持压缩、快照和加密</p> 

讯享网(4)能够直接被宿主机挂载,不用开虚拟机即可在宿主和虚拟机间进行数据传输</p> 

<strong>QCOW2格式</strong></p> 

讯享网qcow2是 qcow 的一种改进,是 QEMU 实现的一种虚拟机镜像格式。更小的虚拟硬盘空间(尤其是宿主分区不支持 hole 的情况下),支持压缩、加密、快照功能,磁盘读写性能较 raw 差。</p> 

cow 2:Copy On Write,写时复制<br /> <img alt="" src="https://www.os-easy.com/uploads/allimg//4-1413.png" style="width: 700px; height: 105px;" /></p> 

讯享网qcow2的数据是存储在data clusters里面的,为了能够管理这些cluster,qcow2保存了两层的Table,L1 table指向L2 Table,L2 Table管理data cluster。</p> 

<strong>2.1 qcow2的L1,L2表是干什么的?</strong></h4> 

讯享网用户把qcow2文件看成磁盘,写入数据的时候,用户给qcow2两个东西,一个是存放数据的地址,一个是要存放的数据;读出数据的时候,用户同样给qcow2两个东西,一个是要读取数据的地址,一个是读取的长度。</p> 

这中间,qcow2怎么存放这个数据,对用户来说都无所谓,只要用户取数据的时候,qcow2能根据用户传入的地址找到用户数据即可。</p> 

讯享网qcow2使用L1,L2和cluster三张表管理用户数据。cluster表中每个条目存放用户数据,L2表条目存放cluster的地址,L1表条目存放L2表的起始地址,这里的地址指的是qcow2文件内的偏移,根据这个地址可以在qcow2文件内找到用户数据。L1,L2和cluster表一起形成三级表,通过&ldquo;与操作-&gt;右移-&gt;与操作&rdquo;的算法可以索引到用户数据。</p> 

<strong>2.2 Qcow2的copy on write特性</strong></h4> 

讯享网一个qcow2镜像可以用来保存其它镜像的变化部分,从而不实际影响到原有磁盘的内容。这就是增量镜像,看着就像一个独立的镜像,其所有数据都是从模板镜像获取的。仅当clusters中的内容跟模板镜像不一样的时候,这些cluster才会被保存到增量镜像中。</p> 

增量镜像会在qcow2 header中的backing_file_offset字段指示一个字符串在qcow2文件内的偏移,该字符串是模板镜像文件的绝对路径。当要从增量镜像中读取一个cluster时,qemu会先检查这个cluster在增量镜像中有没有被分配。如果没有,则会去读模板镜像中的对应位置。</p> 

讯享网<strong>2.3 半虚拟化驱动-virtio</strong></h4> 

KVM 是必须使用硬件虚拟化辅助技术(如 Intel VT-x、AMD-V)的 hypervisor,在 CPU 运行效率方面有硬件支持,其效率是比较高的;在有 Intel EPT 特性支持的平台上,内存虚拟化的效率也较高。QEMU/KVM 提供了全虚拟化环境,可以让客户机不经过任何修改就能运行在 KVM 环境中。不过,KVM 在 I/O 虚拟化方面,传统的方式是使用 QEMU 纯软件的方式来模拟 I/O 设备(如模拟的网卡、磁盘、显卡等等),其效率并不非常高。在 KVM 中,可以在客户机中使用半虚拟化驱动(Paravirtualized Drivers,PV Drivers)来提高客户机的性能(特别是 I/O 性能)。目前,KVM 中实现半虚拟化驱动的方式是采用了virtio这个 Linux 上的设备驱动标准框架。</p> 

讯享网Virtio 半虚拟化驱动的方式,可以获得很好的 I/O 性能,其性能几乎可以达到和 native(即:非虚拟化环境中的原生系统)差不多的 I/O 性能。</p> 

缺点:Virtio 的也是有缺点的,它必须要客户机安装特定的Virtio驱动使其知道是运行在虚拟化环境中,且按照 Virtio 的规定格式进行数据传输。</p> 

小讯
上一篇 2025-05-27 18:46
下一篇 2025-05-13 15:04

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/186194.html