考虑到大家可能在选择vps时对一些技术知识不是很了解,可能会影响判断,我整理出了一些虚拟化技术的知识:
实现一台虚拟服务器(VPS)的主流的虚拟化技术分为3种:
1、全虚拟化:如vmware
2、半虚拟化:如xen
3、操作系统虚拟化:如Virtuozzo、OpenVZ,OpenVZ是开源的,而Virtuozzo是它的商业版。
其中1和2都是虚拟硬件模式,是真正意义上的虚拟化技术,通过虚拟一套完整的硬件,这一套完整的硬件具有超强的兼容能力,在这个虚拟层上可以运行各种不同的操作系统平台。半虚拟化需要修改宿主操作系统的内核,因此比全虚拟化有更好的性能。现在的趋势是vmware在发展半虚拟化的技术,而xen也在发展全虚拟化的技术。而操作系统虚拟化事实上不是真正意义上的虚拟化技术,但由于能够达到类似的功能,也把它归为其中。操作系统虚拟化技术要求虚拟机和宿主服务器上使用同一个操作系统,通过拦截虚拟机的操作来实现隔离,也就是说在windows下只能再虚拟windows,linux下只能再虚拟linux,虚拟安装一个的操作系统仅仅占用200M的空间,其他文件都是使用宿主机上的文件。一般我们把1和2的虚拟化服务器称为vm,把3称为vz。
既然vm和vz都能达到我们的目的,那这两者有什么区别呢?
vm:占用系统资源多,因此成本高,虚拟的操作系统不受主机操作系统的限制,稳定性、安全性高。
vz:占用系统资源少(你想想一个服务器上就算有100个vps也只有一套操作系统,一台服务器上的所有VPS都共享部分操作系统资源),成本低,只可以虚拟和主机的操作系统一样的操作系统,性能好。
一般相同配置的服务器上能能够建立30-40个vps那么只能建立10-20个vm,这也就是相同配置vm往往比vps价格贵一倍的原因。
对vps性能、稳定性影响最大的是内存,下面看看在内存方面两者的区别:
vm:支持虚拟内存(交换分区)
vz:不支持虚拟内存(交换分区),只要一超过就容易死机之类的。
所有的OpenVZ的VPS都不支持虚拟机自己定义虚拟内存,而基于Xen技术的主机可以。OpenVZ系统里面所有的虚拟机共享一个内核,而虚拟内存是需要内核支持的,所以OpenVZ里面的虚拟机都不能再定义虚拟机级别的虚拟内存。OpenVZ可以在母机操作系统里设置的虚拟内存,但在虚拟机看来就是真的内存,加上虚拟机共享资源可以动态调配,所以OpenVZ主机可以超卖。
有种说法:运行同样的程序,如长时间运行sql server,vm需要512M就能稳定了,而vz最少需要1024M才会稳定。为了弥补虚拟内存上的缺陷,vz引入了一个爆炸内存(Burst RAM)的概念,允许短时间内占用超出分配大小的内存。那么这些内存是哪里来的?显然是占用了同一台服务器上其他用户的空闲内存。并不是说vm在内存方面就一定比vz好,vm的虚拟内存理论上可以设的很大(局限于硬盘容量),但会增加对IO的读写,而vps毕竟不是独立的服务器,在这方面有所限制,因此也不宜设得过大。而且虚拟内存毕竟比不上Burst RAM那样真正的内存的速度。
再从商业运营的角度看看两者的区别:
vm:vm的解决方案使得每个vps独立性很好,分配了多少资源就是多少资源,不存在超卖现象。
vz:从前面的Burst RAM就可以看出vz的隔离性并不好,你可以占用同一台机器上其他vps的资源,这也就给服务商浑水摸鱼的机会,往往存在超卖现象,一台服务器本该40个vps,卖到了60、70个,性能(本该是vz的优点)、稳定性都很难保证。另外,安全性上也存在风险。
因此外在因素一样的情况下(配置,价格等),vm的肯定比vz的好。但一般vm要贵些。服务器以稳定性为主,所以大多数客户会用vm的vps,国外的一些数据中心也同样是这个技术,国内一般是vz!
如果看了上面这段文字后还不是很清楚,我觉得这个用户的体验更生动些:
http://zealy.spaces.live.com/blog/cns!3E882EE246E7E0A5!354.entry
http://zealy.spaces.live.com/Blog/cns!3E882EE246E7E0A5!355.entry


