一、虚拟化概论
VMM(Virtual Machine Monitor,虚拟机监控器)它包括规划、部署、管理和优化虚拟基础结构等端到端功能,传统的VMM建立在操作系统之上,但是操作系统本身除了作为VMM的承载之外并没有其他作用,所以,为了更加节约资源,去掉了操作系统由VMM来直接取代。就是我们看到了VMM hypervisor。
Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。
Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisors不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。
主流的Hypervisor:VMware的ESXi、微软的Hyper-V或者思杰的XenServer。
CPU虚拟化:
硬件虚拟化(HVM)是在半虚拟化发展后提出的一种解决虚拟化性能的方法,主要就是在cpu上增加了一个RING,然后实现guestVM工作在ring0上的方法。
两大CPU厂商各自提出了自己的方法,INTEL提出了VT-X,而AMD公司使用的是CPU的AMD-V技术。
内存虚拟化:
通过在VMM上添加MMU模块,实现将guestvm的线性地址(内存)通过VMM的MMU来进行转换成实际地址,并返回给guestvm,并且在TLB上添加标签的方式避免不同guestvm之间的地址冲突。
XEN虚拟机的一般工作方式:
XEN宿主机负责管理物理硬件的cpu,中断、内存,并且自身仅仅是一个内核并不能直接被用户操作,需要一个dom0这样的虚拟机,dom0完成远程登录管理xen和管理其他虚拟机的功能,并且其他虚拟机的调用cpu、内存、中断是通过xen来完成的,而调用硬盘,io则是通过dom0来完成的。
KVM
kvm实际上就是接替qemu的一个虚拟化软件,其实就是linux自身的一个模块,当linux加载这个模块后,linux就变成了”VMM”,实现了虚拟机管理器的功能,在此的用户空间创建guestos,此时的guestos就是“VMM”的一个进程,可以随意的kill掉。所以kvm是完全硬件化的虚拟管理器。