亚马逊EC2:Ubuntu(PV)或Ubuntu(HVM)

67

我即将在亚马逊EC2上启动Ubuntu实例。我正在选择PV和HVM选项。我发现PV提供了更有效的虚拟化模型,但我可能是错误的,而且由于亚马逊提供了两种选项,我认为HVM可能具有一些PV无法获得的优势。我想使用这台虚拟机来进行GIT操作,以及未来可能会用到Team City。你能帮我选择吗?


我注意到在HVM中,实例类型发生了变化,一些较弱的实例将会消失。例如,在Ubuntu 12.04(HVM)中就没有m1.Large。 - Maziyar
@PaulWhipp:那份文档现在已经过时了。HVM镜像现在可以使用PV驱动程序,以获得更高的性能。 - dotancohen
什么是PV和HVM? - DemiSheep
3个回答

50

如果没有特殊原因,我会建议你使用PV(Linux上的虚拟化方式)。由于PV是多年来唯一的选择,所以它经过了更好的测试。(HVM for Linux只是最近在非常特殊的计算集群节点之外引入的)

转换它们并不难,特别是如果你做得好。所谓“做得好”,就是使用像ChefPuppet或者Ansible这样的工具来构建你的服务器。这样,你可以将"服务器"(其实是服务器的构建过程)放在版本控制下,从而为每个人创建即时文档,了解服务器的情况。

你的根目录应该是瞬态的,这样如果服务器死了,你可以重新启动和重新挂载你的EBS数据。(如果要升级操作系统或服务器软件,你可以快速启动第二个实例来测试。)如果你使用的是EBS根驱动器,你需要支付存储/备份你的操作系统的费用,并且你永远无法确定你的服务器配置是否已经检入版本控制中。

更新:未来我会倾向于使用HVM,因为性能可以更好(例如“增强的网络”)。此外,它已经不是“全新”的了。


2
这是一个非常好的和正确的答案。然而,请查看@Kristo J有关新的t2实例可爆发性能的回答,这基本上意味着HVM实例比PV实例更具成本效益。我在那个答案的评论中链接了一篇详尽的博客文章。 - L0j1k
同意。很多新的实例类型只支持HVM,而且我没有看到任何与HVM相关的问题。 - BraveNewCurrency
3
如果您想使用“增强型网络”(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html),则需要选择 HVM。 - Sean Azlin
1
我同意“做正确的事情”的部分。虽然在2014年4月回答这个问题时,“选择PV”是准确的,但今天对于Linux服务器来说应该是“选择HVM”。 - dotancohen
同意。正在更新答案。 - BraveNewCurrency
AWS似乎在说HVM上的PV AMI可能会胜出:“传统上,Para虚拟客户机在存储和网络操作方面比HVM客户机表现更好,因为它们可以利用特殊的I/O驱动程序来避免模拟网络和磁盘硬件的开销,而HVM客户机必须将这些指令转换为模拟硬件”。请参阅:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html。 - Gray

29

2014年夏季,亚马逊开始推荐使用HVM而不是PV AMIs,因为HVM被认为是未来的趋势。许多较新和当前的实例类型仅受HVM AMI支持,例如内存优化的r3类型。请点击这里

随着亚马逊投入大量研发优化HVM,并且PV AMI性能差距将会变得越来越小。


Aerospike:HVM更好。http://highscalability.com/blog/2014/8/18/1-aerospike-server-x-1-amazon-ec2-instance-1-million-tps-for.html - CC.

15

亚马逊最近推出了只使用HVM的t2实例。t2实例引入了可突发性性能(使用积分在需要时使用资源,否则不会以全功率运行)和CPU积分(如果在24小时内没有以全功率运行,则获得积分),从而大大降低ec2实例的价格。

目前此功能仅适用于微型小型中型实例。

请注意,它将没有本地实例存储,因此您需要至少包含一个EBS卷

请查看博客文章


5
这是一个非常重要的考虑因素,t2 实例比 t1 实例更具成本效益。以下是一篇关于此的不错博客文章,附带有图表:http://aws.amazon.com/blogs/aws/low-cost-burstable-ec2-instances/ - L0j1k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接