一、Linux虚拟化介绍

1、虚拟化模型如下,通过虚拟化工具把cpu、内存、硬盘等真实硬件资源模拟成更少的虚拟硬件资源

Linux虚拟化介绍_第1张图片

2、为什么使用虚拟化?

硬件资源使用率最大化,独立出多台机器出来,把空闲资源利用起来

应用在云计算领域,例如:腾讯云和阿里云的vps(云计算的核心技术:虚拟化)


3、虚拟化分类

软件级别,所有的硬件(cpu、网卡、内存)通过模拟器模拟出来(qemu)

硬件级别,通过VMM(虚拟机监视器)将硬件分配和管理,操作系统运行在建立好的vm上,(xen,vmware[ESX、workstation]、kvm、virtualbox)

操作系统级别,虚拟机操作系统和宿主机操作系统共享,可以模拟上千个虚拟机出来(openvz)


4、半虚拟化(para-virtualization)/全虚拟化(full virtualization)

半虚拟化宿主机(母机)和客户机(子机)都需要修改操作系统内核,客户机知道宿主机的存在,两者需要协同合作。(Xen支持半虚拟化)


全虚拟化为客户机提供了完整的虚拟硬件资源,客户机上不需要做任何更改,它不知道宿主机存在。(KVM属于全虚拟化,vmware也是全虚拟化)


半虚拟化性能比全虚拟化性能高


5、Xen和KVM比较

不管cpu是否支持虚拟化,Xen都可以安装,而KVM必须要cpu支持虚拟化才可以安装

Xen支持半虚拟化也支持全虚拟化,KVM仅仅支持全虚拟化

安装Xen后,Xen会替换原来的内核接管系统管理。而KVM仅仅是Linux内核的一个模块,依然由系统原来的内核管理

KVM是后起之秀,历史没有Xen早,但是KVM很受欢迎,就是因为KVM不想Xen那样需要修改内核,接管内核

Xen被Ctrix收购,有商业版的Xen Server,而KVM被RedHat收购

在Xen的体系结构中,Xen Hypervisor运行于硬件之上,并且将系统资源进行了虚拟化,将虚拟化的资源分配给上层的虚拟机(VM),然后通过虚拟机VM来运行相应的客户机操作系统


二、KVM

1、KVM介绍

KVM全称kernel virtual machine,是针对包含虚拟化扩展(Intel VT或AMD-V)的x86硬件上的完全原生态的虚拟化解决方案

是以色列Qumrannet开发,基于Linux内核,2008年9月4日被Redhat收购

rhel5/centos5默认是Xen,rhel6/centos6默认是KVM


2、KVM架构

KVM驱动:作为Linux内核的一个模块,主要负责虚拟机的创建,虚拟内存的分配,VCPU寄存器的读写以及VCPU的运行

Qemu:用于模拟虚拟机的用户空间组件,提供I/O设备模型,访问外设的途径

LibVirt,virsh:由于QEMU工具效率不高,RedHat为KVM开发了辅助工具,如libvirt、libguestfs等,Libvirt是一套提供了多种语言接口的API,为各种虚拟化工具提供了一套可靠方便的编程接口,而且支持Xen。使用libvirt,你只需要通过libvirt提供的函数连接到KVM或者Xen宿主机了,便可以用同样的命令控制不同的虚拟机了。Libvirt不仅提供了APi,还自带一套基于文本的管理虚拟机命令virsh,可以通过使用virsh命令来使用libvirt的全部功能

virt-manager是一套paython编写的虚拟机管理图形界面,用户可以通过它直观地操作不通的虚拟机,利用libvirt的API实现的