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