如果您能回答我关于存储性能的一些问题,我会很高兴。设置
- 具有 2GB 缓存的 HP P2000 SAS
- 8 个 1TB SATA 7200 RPM 存储
- RAID6
- 3 个带 SAS HBA 适配器的主机
- 虚拟机 vSphere 4.1
基本上,我必须查看我们的存储的主要原因是将监控 VM 从其中一台主机的本地磁盘传输到存储。因此,在进行任何迁移之前,我使用 iometer 设置了一个新的 VM,并在夜间运行测试,当时集群中没有重要的作业在运行。此 VM 只有 1 个发电机工作线程。
Access Specification Name IOps Read IOps Write IOps MBps Read MBps Write MBps Transactions per Second Average Response Time Average Read Response Time
512B; 100% Read; 0% random 5617.191059 5617.191059 0.000000 2.742769 2.742769 0.000000 5617.191059 0.176979 0.176979
512B; 75% Read; 0% random 3190.524306 2369.761725 820.762581 1.557873 1.157110 0.400763 3190.524306 0.312244 0.321925
512B; 50% Read; 0% random 1055.807449 524.819993 530.987456 0.515531 0.256260 0.259271 1055.807449 0.946000 0.421600
512B; 25% Read; 0% random 1006.956966 239.414257 767.542709 0.491678 0.116901 0.374777 1006.956966 0.853556 0.687116
512B; 0% Read; 0% random 35.123065 0.000000 35.123065 0.017150 0.000000 0.017150 35.123065 28.349538 0.000000
4K; 75% Read; 0% random 3034.296095 2247.847150 786.448945 11.852719 8.780653 3.072066 3034.296095 0.328614 0.333793
4K; 25% Read; 0% random 2237.793260 587.671309 1650.121951 8.741380 2.295591 6.445789 2237.793260 0.445755 0.636275
16K; 75% Read; 0% random 627.852712 474.796322 153.056389 9.810199 7.418693 2.391506 627.852712 1.591288 1.840213
16K; 25% Read; 0% random 478.619741 116.666329 361.953412 7.478433 1.822911 5.655522 478.619741 2.086953 1.281547
32K; 75% Read; 0% random 848.266506 649.372846 198.893660 26.508328 20.292901 6.215427 848.266506 1.176316 1.334378
32K; 25% Read; 0% random 443.441341 117.275291 326.166050 13.857542 3.664853 10.192689 443.441341 2.253707 7.158792
hdparm 读取测试(使用 hdparm -t /dev/sda)给出了 300MB/s。
我们的监控系统从 +- 40 个虚拟机和 30 个设备获取信息,每个主机至少有 10 个服务,但实际上是 cacti 产生了大部分的 IOPS。它每分钟同时大量更新 RRD 数据。尽管如此,我还是决定将 VM 迁移到存储。迁移后,我测量了监控产生的 IOPS - 平均值为 800,但在每个 VM 上进行任何读取操作后的响应时间非常糟糕 - 5-10 秒,监控实际上杀死了一些 VM,因为内核在某些 VM 上超时IO操作。hdparm 给出了 1.4MB/秒。我关闭了 cacti RRD 处理,它运行良好,但我们没有图表。
我的问题:
1)您如何看待 iometer 在此设置上的性能?应该更好,没问题,还是我应该搜索一些错误配置?
2)您是否建议使用带有监控软件的单独物理主机,并且不要用这种 IOPS“打扰”存储?
3)这个问题比较笼统。存储测试后,我们可以获得不同块大小的 IOPS/mbps。但是我如何评估应用程序最常使用的块大小呢?例如,数据库系统通常使用 75% 的读取操作,但块大小是多少,以便我可以将其与我的结果进行比较?在不知道这些信息的情况下,我的 iometer 测试只是简单的数字。
更新 1: 感谢您的回答。
所以我们所做的是,我们为 rrd 处理创建了 ramdisk,并且所有 rrd 每小时都同步到监控磁盘。一切都运行得相当快,但我们会考虑为这种需要良好写入性能的 IOPS 创建另一个具有 RAID 10 的 RAID 组。
老实说,虽然我有理由相信这种设置是受支持的,但我以前从未见过 >2 主机直连 SAS VMWare 集群。我知道它适用于 2 个主机,但 3 个或更多主机不在我使用此方法的专业领域。
那就是说您的统计数据对我来说看起来还不错,最终您在 R6 阵列中有一些非常慢的磁盘,所以它的速度是有限的 - 而 443 IOPS 是我期望的那种性能。
至于你的第二个问题,如果负载很糟糕,那么你可以考虑在 P2000 上创建另一个逻辑磁盘,在 R1 中使用一对专用磁盘,然后将 VM 放在上面,或者如果你可以不用的话,可以将它移动到本地 DAS vMotion/DRS/HA 功能。
第三个问题——也许iotop?
所描述的设置并不像它可能的那样快。这是一种受支持的安排,因为您最多可以将四台主机连接到该设置(如果您放弃 SAS 多路径)。
对你的观点:
性能不佳,但适合您的配置。我将参考Server Fault canonical RAID post,它基本上指出 RAID 6 不适合随机写入工作负载。虚拟机和监控系统因这种访问模式而臭名昭著。如果可能,RAID 1+0 是更好的选择。
我确实虚拟化了我的监控主机,但构建存储以适应它(偏向于更大的写入缓存,在 VM 中设置适当的 I/O 电梯选项)。这适用于其他基于 RRD 的工具(orca和OpenNMS),但绝对适用于 Cacti。
就测试而言,我认为跟踪平均事务/块大小并不那么重要,因为更大的架构问题可以全面产生更大的收益。不过,您可以跟踪应用程序。此外,考虑通过 vCenter 或 esxtop/resxtop 检查 VM 存储性能。