zoukankan      html  css  js  c++  java
  • 我应该用哪种虚拟机?(终)

    以下是我个人的一些主观感受,没有任何客观数据支持。

    ————————

    按实现方式来划分,从下面几个方面做一个比较

    CPU效率:

    软虚拟和硬件虚拟基本差不多,但是模拟的CPU速度最慢,而且不是慢一点半点。

    内存效率:

    大家都差不多,即便是QEMU这样的模拟器加上了KQEMU的加速,也能凑合。

    内存占用:

    硬虚拟的一大软肋。软虚拟可以轻松地在一台机器上安装十多个虚拟机,但是硬虚拟就很难做到。主要的障碍是硬虚拟上的操作系统彼此独立,而且主流的操作系统对内存消耗都是非常贪婪的(用尽最后一个比特)。

    I/O效率:

    硬虚拟的另一大软肋。在Guest操作系统上装特殊的驱动,然后通过虚拟的总线(Hyper-V的VMBus)把操作直接委托给Host来完成,速度有所提升。但是由于DMA的缘故,在AMD/Intel不推出硬件支持的情况下,没法有根本改观。

    可管理型:

    硬虚拟的弱项。控制Guest操作系统基本上都是靠在Guest操作系统上安装控制软件来完成的。在没有控制软件的帮助下,就是关闭操作系统之类的事情都无法完成,要强制关机。软虚拟在这个方面非常方便。

    安全性:

    软虚拟的大软肋。就是Unix的chroot,人称jail系统。但是越狱的事情时有发生。硬虚拟,特别是纯硬件的全虚拟,有很高的安全性,能够真正达到沙箱(sandbox)的效果。

    通用性:

    软虚拟机的大软肋。最明显的是Virtuozzo,这个windows下唯一的操作系统级别的虚拟化技术,它只支持Windows Server 2003 r2 sp2。硬虚拟在没有驱动加速的情况下,通用性一般是比较好的。但是如果需要驱动加速,仍然是要给每个不同平台写不同的驱动。

    ————————

    按我用过的产品来分,大概列出它们的一些特色和适用的场合

    Hyper-V

    实现:硬件虚拟(对于Windows和Suse Linux支持驱动加速的半虚拟)

    特色:对Windows支持好,将来支持会更好。管理型不错,微软有一套管理工具。

    适用:负载不高的服务器,安全性敏感的场合,开发。

    Virtual Server/PC

    实现:硬件虚拟

    特色:使用简单,和Windows集成好。性能差。

    适用:开发,负载非常低的服务器

    Vmware Workstation/GSX Server

    实现:硬件虚拟

    特色:使用简单,支持多平台。性能差。

    适用:非Windows平台的开发,以及负载非常低的服务器

    Virtual Box

    实现:硬件虚拟

    特色:另外一个Virtual PC或者Vmware Workstation

    Vmware ESX Server

    实现:硬件虚拟机+对主流平台的驱动加速+内存优化

    特色:硬虚拟中的速度标杆,成熟

    使用:负载中等的服务器

    Xen

    实现:同Vmware ESX Server

    特色:速度也很快,有开源社区支持(不过Windows优化那部分没有开源。。。)

    适用:负载中等的服务器

    QEMU

    实现:动态编译模拟器+KQEMU(内存加速)

    特色:兼容性好,支持多CPU。

    适用:玩具?

    KVM

    实现:硬件虚拟+Linux平台的驱动加速和内存优化+Windows平台的网卡加速

    特色:后起之秀,有强大的社区和大公司支持。直接整合进Linux内核

    适用:Linux平台上的开发与不重要的服务器

    Virtuozzo

    实现:操作系统虚拟化

    特色:Windows下的唯一操作系统级别虚拟化产品(也有Linux版本OpenVZ)

    适用:大规模的虚拟服务器部署,虚拟主机提供商

    ————————

    做开发的:

    Windows用Virtual PC,Linux用Vmware

    做中低负载服务器:

    Vmware ESX,Xen,KVM,Hyper-V

    做高负载,高密度服务器:

    Virtuozzo,OpenVZ,Linux系的chroot族产品,Solaris Zone

    ————————

    状态管理

    最后来关注一下虚拟机的一个非常重要的特性,状态管理。功能强弱排列:

    静态磁盘状态

    最弱,不支持Differencing。Xen?Virtuozzo?

    动态磁盘状态

    支持Differencing

    静态内存状态

    支持把内存状态存档和恢复,但是需要重启,所谓Snapshot。大部分虚拟机都支持到这(Virtual PC,Vmware Workstation。。。)

    动态内存状态

    动态记录内存状态和恢复。QEMU/KVM

    全管理

    包括网卡状态等都管理了。从而能够实现Live Migration(动态迁移)。Hyper-V 2.0的重要目标就是这个了。所以从角度来说,硬虚拟最成熟的还是Vmware ESX,其次是Xen。KVM也不能小视,短短时间连Live Migration都支持了。

  • 相关阅读:
    第二十一章 PHP编译安装(centos7)
    第二十章 nginx常见问题
    第十九章 keepalived高可用
    dijkstra
    求逆序对
    A
    P2014 [CTSC1997]选课
    樱花 混合背包
    1401D
    CF1343D
  • 原文地址:https://www.cnblogs.com/taowen/p/1328734.html
Copyright © 2011-2022 走看看