现在云计算吵的比较火,记得大学的时候,有些同学要租一些服务器,就到淘宝上租个阿里云啥的,挺实惠的。当初就感觉云这东西挺高端的,也不知道里面的原理是啥。其实,提到云计算,就离不开虚拟化技术,说白了,虚拟化技术就是一套解决方案,为了节约成本,才搞了个这东西出来。换一个角度说,虚拟化技术也是为了合理利用物理资源,避免物理资源的浪费。但是,要想使用虚拟化技术,有一个必要条件,就是你的硬件必须得支持虚拟化。
我们这里主要介绍x86的虚拟化技术,如果把x86平台的cpu,内存等作为资源,那么对应的虚拟化技术就是平台虚拟化,在一个x86平台上,我们可以虚拟出多个x86平台,每个虚拟化平台可以运行自己的操作系统。这里我们引入一个新的概念叫做虚拟机监控器(VMM),也叫做Hypervisor。Hypervisor是运行在物理设备上的,这个真是的物理设备叫做Host机,也叫做宿主机。而虚拟出来的平台叫做客户机。里面运行的操作系统叫做客户机操作系统。
虚拟化技术有很多,比如KVM,xen等,我们主要介绍KVM技术,xen大家有兴趣的话,可以自学一下。KVM是Kernel Virtual Machine的简称,内核虚拟机。KVM虚拟机最初是由一家以色列的创业公司开发的,作为他们的VDI产品的虚拟机。为了简化开发,KVM的开发人员没有选择从底层开始新写一个Hypervisor,而是基于Linux Kernel通过加载新的模板从而使Linux Kernel本身变为一个Hypervisor。现在KVM源代码也纳入了Linux Kernel中,成为Linux内核源代码的一部分了。在KVM架构中,虚拟机实现为常规的Linux进程,由标准的Linux调度程序进行调度。事实上,每个虚拟CPU显示为一个常规的Linux进程,这使得KVM能够享受Linux内核的所有功能。有一点需要注意,就是KVM本身不执行任何模拟,需用用户控件程序通过/dev/kvm接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的I/O,并且将它的视屏显示映射到Host机的显示屏,目前这个功能是由qemu来实现。
KVM的功能特性有一下几点:
1.内存管理
2.存储管理
3.设备驱动程序管理
4.性能和可伸缩性
关于虚拟化,我们还需要学习一个东西是libvirt,它可以说是一个软件接口,适用于大多数的虚拟化技术。并且可以对应多种语言,Java , Python等。用起来相当方便。
其实,大家可以想一想,所有的技术都想往一个方向发展,那就是接纳多元化,让其统一。以前的跨平台也就是这么一个道理。关于libvirt的学习,我们下一篇文章介绍。
以后,我会阶段性的写一些技术文章,希望能够帮助大家,同时也希望,我的文章能够成就我自己,大家多多支持我。有什么建议,可以私信我,也可以下面留言。今天就到这了。