刚刚过去的黑色星期五,我组装了一个小盒子,打算用于 soho VM 实验室。
- i5 处理器
- 技嘉B75M-D3H主板
- 16GB RAM
- 1TB 希捷 星座硬盘 (SATA3)
我想在其上的虚拟机内运行一个简单的文件服务器。目前所有内容都位于 1TB 希捷硬盘上,但我的计划是从现有计算机中取出 300GB 硬盘,并用它来保存 ESXi 虚拟机管理程序和各种虚拟机映像。我需要 esx 服务器才能轻松调出工作映像。1TB 将用作文件服务器的存储空间
我下载了 FreeNAS 和 NAS4Free,并将它们安装到单独的虚拟机中。使用 FreeNAS 和 NAS4free,我为它们提供了 100GB 硬盘,并将它们格式化为 ZFS。然后我通过 CIFS/SMB 和 NFS 共享它们。我的环境是 PC、Linux 和 Mac 的混合体。
我使用千兆局域网。我开始做一些简单的测试。在 Windows 7 机器上,我开始读取/写入不同大小的文件(10MB、400MB、1GB)。不用多说,CIFS 通常比 NFS 快得多。平均而言,CIFS 达到约 80MB/s,NFS 达到约 25MB/s。在 NAS4Free 上,NFS 达到约 10MB/s
关于虚拟机有一点需要注意,在两台虚拟机上我都可以安装 VMXNET3 驱动程序,因此它们都使用该 NIC。
我的目标是拥有相对快速、稳定的文件服务器,且管理开销较低。我意识到以这种方式运行虚拟机不会打破任何性能记录。因此,问题是:
- 这些速度是典型的吗?我觉得我应该能达到平均 100MB/s 的速度。
- 我是不是疯了,竟然想在虚拟机上运行 FreeNAS/NAS4Free?我应该只使用 Windows 还是 Ubuntu 之类的发行版?到目前为止,感觉开销很大。
- 我可以做些什么来调整 ESX、FreeNAS/NAS4Free、NFS、ZFS 以获得更好的吞吐量
- 考虑到我要做的事情和我拥有的硬件,是否有更好的配置?
我没有包含更多信息,因为回答人们对我的设置可能提出的任何问题似乎更容易。
提前致谢。
答案1
这些速度是典型的吗?我觉得我应该能达到平均 100MB/s 的速度。
除了 1TB(SATA3)之外,您没有指定您有多少个驱动器。理论上,您可以通过执行 RAID10(4 个驱动器;2 对镜像,然后两对条带化)获得更多容量。仅此一项(无需实际配置调整)就可能为您提到的所有类型挤出更好的读取效果。
我是不是疯了,竟然想在虚拟机上运行 FreeNAS/NAS4Free?我应该只使用 Windows 还是 Ubuntu 之类的发行版?到目前为止,感觉开销很大。
不,你没疯。事实上,我问过同样的问题在 ServerFault 上。尝试在虚拟机上运行这些发行版并不疯狂。但是这样做有很多注意事项尤其在虚拟机中,尤其是依赖于虚拟机管理程序。使用 Windows 或 Ubuntu 可能更简单,或者更确切地说,FreeNAS/NAS4Free未虚拟化会容易得多。不必处理每个虚拟机管理程序的怪癖以及它如何对待其客户机或客户机可以拥有哪些直接资源可能会是一场噩梦。到目前为止,我已经尝试过 VMWare ESXi 4.1U3、5.1(已修补)和 Hyper-V 2012 (v3)。我管理让它在 5.1 版(已打补丁)上运行,但花了很多时间和精力才让它运行全部工作正常。我要写一篇博客来谈论这件事,因为我觉得我刚刚去了魔多,把魔戒丢在那里。
我可以做些什么来调整 ESX、FreeNAS/NAS4Free、NFS、ZFS 以获得更好的吞吐量
我认为我的第一个答案涵盖了这一点,但我将特别讨论 ESX、ZFS 和 FreeNAS,因为这是我的确切设置。
- ESXi:在 FreeNAS 中使用 ZFS 的最佳性能选择是直接的访问磁盘。在虚拟机管理程序术语中,这称为直通(或 VMWare 中的 PCI 直通)。这意味着 FreeNAS 可以访问它将要使用的每个磁盘,而无需使用 ESXi 中的 vmdk 文件;这最终意味着更好/更快性能。在从众多来源阅读了有关 ZFS 的资料后,很明显,对于 ZFS 来说,少即是多。不要购买花哨的 RAID 卡。这对冗余或性能没有帮助。ZFS 喜欢不受阻碍的直接磁盘访问。JBOD 模式下的 SAS HBA(主机总线适配器)几乎是最佳选择。 VMWare 的 HCL对于 SAS HBA 来说,有点受限,但 FreeNAS 社区在寻找兼容卡方面相当不错,而且还有http://ultimatewhitebox.com这可能会有帮助。
- ZFS:我会向你推荐这个人:http://constantin.glez.de/blog/2010/01/home-server-raid-greed-and-why-mirroring-still-best。他的文章解释了为什么镜像比 RAID-Z 更好。我以前是 RAIDZ/5/6 阵营的一员,但在阅读了这篇文章并仔细考虑后,我转而使用镜像和条带化 (RAID10/01)。它更简单、更快捷。
- FreeNAS:我喜欢 FreeNAS 8.3。这是一个可靠的发行版。我对 FreeBSD 知之甚少,但我正在努力。在虚拟机中运行 FreeNAS 是可行的,但一旦将 HBA 引入方程式,事情就会变得有点棘手。就我而言,我遇到了一些问题。也就是说,让 FreeNAS 查看来自 LSI SAS HBA 的磁盘很麻烦。直到我在论坛帖子中找到一篇帖子,其中指出对于 VMWare ESXi 5.1,您需要应用来自 VMWare 的 3 个补丁来修复直通,我才得以继续前进。在将补丁应用于 ESXi 后,我能够在 FreeNAS 中看到磁盘,我不得不处理 VMXNET3 问题。幸运的是,我找到了一个在 FreeNAS 中安装 VMWare Tools 的出色指南之后,我遇到了可爱的IRQ中断风暴(很棒的错误名称,对吧?)——没有 100% 明确的解决方案。经过几个小时的故障排除,我终于弄清楚我必须在主机的 BIOS 上禁用 ACPI。欢迎来到 vmguest 故障排除地狱。(请记住,这是我最后一次成功的尝试;我放弃了 VMWare ESXi 4.1U3 和 Hyper-V 2012 core)。我估计我花了大约 24 多个小时试图让它工作(所有 3 个虚拟机管理程序总共)。
考虑到我要做的事情和我拥有的硬件,是否有更好的配置?
嗯,从阅读您的零件清单来看,我认为您需要更多磁盘,并且可能需要兼容的 SAS HBA,以便您的 FreeNAS VM 直接访问您的磁盘。这将提高性能,但是,如何很多更好的是,您的里程可能会有所不同。让 VMXNET3 工作可以大大提高网络性能;避免使用 E1000,因为它会降低您的网络吞吐量。
总结
- 带有 ZFS 的 FreeNAS本国的比作为 VM guest 执行起来要容易得多。
- 如果您必须在虚拟机中使用 FreeNAS,则您有义务调查所涉及的所有硬件方面:
- CPU(AMD-V、Intel VTx)
- 芯片组虚拟化支持(IOMMU、AMD-Vi、Intel VTd)
- I/O 虚拟化 (IOV/SR-IOV)
- 网络虚拟化(VT-c)
- SAS HBA 和兼容性。
- 不要忘记虚拟机管理程序!
- FreeNAS 可能会/将会因资源问题而崩溃(IRQ 中断风暴,没有灵丹妙药),因此您需要进行一些故障排除的可能性是更多的很可能
- 避免使用 RAIDZ 这样的花哨忍者保存存储,以实现更快、更轻松的镜像和/或镜像/条带化
- 虽然所有方法都兼容,但并不能 100% 保证所有方法都能奏效。我还建议在治疗前、治疗中和治疗后进行治疗。
读完这篇文章后,你觉得怎么样?也许你疯了。天哪,也许我疯了。