关于 XenServer 5.5 下的软件 RAID 性能,有没有人有实际经验可以分享?
我最近从 Ubuntu 上的 VMware Server 1.x 迁移到 XenServer 5.5,希望通过利用半虚拟化技术来提高性能。不幸的是,我在 md 类型的软件突袭中看到了非常低的性能。
虽然 XenServer 主机看到的数字超过 100 MB/s,但半虚拟化客户机无法获得超过 20 MB/s 的速度。
这是意料之中的,还是我应该在我的配置中寻找问题?
编辑>
我意识到软件raid 在虚拟主机上并不理想,但对于家庭实验室,我无法证明真正的硬件raid 控制器是合理的,但我仍然需要某种程度的存储冗余。
主机未显示高 CPU 使用率、系统负载甚至过多的 I/O 等待周期。这与 VMware Server 1.x 提供至少两倍的 I/O 性能这一事实相结合,表明半虚拟化肯定存在一些问题。可能是由于我的硬件缺少某些功能。
由于 XenServer 的完整硬件虚拟化并不是那么好,我想我会回到 Ubuntu 上的 VMware Server,让我有机会尝试新的 2.x 版本。
Linux 软件raid 非常好,它击败了低端raid 控制器,并且通常可以匹配中端控制器的性能。
我最近对几种虚拟化技术进行了一些性能测试。Xen VM(xenserver 5.5)中的磁盘 i/o 性能损失约为 70%。我使用了 iozone 来测试 10 多种读/写模式。该机器在软件 raid1 中有 2 个 160G sata-II 驱动器。请注意,70% 的速度损失可能会因磁盘操作的类型而异。
您可以在 Xenserver 中做的一件事是在某些存储资源上设置更高或更低的优先级(单击周围,应该在其中),这有助于一些 i/o 密集型 VM。但仅此而已 - 你想要虚拟机,你必须付出代价:)
如果您想使用容器在 linux 主机中运行 linux vms,将会获得更好的性能。例如,OpenVZ 磁盘 i/o 性能损失约为 7%。
在这个问题上,我不同意 tptech。
软件 RAID 还不错。尤其是其在 Linux 和 Windows Server 操作系统中的开发非常成熟。
事实上,软件 RAID 可以提供比 el-cheapo RAID 控制器更好的性能,因为便宜的 RAID 控制器无论如何都会使用您的 CPU 进行奇偶校验计算。
反驳 tptech:
当然。但这适用于任何 RAID,而不仅仅是软件 RAID。这也不适用于 RAID10,因为您可以获得 100% 冗余的条带化的好处。
这是真的,对于具有非常 I/O 繁重的 VM 的主机来说,这将是一个问题。但是,如果您的 VM 的 I/O 非常繁重,那么 VM 可能无论如何都不是适合他们的地方,或者他们应该可以访问 SAN(一起讨论软件 RAID)。
事实是,仅主机就获得了 100MB/s 的带宽,只有 VM 受到影响,而且我看不出拥有软件 RAID 会导致性能下降到其主机的 1/5,因为请求来自虚拟机而不是主机。
我建议它可能是 VM 配置中的某些东西,甚至可能是来宾机器。还值得一提的是,如果您的主机 CPU 或客户操作系统不支持半虚拟化,则会导致性能下降。并非所有客人都支持它,AFAIK 没有 64 位客人内核支持它。
我没有使用 Xen 的经验,但我怀疑您看到的性能问题不是直接由于 RAID 安排造成的。您是否有可以复制 VM 以重新运行性能测试以比较结果的非 RAID 卷?
如果您正在专门测试写入性能,那么 VMWare Server 中有一个选项可以解释它与 Xen 之间的区别,即您可以向 VMWare Server 指定它应该让主机操作系统缓存磁盘访问,因为它认为合适,而不是坚持客户操作系统认为是物理写入的所有写入都是同步执行的。启用此选项后,您通常会看到 VM 中的写入性能有所提高,有时会大幅提高,但如果发生断电或导致虚拟机管理程序毫不客气地停止 VM 的某些错误,则 VM 文件系统损坏的风险更大。具有 Xen 特定知识的人可能会告诉您它在该领域的默认行为方式(以及是否可以调整它们的行为)。
另一个可能的问题(我在这里说“可能”,因为我只是在猜测)解释一个区别是,即使 guestls 写入同步传送到主机 IO 堆栈(因此它们在 IO 调用之前从缓存发送到磁盘返回到 VM 的操作系统),VMWare 服务器访问 vdisk 文件的方式允许它们的内容保存在来宾操作系统的缓存和缓冲区中,如果主机有大量可用于缓存+缓冲区的 RAM,则减少对物理 IO 操作的需求. Xen 的安排可能并非如此,尽管您需要与比我更了解 Xen 细节的人核实一下。
补充想法:
要检查的另一件事:来宾内核如何访问虚拟设备?如果它在 PIO 模式下运行,而不是使用 DMA 或 UDMA 访问设备,那么它会咀嚼比每次写入操作所需更多的 CPU 周期,即使 I/O 操作转换为基于 DMA 也会产生明显的影响当他们到达物理设备时。
软件 RAID 的一个词 - 不要使用它。嗯,其实就是三个字。但你明白我的意思。
一个好的 RAID 硬件控制器可以通过从 CPU 卸载 RAID 计算和缓冲磁盘 I/O 来多次提高性能 - 然后添加到 RAID 的磁盘驱动器越多,您(通常)获得的性能就越好!