我会尽量用文字表达这一点,以免它被视为购物清单。
我们已经成功运行了一段时间的开发/测试 ESXi 环境,其中有几台 Dell PE2950III 服务器,以及一台 HP MSA2012fc Starter Kit(带有基于 Brocade 的 HP Class B SAN 交换机)。这对我们来说非常有效,但处于开发/测试阶段,在正常运行时间/性能方面存在各种问题。
无论如何,开发/测试平台的成功已经引发了对更“适合生产”的虚拟化平台的需求。我们目前正在起草建议。
然而,对现有堆栈的抱怨之一是缺乏对其他虚拟化技术(HyperV、Xen 等),因为 SAN LUN 已完全分配并格式化为 VMFS。我们被告知要克服这个问题,但正如通常情况一样,没有迹象表明 HyperV/Xen 会被采用(我们不想通过将 LUN 分配到不会使用的地方来浪费“昂贵”的存储资源)。
因此,我们目前的思路是放弃传统的光纤 SAN,转而采用简单的 CentOS 盒(可能是高端的 HP ProLiant DL380p Gen8),运行 NFS 和 Samba/CIFS 守护进程,并配备 10GbE 交换机(可能是 Cisco Nexus 5000/5500 系列)。
原因是 ESXi 头可以使用 NFS,而 HyperV 头可以使用 CIFS,但最终都指向相同的 XFS/RAID1+0 卷。
现在,我还不够成熟,无法认为 10GbE 可以让我在磁头和磁盘之间获得真正的 10 千兆位 I/O 吞吐量,但我不知道我可以期望从 NFS 和 CIFS 实现中看到哪些类型的开销(以及当多个主机尝试与其通信时可能会干扰的任何其他位)。
我是希望至少得到靠近不过,对于尽可能多的主机,我都对直接连接磁盘的持续磁盘读写速度进行了测试。查看了各种驱动器制造商的网站,我大致预计这个速度大约在 140-160MB/s 左右(如果我的预测有偏差,请告诉我)。
关于 Linux/NFS/Samba 或 10GbE 交换机配置,谁能提供什么建议/指南/进一步阅读?可能有助于实现这一目标吗?
答案1
我理解人们想要从纯块存储转向更灵活的存储的愿望。
然而,当目前有多种存储设备软件产品可用时,我会避免使用直接的 Linux 存储堆栈。Linux 方法可以可以工作,但缺乏管理功能/支持,需要进行 XFS 调整(这里和这里)而且事实上不是专用的存储操作系统有缺点。
除此之外,XFS/RHEL 代码维护者的一些棘手问题以及影响系统平均负载的严重内核错误,使您描述的 Linux 组合变得不那么有吸引力。
纯Linux可以可以很好地用于此目的,但设置肯定超出常规,可能会使用深奥的解决方案,例如Linux 上的 ZFS或者还没有为黄金时段做好准备 文件系统稍后将详细介绍。
我经常这样做,选择在大多数 VMware 部署中使用基于 ZFS 的存储上的 NFS,而不是像 HP P2000 阵列这样的入门级 SAN。我使用 L2ARC(读取)和 ZIL(写入)SSD 和 DRAM 缓存设备来增强 ZFS 安装。此外,我已经使用这种类型的设置使用 10GbE 四年了。
我将重点关注NexentaStor目前,因为这是我大多数时候使用的设备软件……
我为 ZFS 存储构建了许多基于 HP ProLiant 的系统,从一体化 VMware 主机独立DL380 存储“设备”到级联存储 JBOD 单元的全多路径 SAS 连接(正面和后部)。
NexentaStor 和 NFS/CIFS。
Nexenta 支持将文件和块存储呈现给外部系统。我可以使用一个由 24 个磁盘组成的池,为需要本机块存储的主机提供 iSCSI 存储,为我的 VMware ESXi 基础架构提供 NFS,为少数 Windows 客户端提供 CIFS。空间得到有效利用,并且是从池的存储中分割出来的。例如,没有人为的上限。压缩是透明的,并且在 VM 场景中非常有用(通过网络传输更少)。
10GbE 有帮助,但这取决于您向虚拟化主机呈现的内容。它们也是 1GbE 还是 10GbE?
基准:
我将对通过 10GbE 连接到 NexentaStor SAN 的 ESXi 主机上运行的客户虚拟机进行快速测试。
这将变成一个 6 磁盘阵列。(在 HP D2600 机箱中 - 600GB 15k SAS)
[root@Test_VM /data]# iozone -t1 -i0 -i1 -i2 -r1m -s6g
Iozone: Performance Test of File I/O
Run began: Mon Feb 11 18:25:14 2013
Record Size 1024 KB
File size set to 6291456 KB
Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s6g
Output is in Kbytes/sec
Children see throughput for 1 initial writers = 128225.65 KB/sec
Children see throughput for 1 readers = 343696.31 KB/sec
Children see throughput for 1 random readers = 239020.91 KB/sec
Children see throughput for 1 random writers = 160520.39 KB/sec
这将进入一个繁忙的 16 磁盘阵列(在 HP D2700 机箱中 - 300GB 10k SAS)。
[root@Test_VM2 /data]# iozone -t1 -i0 -i1 -i2 -r1m -s4g
Iozone: Performance Test of File I/O
Run began: Mon Feb 11 16:33:53 2013
Record Size 1024 KB
File size set to 4194304 KB
Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s4g
Output is in Kbytes/sec
Children see throughput for 1 initial writers = 172846.52 KB/sec
Children see throughput for 1 readers = 366484.00 KB/sec
Children see throughput for 1 random readers = 261205.91 KB/sec
Children see throughput for 1 random writers = 152305.39 KB/sec
来自同一次运行的 I/O 图表...千字节/秒和 IOPS 测量。
答案2
使用为 Hyper-V 主机提供 CIFS 存储的 Linux 主机是不合理的,而且微软肯定不支持。当您谈论像业务关键基础设施虚拟化这样重要的事情时,您肯定希望获得供应商的支持。
您要么需要为您的 Hyper-V 服务器提供更传统的 iSCSI 或光纤通道存储,或者如果您计划运行 Windows 2012,则可以使用 Windows 2012 存储服务为您的主机提供 iSCSI。
另一种可能性是将 Windows 2012 或类似 Nexenta 的东西作为 VMWare 基础架构中的虚拟客户机运行,以便为 Hyper-V 客户机提供 iSCSI。这不是性能最高的配置,但也不错。由于您的 Hyper-V 占用空间很小甚至不存在,这可能是实现最大灵活性而无需专用 LUN 的良好折衷方案。
否则,您需要使用完全虚拟化 LUN 的产品,例如 HP LeftHand SAN。使用 LeftHand,磁盘不专用于 LUN。相反,所有 LUN 都分布在所有磁盘上。这听起来有点奇怪,但它是一款好产品。
答案3
这可能部分是我的背景和经验,但我不建议在被视为“生产”或“企业”的环境中为虚拟机存储使用自制服务器解决方案。
我正在寻找可以提供 SAN 解决方案的主流存储供应商,但使用一对高可用性 NAS 头以受支持的、可认证的方式将底层文件系统导出为 NFS/CIFS。