一、Linux虚拟化介绍
1、虚拟化模型如下,通过虚拟化工具把cpu、内存、硬盘等真实硬件资源模拟成更少的虚拟硬件资源
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实现的
本文出自 “daixuan” 博客,请务必保留此出处http://daixuan.blog.51cto.com/5426657/1742777
原文:http://daixuan.blog.51cto.com/5426657/1742777