1. 从费用上比较
并且是免费的:
Xen和kvm是开源和免费的虚拟化软件。
Vmware是付费虚拟化软件。
Hyper-v是一个特殊的虚拟化组件,附属于微软视窗2008 R2。如果您购买足够的许可证,hyper-v(包括hyper-v 2008 core)可以免费使用。
因此:
如果是vmware或hyper-v虚拟windows系统,虚拟化软件本身及其子系统都必须支付许可费。
如果是vmware或者hyper-v虚拟linux,虚拟化软件本身就要支付许可费,子系统可以使用linux来节省成本。
在xen或kvm虚拟窗口的情况下,子系统将支付许可费。
如果是xen或kvm虚拟linux,虚拟化软件本身及其子系统不需要产生任何成本。
结论:
在虚拟 windows,建议在获得授权后使用Hyper-V;未经授权,建议虚拟窗口使用KVM。
在虚拟 linux,建议使用xen,考虑到降低管理、维护和学习成本的需要,建议使用kvm。
2. 从性能上比较
虚拟窗口,如果都是厂商支持的,那么就不用担心性能优化了。所有这些软件至少可以达到主系统(磁盘、CPU、网络、内存)80%的性能。此时,建议使用hyper-v虚拟化windows。微软自己的产品,Virtual windows,有绝对的优势。
2.1 I/O 比较
对于虚拟linux,建议:
首先使用xen支持linux半虚拟化,可以直接使用主系统的cpu、磁盘和网络资源,从而实现更少的虚拟化调度操作,达到非常高的性能。但是xen操作复杂,维护成本高。
其次,我们推荐kvm虚拟化linux。linux本身支持kvm的virtio技术,可以实现少量的虚拟化调度操作,获得更高的系统性能。
不建议使用hyper-v来虚拟化linux。太多的不兼容使得linux基本无法在Hyper-V上运行。
2.2 性能测试报告
该测试使用裸机作为虚拟服务测试的基准设备。不运行虚拟机,两台裸机的性能偏差不会超过0.51%。
在几乎所有的测试中,除了两次测试外,KVM的性能比主机降低了不到1.5%。首先是7-zip压缩,比主机慢2.79%。第二个很奇怪。我们设置了一个电子邮件服务器,并用邮戳测试了它的性能。结果表明,KVM比主机快4.11%。然后我在两台服务器上运行了几次邮戳测试,结果显示性能差异基本没有变化,波动在最初测试结果的1%以内。由于我对病毒的内部机制了解不深,只能在以后进一步了解这种奇怪的现象。
Xen的性能与主机有很大不同。三次测试的性能均下降到2.5%以下,剩余性能下降率是KVM的2 ~ 4倍。邮戳的性能比KVM慢了14.41%,这让我很惊讶。再次运行测试后,性能仍然几乎没有变化,波动在初始结果的2%以内。KVM最好的CPU测试MAFFT对齐测试,是Xen第二差的性能。
现在我展示一个简短的汇总表:
Best Value
Bare Metal
KVM
Xen
射线
降低
35.35
35.66
36.13
视点光线
降低
230.02
232.44
235.89
Smallpt
降低
160
162
167.5
开膛手约翰(河豚)
高等级的,级别较高的,较重要的
3026
2991.5
2856
开膛手约翰
高等级的,级别较高的,较重要的
7374833.5
7271833.5
6911167
约翰th
e Ripper (MD5)如果需要完整数据,请查看Goole Docs 电子表格。
结论
基于上面的测试环境,KVM 的性能损耗几乎都在2%以内,Xen 则在十多项测试中有3项损耗在2.5%以内,而其他几项损耗都在5~7%之间。虽然 KVM 在 PostMark 测试中性能表现优异,但这是众多测试中仅有的一项 I/O 测试,如果想证明 KVM 确实在 I/O 处理方面很强悍,就需要更多测试。
2.3 更多的测试报告
在经过综合测试后,不论是单个parallel还是两个parallel,xen的跑分测试都比kvm要好。
三种虚拟化性能比较 LXC>>KVM>>XEN (由于LXC使用cgroup机制,其性能损坏基本为0。)
三种虚拟化隔离比较 XEN>>KVM>>LXC (LXC只能虚拟化linux)
三种虚拟化内存利用率 LXC>>KVM>>XEN (由于LXC共用内核,内存利用率最高;其他两种方案每个虚机都需要单独的操作系统占用一部分内存空间。)
从运算性能和磁盘负载角度来说Linux KVM不失为最快的虚拟化解决方案。相比之下,VirtualBox在测试中排名第二,而Xen在HVM模式下的虚拟化表现最差。
综上:比较有意思的是这些测试报告的结论都不太一样甚至是相反的。
3. 产方支持
如果以上产品我们不打算买厂商支持,其中vmware和hyper-v,是不建议使用的,主要是授权问题。
这时就剩下kvm和xen了,如果虚拟windows,建议使用 kvm,我们可以从 redhat那里免费拿到针对 windows 优化过的磁盘和网络的驱动 程序,可以达到较高的性能(几乎与hyper-v性能持平)。
而xen的 windows 优化驱动不是那么容易就能拿到的(由于redhat以后不支持 xen了,看看novell是否放水了,呵呵,就开放程度上来讲,redhat要好于novell)。
4. 特性比较
Attribute | Zones | Xen | KVM |
CPU Performance | high | high (with CPU support) | high (with CPU support) |
CPU Allocation | flexible (FSS + “bursting”) | fixed to VCPU limit | fixed to VCPU limit |
I/O Throughput | high (no intrinsic overhead) | low or medium (with paravirt) | low or medium (with paravirt) |
I/O Latency | low (no intrinsic overhead) | some (I/O proxy overhead) | some (I/O proxy overhead) |
Memory Access Overhead | none | some (EPT/NPT or shadow page tables) | some (EPT/NPT or shadow page tables) |
Memory Loss | none | some (extra kernels; page tables) | some (extra kernels; page tables) |
Memory Allocation | flexible (unused guest memory used for file system cache) | fixed (and possible double-caching) | fixed (and possible double-caching) |
Resource Controls | many (depends on OS) | some (depends on hypervisor) | most (OS + hypervisor) |
Observability: from the host | highest (see everything) | low (resource usage, hypervisor statistics) | medium (resource usage, hypervisor statistics, OS inspection of hypervisor) |
Observability: from the guest | medium (see everything permitted, incl. some physical resource stats) | low (guest only) | low (guest only) |
Hypervisor Complexity | low (OS partitions) | high (complex hypervisor) | medium |
Different OS Guests | usually no (sometimes possible with syscall translation) | yes | yes |
更多的特性比较:
Mechanism | Operating system | License | Available since/between | Features | |||||||||
File system isolation | Copy on Write | Disk quotas | I/O rate limiting | Memory limits | CPU quotas | Network isolation | Nested virtualization | Partition checkpointing and live migration |
Root privilege isolation | ||||
chroot | most UNIX-likeoperating systems | varies by operating system | 1982 | Partial[5] | No | No | No | No | No | No | Yes | No | No |
Docker | Linux[6] | Apache License 2.0 | 2013 | Yes | Yes | Not directly | Not directly | Yes | Yes | Yes | Yes | No | No |
Linux-VServer (security context) |
Linux | GNU GPLv2 | 2001 | Yes | Yes | Yes | Yes[7] | Yes | Yes | Partial[8] | ? | No | Partial[9] |
lmctfy | Linux | Apache License 2.0 | 2013 | Yes | Yes | Yes | Yes[7] | Yes | Yes | Partial[8] | ? | No | Partial[9] |
LXC | Linux | GNU GPLv2 | 2008 | Yes[10] | Partial. Yes withBtrfs. | Partial. Yes withLVM orDisk quota. | Yes | Yes | Yes | Yes | Yes | No | Yes[10] |
OpenVZ | Linux | GNU GPLv2 | 2005 | Yes | No | Yes | Yes[11] | Yes | Yes | Yes[12] | No | Yes | Yes[13] |
Virtuozzo | Linux,Windows | Proprietary | July 2000[14] | Yes | Yes | Yes | Yes[15] | Yes | Yes | Yes[12] | ? | Yes | Yes |
Solaris Containers(Zones) | Solaris,OpenSolaris,Illumos | CDDL | February 2004 | Yes | Yes (ZFS) | Yes | Partial. Yes with Illumos.[16] | Yes | Yes | Yes[17] | Partial. Only when top level is a KVM zone (Illumos) or a kz zone (Oracle) | No[18] | Yes[19] |
FreeBSD Jail | FreeBSD | BSD License | 1998 | Yes | Yes (ZFS) | Yes[20] | No | Yes[21] | Yes | Yes | Yes | No | Yes[22] |
sysjail | OpenBSD,NetBSD | BSD License | No longer supported, as of March 3, 2009 | Yes | No | No | No | No | No | Yes | No | No | ? |
WPARs | AIX | Proprietary | 2007 | Yes | No | Yes | Yes | Yes | Yes | Yes[23] | No | Yes[24] | ? |
HP-UX Containers (SRP) | HPUX | Proprietary | 2007 | Yes | No | Partial. Yes with logical volumes | Yes | Yes | Yes | Yes | ? | Yes | ? |
iCore Virtual Accounts | Windows XP | Proprietary/Freeware | 2008 | Yes | No | Yes | No | No | No | No | ? | No | ? |
Sandboxie | Windows | Proprietary/Shareware | 2004 |