首先说下云计算和虚拟机的关系:
云计算有的时候可能大家会把云计算和虚拟化混淆在一起是不是虚拟化就是云计算了。?其实企业只有虚拟化肯定还不能说是云计算,但一般的虚拟化是云计算的第一步,那么怎么样才能称之为云计算呢?
就是包括有一定的管理流程和资源的一个动态分配。如过去三台服务器,现在整合在一台服务器上那么这是虚拟化、这确实是叫云计算。因为云计算有一些特点比如多租户、资源动态分配、弹性等等。怎么样从虚拟化过渡到云计算一定是在虚拟化的基础上加上一个比较完善的管理。
其次是全虚拟化和半虚拟化:
FV:是指系统完全看不到真实的硬件,而是只能使用由Supervisor所提供的所有虚拟硬件,通常不用重新编译内核。
PV:是指当操作系统默认支持XEN时就可以通过XEN的机制,直接使用到底层的硬件,而不是每个OS都要通过Hypervisor的接口,性能上就可大为提高,但常常要编译内核。
另外,个人觉得,FV也可分为两类,一类是Supervisor在操作系统内核中实现,这样它可以直接访问硬件,像kvm,但有需要CPU VTX支持;而另一类是Supervisor作为操作系统上的应用程序存在,它也就只能通过操作系统访问硬件,速度较慢,像qemu。
从底层讲,虚拟机的两重实现方式,一类是在硬件是加一些接口,如寄存器,这样在多个操作系统运行时,可通过所加的寄存器识别是哪个系统,然后调用相应的资源,另一类则是,不改变硬件,通过操作系统,用软件方式判断其对应系统的程序地址。这样前者是FV,后者是PV。
kvm与QEMU关系:
kvm只是一个内核模块,要运行操作系统,就得有一个用户层的调用程序,这一块kvm 没有自己来做,而是应用qemu的上层i/o访问,见图,而又由于qemu有太多对于kvm没有用的东西,于是做了一些修改和裁剪之后,就有了qemu-kvm,因此安装时在加载kvm与kvm-intel/kvm-amd后,只需安装qemu-kvm即可。