使用 libvirt 设计灵活的虚拟化基础设施

使用 libvirt 设计灵活的虚拟化基础设施

我将在 DELL 服务器上安装具有虚拟化(libvirtd)功能的 CentOS6 服务器,该服务器具有大约 6T 磁盘空间的硬件 RAID5(它在 PERC700 RAID 控制器中有 4x2T 磁盘)。

然后我将安装一些客户机,这些客户机只需要很少的资源,但有一个客户机需要 500GB 的磁盘空间、8/16GB 的 RAM 和良好的性能。我考虑过客户机存储的文件映像,但我不确定 500GB VM 是否需要良好的性能,以便 LVM 设备可以更好。

所以我的问题是,关于以下方面最好的布局是什么:

  1. RAID 设置(RAID5、RAID1 + 1 磁盘仅适用于操作系统。)
  2. 磁盘分区(使用整个磁盘/保留可用空间以供将来使用并使用 LVM 进行扩展)
  3. 客户存储管理(LVM 设备或文件映像(考虑到对性能要求高的 500GB VM)或混合)
  4. 把客户存储放在哪里?/var/lib/libvirt/images 或者可能放在与系统 /home/VMs 分开的自定义目录中

提前感谢任何提示。

答案1

性能是一个见仁见智的问题,也是一个你试图执行什么任务的问题?除非你能描述出你需要的性能“类型”……否则所有答案都只是瞎猜。当然……许多答案还取决于你的虚拟机管理程序。(libvirt 只是许多不同虚拟机管理程序的抽象库)

如果您追求高 CPU 性能……那么您就真的只能听天由命了,因为虚拟机管理程序和物理硬件都存在一些开销,这是您无法避免的。您还需要确保您选择的虚拟机管理程序能够支持本机 CPU 指令,以帮助减少这些开销。

磁盘 IO 是一场永无止境的战斗。几乎没有什么能比访问物理磁盘更好。使用虚拟磁盘创建虚拟客户机意味着您的开销经常翻倍。客户机操作系统必须管理主机操作系统文件系统中包含的文件系统,而这本身就有开销。因此,许多环境都转而使用网络文件系统(如 NFS),将 IO 卸载到网络堆栈和单独的服务器……或者使用基于 iSCSI 或光纤通道的解决方案。简单地将虚拟硬盘放在同一硬盘的不同目录中不会给您带来任何明显的性能提升。

网络性能通常不是问题,因为大多数优秀的虚拟机管理程序都能够提供开销最小的特殊虚拟接口……或模拟标准网络适配器。模拟需要更多资源……但大多数客户操作系统都提供更好的支持。

内存性能...与 CPU 性能非常相似。根据虚拟机管理程序,有一些扩展可以提供对物理 RAM 的直接访问...但您的硬件必须支持这些功能。内存的许多性能调优都是相当标准的。尽可能避免交换...因为您会遇到磁盘 IO 的复合问题。当您最终使用交换空间时...您的内存将被写入磁盘,这反过来又会产生我之前提到的虚拟磁盘问题的额外开销。

总线 IO 性能……将成为您真正无能为力的一点。当您认为可以将 4 个系统放在 1 个物理硬件上并拥有 4 倍的资源时,虚拟系统听起来很棒……但实际情况是,它们都必须共享相同的系统总线。如果您需要在物理硬件上的各种外围设备之间进行大量访问……(内存/CPU/网络适配器/磁盘控制器/USB 端口/等……),那么您的所有虚拟实例都会受到影响。大多数服务器级硬件都是专门为提供最大总线吞吐量而设计的……与台式机不同。

...这是迄今为止不完整的列表......并且省略了几个关键方面......但应该为您提供一些有关高质量虚拟化复杂性的见解。

相关内容