如何确定 VT-d 与裸机相比的性能损失?

如何确定 VT-d 与裸机相比的性能损失?

我希望以一种稍微奇怪的方式配置我的服务器来创建私有云设置。

我必须将存储磁盘绑定的 HBA 传递到虚拟机(可能是 xen)中,以便创建 vSAN 类型的设置。我想这样做,这样我就可以在单个服务器中实现 SAN 类型的设置。

当我四处询问时,人们告诉我 IOPS 不会像裸机那样好。我在我的设置中考虑到了这一点,但它让我想知道它会对系统造成多大的损害?

另外有人提到,虚拟机在裸机上运行,​​但传入存储控制器会产生奇怪的依赖循环,因为虚拟机仍然依赖主机提供内存。除了排除故障很麻烦之外,它真的会导致性能显著下降吗?

哦,顺便说一下,这里主要讨论的文件系统是 ZFS。可能在 FreeBSD(包括 FreeNAS 和 NexantaStor 等)或 OpenIndiana 上运行。

谢谢!

答案1

但这是一个真正的答案。

是的,在 VT-d 直通中运行存储可能会出现延迟或性能下降。

但请考虑一下实际方面。您的系统首先不会受到 IOPS 的限制。此存储中存在多个抽象级别,而您使用虚拟机这一事实表明,与裸机相比,您可以接受这种权衡。

您真正应该关心的是解决方案是否有效!VT-d 可能不稳定,并且不适用于每个适配器。

所以,请用你的工作量来亲自测试一下吧!

答案2

我不建议这种类型的直通设置。从大多数方面来看,这都是双输的,尤其是在可靠性和性能方面。

当然可以,但最安全的解决方案(尤其是使用 ESXi 这样的虚拟机管理程序)是仅使用受支持的 RAID 控制器和本地存储。如果您想要 ZFS 存储,请构建独立的 ZFS 存储系统。

答案3

免责声明:我没有使用过 Xen,因此我针对 ESXi 进行撰写,但概念是类似的。


至于你最初的问题“如何通过直通测试裸机和虚拟机之间的性能差异?”

您的设置如下:

  • 配备支持 VT-d 的 Intel Xeon CPU 的服务器级主板(还有其他选择,但我会尽量简单)
  • 单个 SATA SSD 约 20 到 30 GB,取决于您的操作系统(也可以是 HDD,但速度会慢一些)
  • 带有支持磁盘的 LSI 芯片的 HBA
  • 两个 Intel NIC,可以是板载的,也可以是 PCIe 上的,或者两者都有,但它们应该是同一型号。大多数主板已经配备了它们,但只有一些主板配备了 10Gbit 的。如果您使用 1Gbit,通常可以使用大约 4 个磁盘或单个 SSD 来最大化顺序读写性能,因此我建议使用 10Gbit(内部网络在大多数情况下也是 10GBit,所以这会更有趣)。
  • 用于虚拟机管理程序的 USB 记忆棒

首先,将您的虚拟机管理程序安装到 USB 棒上并对其进行配置。将您的 SSD 分区为 2 个切片。重新启动并像平常一样将您的裸机操作系统安装到第一个切片上。将您的 HBA 与其他磁盘一起使用,并为您的性能测试配置一个或多个池。执行这些测试并记下结果。您至少应该从命令行测试本地性能并使用所需协议(iSCSI、NFS、SMB)测试网络性能。如果可能,还测试 SSD(不是绝对必要的)。如果完成,请导出您的池。

然后,重新启动(我假设您有远程控制台,因此您可以远程执行此操作),从您的 USB 棒而不是本地 SSD 启动。现在使用 SSD 的第二个切片创建一个跨越整个切片 2 的虚拟文件系统。在此 VFS 上,从与之前相同的 ISO 安装您的系统,但现在作为虚拟机。在虚拟机管理程序中设置直通,并将一个物理 NIC 和您的 HBA 分配给这个新 VM。还要为此 VM 分配至少一个虚拟 NIC(如果您想测试不同类型,则分配更多)。为 VM 分配尽可能多的 RAM 以使条件相似。

然后启动虚拟机,进行配置并从虚拟机(通过 VNC 或 SSH)再次导入池。现在,您可以对物理和虚拟适配器执行与之前相同的测试(本地和远程),并记录任何差异。此外,您可以创建第二个虚拟机,但现在位于由您的池提供的共享 NFS 或 iSCSI 卷上。在此虚拟机上进行的测试将告诉您很多有关您以后作为虚拟机主机的使用情况的信息。


除了性能指标之外,还有一些想法。我喜欢这种设置,原因如下:

  1. 它与本机设置非常相似:如果您的服务器死机,您可以移除所有磁盘并将其插入任何其他主机 - 如果主机有虚拟机管理程序,您可以在启动小型存储 VM 后继续使用它们;即使没有,您也已经拥有所有数据和网络共享,因为所有内容都在池本身上。使用传统设置,您必须担心相同类型的 RAID 控制器、文件系统支持,并且需要虚拟机管理程序(或从虚拟磁盘复制数据)。
  2. 如果组件配合良好,它会出奇地稳定:如果您购买了好的硬件,那么您遇到的问题就会少很多;即使出现问题,您的数据也会得到保存(至少如果您不禁用同步写入,但您永远不应该对虚拟机这样做!)。即使您因任何原因丢失数据,您也会比使用其他文件系统更快地知道。
  3. 它更便宜/更高效:您基本上已经虚拟化了整个 SAN,但您不需要两个机箱、两个机架空间、两个冗余电源、两个 CPU 等等。另一方面,同样的预算可以让您获得更大的收益 - 无需购买两台普通服务器,您可以购买一台功能强大的服务器,它具有所有不错的功能(冗余电源、HBA 多路径等),并且可以根据需要使用您的资源(内存、电源等)。
  4. 它很灵活:您可以为每项任务使用最佳操作系统。例如,使用 Oracle Solaris 和 illumos 发行版(如 OpenSolaris、OmniOS 或 Nexenta)作为存储 VM,以获得所有最新功能以及它们多年来提供的稳定性。然后添加用于 Active Directory 的 Windows Server、用于内部或外部路由和网络任务的 FreeBSD 或 OpenBSD、用于应用软件或数据库的各种 Linux 发行版等等(如果您不想增加开销,但想要灵活性,您可以在裸机上尝试 SmartOS,尽管您的虚拟机管理程序选择仅限于 KVM)。

当然,也有缺点。ewwhite 提到了一点,硬件需要匹配。此外:

  1. 性能很可能永远不会像传统设置那样好。您可以投入大量资金来解决这个问题(更多 RAM、SSD 或 NVMe 上的 ZIL、更多磁盘、仅 SSD 磁盘),但如果性能是您的首要考虑因素,那么虚拟机不是最佳选择,ZFS 也不是最佳选择,两者结合也不是最佳选择。这是您无法逃避的权衡,您拥有安全性和灵活性,但没有最大的性能。
  2. 您需要为启动、关机和断电做一些小的准备。经验法则:您的存储虚拟机必须是第一个完全启动的,也是最后一个完全关闭的。测试并计时您的启动,以了解在启动其他机器之前必须等待多长时间。关机并不那么重要,过早关机大致相当于各个虚拟机的断电(这是安全的,只要您的应用软件和操作系统以及虚拟机管理程序和存储层同意只对任何重要的事情使用同步写入)。
  3. 更新可能会耗费更多时间。请记住,如果您更改存储 VM,则必须关闭所有其他 VM(或强制关闭)。因此,请计划更多停机时间(这当然与物理设置相同,在物理设置中,您的 SAN 会因更新而关闭)。此外,您还应该彻底测试对核心功能(虚拟机管理程序、网络驱动程序、虚拟网络驱动程序、存储驱动程序、存储 VM)的任何更新,因为您不希望出现导致 NFS 行为在随机时间不稳定的错误。
  4. 您仍在进行备份,对吗?;)

相关内容