运行Ceph(或类似系统)虚拟化会降低性能吗?

我正在build立一个Ceph集群。 客户端要求在虚拟机中完成,每个服务器一个虚拟机pipe理程序/虚拟机。 鉴于我之前(less量)使用虚拟机的经验,我不知道这是否会成为一个问题(虚拟机pipe理程序抽象硬件和使用内置的驱动程序等)我的担心是否合理? 在运行I / O(磁盘和磁盘控制器)和networking密集型应用程序(如Ceph)的硬件和单个虚拟机之间放置虚拟机时,性能会受到影响吗?

听起来……你的客户不理解Ceph的要求。
他们有多less台虚拟机主机?

简短的回答:

是的,你可以,但不build议。

很长的回答:

是的,它会工作。 但绩效可能受到负面影响。 而当我说消极的时候,我的意思是潜在的负面的。

请阅读硬件build议 。

细节:

Ceph真的希望将其数据写入由存储节点(OSD)控制的专用磁盘。 把另外一个虚拟化层放在这个层面上真的可以提高性能。 尤其是当它需要与其他虚拟机共享该磁盘时。 但如果是为了testing一些团队成员,为什么不呢?

但为了生产。 请不要这样做。

除了OSD之外,您至less需要3个显示器。 这些应该完全运行在完全独立的机器上。 因为如果不是这样,那么当主人放权或者他们是什么时,他们就不会弹性下楼呢? 如果发生这种情况,您将无法访问ceph集群。

另一个原因是,Ceph在读/写OSD的过程中I / O密集。 您在同一个物理主机上拥有的OSD越多,该主机上的networking接口就越容易拥堵。 这就是为什么你需要在许多OSD和许多服务器之间传播你的负载。

既然如此,我已经在Xen上虚拟化了监视器和元数据服务器。 但是我拥有的虚拟机主机是一个野兽,我给了ceph大量的资源。 所有这些主机上也有大的networking带宽。 实际上,这是56Gbit FDR Infiniband。 所以我不能说这会是怎样的受限制的运行,我没有这么注意。

我也把它在亚马逊EC2上旋转起来。 但是,我再次使用更高的规格设置进行testing。 它在那里运行良好,但我们可以看到它受到虚拟化的伤害。 之前的testing是看我们是否能以较低的成本获得比亚马逊的预置IOPS更快的性能。 我们没有去,但这是一个有趣的testing。

关于paravirtual司机等。是的,他们帮助,但在我看来SR-IOV是一个更好的select。

概要:

  • 即使它工作,也不推荐。
  • OSD不应该被虚拟化。

看到Sage Weil在这里评论会很有趣。 如果我没有错,他以前做过。