我很高兴,如果你们能回答我一些关于我们存储性能的问题。设置
- 带有 2GB 缓存的 HP P2000 SAS
- 8x 1TB SATA 7200 RPM 存储
- RAID6
- 3 个带有 SAS HBA 适配器的主机
- VMWare vSphere 4.1
基本上,我必须查看存储的主要原因是将监控虚拟机从其中一个主机的本地磁盘转移到存储。因此,在进行任何迁移之前,我使用 iometer 设置了一个新的虚拟机,并在晚上运行测试,此时集群中没有运行任何重要作业。此虚拟机中只有 1 个 dynamo 工作线程。
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 数据。尽管如此,我还是决定将虚拟机迁移到存储。迁移后,我测量了监控产生的 IOPS - 平均值为 800,但每个虚拟机上任何读取操作后的响应时间都很糟糕 -5-10秒,由于内核在某些 IO 操作上超时,监控实际上杀死了一些虚拟机。hdparm 给出 1.4MB/秒。我关闭了 cacti RRD 处理,它运行良好,但我们没有图表。
我的问题:
1)您觉得此设置下的 iometer 性能如何?应该更好,还可以,还是我应该查找一些错误配置?
2)您是否建议使用带有监控软件的单独物理主机,并且不要用这种 IOPS “打扰”存储?
3)这个问题比较笼统。存储测试后,我们可以得到不同块大小的 IOPS/mbps。但我如何评估应用程序最常使用的块大小?例如,数据库系统通常使用 75% 的读取操作,但块大小是多少,以便我可以将其与我的结果进行比较?如果不知道这些信息,我的 iometer 测试就只是数字而已。
更新 1: 谢谢您的回答。
因此,我们所做的是,我们创建了用于 rrd 处理的 ramdisk,并且所有 rrd 每小时都会同步到监控磁盘。一切都运行得相当快,但我们会考虑为这种需要良好写入性能的 IOPS 创建另一个 RAID 组,即 RAID 10。
答案1
所描述的设置并不像它本来应该的那样快。这是一种受支持的安排,因为您最多可以将四台主机连接到该设置(如果您放弃 SAS 多路径)。
对于你的观点:
性能不太好,但适合您的配置。我将参考服务器故障规范 RAID 帖子,这基本上表明 RAID 6 不适合随机写入工作负载。虚拟机和监控系统因这种访问模式而臭名昭著。如果可能的话,RAID 1+0 是更好的选择。
我做虚拟化我的监控主机,但构建存储以适应这一点(偏向于更大的写入缓存,在 VM 中设置适当的 I/O 提升选项)。这适用于其他基于 RRD 的工具(虎鲸和开放网络管理系统),但绝对适用于 Cacti。
就测试而言,我认为跟踪平均事务/块大小并不那么重要,因为更大的架构问题可以带来更大的整体收益。不过,您可以跟踪应用程序。此外,还可以考虑通过 vCenter 或 esxtop/resxtop 检查虚拟机存储性能。
答案2
说实话,虽然我很确定这种设置是受支持的,但我以前从未见过超过 2 个主机的直接连接 SAS VMWare 集群。我知道它在 2 个主机上工作得很好,但使用这种方法在 3 个或更多主机上工作超出了我的专业范围。
也就是说,您的统计数据对我来说看起来还不错,最终您在 R6 阵列中有一些非常慢的磁盘,因此其速度是有限的 - 而 443 IOPS 大约是我所期望的那种性能。
至于您的第二个问题,如果负载真的很糟糕,那么您可以考虑在 P2000 上创建另一个逻辑磁盘,并在 R1 中使用一对专用磁盘,然后将虚拟机放在该逻辑磁盘上,或者如果您可以忍受没有 vMotion/DRS/HA 功能,则可以将其移动到本地 DAS。
第三个问题——也许是iotop?