虚拟化技术介绍
虚拟化包含多个层面,比如硬件虚拟化(从底层的硬件平台直接支持软件环境,又称为平台虚拟化),操作系统虚拟化(在硬件之上,独立于操作同的一层软件成为hypervisor,hypervisor创建虚拟化平台,操作系统实例运行在这个平台上,这使得硬件平台可以被多个操作系统和应用所共享)。
Linux虚拟化技术术语:
模拟(emulation):将一个操作系统(host)的服务转换并显示成另一个操作系统(Guest)的过程。Host和Guest可以是不同的,比如,Host是x86平台,可以提供PowerPC的模拟,
Linux上两种轻便的模拟器:QEMU和Bochs 用于模拟虚拟化。
优点:可以在不同的host操作系统上和平台上运行不同的Guest操作系统
缺点:由于要模拟指令,导致效率比较低。
Linux上面的两个重要的虚拟化解决方案:
Citrix的Xen,可以同时执行Type1和Type2型的hypervisor,Amazon的EC2就是采用Xen来进行服务器的虚拟化的。
Linux Kernel Virtual Machine(KVM),由RedHat 开发,集成到主线内核中去了。
无论是完全虚拟化,还是半虚拟化,都需要底层硬件协助虚拟化(Intel的 VT 和AMD的SVM)
KVM工作原理:通过简单的加载一个内核模块,导出一个/dev/kvm的设备,同时将原有的Linux内核转换为一个系统管理程序(新内核)。KVM可以启动新内核的客户模式(旧内核有用户模式和内核模式)。有了/dev/kvm设备,VM使自己的地址空间独立于内核或者运行着的任何其他VM的地址空间。
使用方法:安装KVM后,可以在用户空间启动客户操作系统,由kvm工具来操作kvm模块,通过/dev/kvm来加载客户操作系统。每个客户操作系统都是主机操作系统的一个单个进程。
内存使用KVM进行虚拟化,IO通过一个稍加修改的qemu进程进行虚拟化。KVM提供了客户模式,用来执行由KVM加载的操作系统中,非IO部分的代码。
客户操作系统有两个模式,客户模式(非IO操作)和用户模式(IO操作,由qemu提供。)
使用指南:
KVM的内核配置在Device Driver上-->Virtualization,启动处理器对环境的支持,具有kvm和qemu的用户空间应用程序。
操作系统虚拟化
对操作系统本身进行虚拟化。操作系统提供一组用户空间的彼此隔离,每个应用被限制在每个用户空间里面。
参考链接:
虚拟化相关介绍 http://xjsunjie.blog.51cto.com/999372/1322646
笑遍世界的KVM学习博客 :http://smilejay.com/