1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > KVM虚拟化技术学习笔记2

KVM虚拟化技术学习笔记2

时间:2023-07-12 04:52:36

相关推荐

KVM虚拟化技术学习笔记2

1、虚拟机与容器对比:

2、Hypervisor管理工具对比:

3、QEMU:

软件模拟虚拟化、可以模拟多种硬件,包括X86架构处理器、AMD64架构处理器、ARM、SPARC与PowerPC、AIX架构等,效率低、一般用于研究测试场景。QEMU可以模拟一部手机,开发人员用于开发手机程序。

此处使用QEMU的主要目的是为了方便管理KVM虚拟机镜像文件。

说明:

QEMU由Fabrice Bellard编写的模拟处理器的自由软件,它是一个完整的可以单独运行的软件,可以独立模拟出整台计算机、包括CPU、内存、IO设备、通过一个特殊的“重编译器”对特定的处理器的二进制代码进行翻译,从而具有跨平台的通用性。QEMU有两种工作模式:系统模式,可以模拟出整个电脑系统,另一种是用户模式,可以运行不同与当前硬件平台的其他平台上的程序。1.0以后版本就只能使用QEMU-KVM进行加速了,1.3版本之后QEMU和QEMU-KVM合二为一了。

4、KVM:

KVM Kernel-based virtual machine 基于内核的虚拟机,KVM是虚拟机模块。

是X86架构下硬件辅助的全虚拟化的首选解决方案。

KVM需要通过修改的QEMU软件(qemu-kvm)来实现虚拟机的管理。

KVM就是内核的一个模块,用户空间通过QEMU模拟硬件提供给虚拟机使用,一台虚拟机就是一个普通的Linux进程,虚拟机中的VCPU就是该进程中的线程。

说明:

不同的基于KVM的虚拟化平台,可能会采用不同的虚拟化组件,目前主流的采用QEMU-KVM组件,但在不同的产品里版本有所不同,功能也有差异。

KVM通过调用Linux本身内核功能,实现对CPU的底层虚拟化和内存的虚拟化,使Linux内核成为虚拟化层,需要x86架构支持虚拟化功能的硬件支持(比如Intel-VT,AMD-V),是一种全虚拟化架构。

KVM在2月被导入Linux 2.6.20内核中。

从存在形式来看,它包括两个内核模块:kvm.ko和kvm_intel.ko(或者kvm_amd.ko)。本质上,KVM是管理虚拟硬件设备的驱动,该驱动使用字符设备/dev/kvm(由KVM本身创建)作为管理接口,主要负责vCPU的创建,虚拟内存的分配,vCPU寄存器的读写以及vCPU的运行。

KVM是Linux内核的模块,它需要CPU的支持,采用硬件辅助虚拟化技术Intel-VT,AMD-V,内存相关的如Intel的EPT和AMD的RVI技术Guest OS的CPU指令不用再经过Qemu转译,直接运行,大大提高了速度,KVM通过/dev/kvm暴露接口,用户态程序通过ioctl函数来访问这个接口。

总结:

1)KVM是基于内核的虚拟机

2)是内核的一个模块

3)加入linux内核,版本2.6.20

4)为虚拟机提供CPU和内核,QEMU来提供其他组件

5)通过/dev/kvm接口使用kvm模块

5、QEMU-KVM:

KVM只负责CPU和内存的虚拟化,加载它之后,用户就可以进一步通过工具创建虚拟机(KVM提供接口),但仅有KVM还是不够的,用户无法直接控制内核去做事情(kvm只提供接口,怎么创建虚拟机,分配vCPU等并不在它上面运行),还必须有个运行在用户空间的工具才行,KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,并对其进行了修改,最后形成了QEMU-KVM。

QEMU-KVM中,KVM运行在内核空间,QEMU运行在用户空间,实际模拟创建,管理各种虚拟硬件,QEMU将KVM整合起来,通过ioctl调用/dev/kvm, 从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存虚拟化,但KVM不能虚拟其他硬件设备,因此QEMU还有模拟IO设备,如磁盘、网卡、显卡等的作用,KVM加上QEMU后就是完整意义上的服务器虚拟化。当然,由于QEMU模拟IO设备效率不高的原因,现在常常采用半虚拟化的virtio方式来虚拟化IO设备。

QEMU-KVM作用:

1)提供对CPU、内存(KVM负责)、IO设备(QEMU负责)的虚拟;

2)对各种虚拟设备的创建,调用进行管理(QEMU负责)。

总结:

QEMU-KVM:

1)用户空间的虚拟化管理工具;

2)QEMU提供IO设备虚拟化及管理;

3)KVM提供CPU和内存的虚拟化

6、libvirt:

libvirt是一套免费的、开源的支持Linux下主流虚拟化管理程序的C函数库,其旨在为包括KVM在内的各种虚拟化管理程序提供一套方便、可靠的编程接口。

当前主流Linux平台上默认的虚拟化管理工具virt-manager、virsh等都是基于libvirt开发的。

说明:

一个针对各种虚拟化平台的虚拟机管理的API库,一些常用的虚拟机管理工具如virsh(类似vim编辑器),virsh-install、virt-manager等和云计算框架平台(如OpenStack、OpenNebula、Eucalyptus等)都在底层使用libvirt提供的应用程序接口。libvirt主要是由三个部分组成:API库,一个守护进程libvirtd和一个默认命令行管理工具virsh。

virt-manager、libvirt、qemu-kvm三者之间的关系:

总结:

libvirt:

1)为用户管理虚拟机提供了访问hypervisor接口

2)包含三部分:库、libvirtd、virsh命令

3)virt-manager、libvirt、qemu-kvm三者之间的关系

virt-manager通过libvirt管理qemu-kvm虚拟机。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。