Jus*_*tin 5 iscsi performance-tuning openfiler hp-proliant vmware-esxi
希望有人能指出我遇到的一些 iSCSI 性能问题的正确方向。我在较旧的 ProLiant DL360 G5 上运行 Openfiler 2.99。双 Xeon 处理器、6GB ECC RAM、英特尔千兆服务器网卡、SAS 控制器和 RAID 5 中的 3 个 10K SAS 驱动器。当我直接从盒子运行一个简单的写测试时,性能非常好:
[root@localhost ~]# dd if=/dev/zero of=tmpfile bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 4.64468 s, 226 MB/s
Run Code Online (Sandbox Code Playgroud)
因此,我创建了一个 LUN,将其连接到另一个运行 ESXi 5.1(Core i7 2600k、16GB RAM、英特尔千兆服务器网卡)的机器上,并创建了一个新的数据存储。一旦我创建了数据存储,我就能够创建并启动一个运行 CentOS 的虚拟机,它有 2GB 的 RAM 和 16GB 的磁盘空间。操作系统安装得很好,我可以使用它,但是当我在 VM 中运行相同的测试时,我得到了截然不同的结果:
[root@localhost ~]# dd if=/dev/zero of=tmpfile bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 26.8786 s, 39.0 MB/s
[root@localhost ~]#
Run Code Online (Sandbox Code Playgroud)
两台服务器都有全新的英特尔服务器网卡,我在交换机、openfiler 盒以及 ESXi 盒上的 VMKernel 适配器上启用了巨型帧。我可以通过从 ESXi 主机使用 vmkping 命令来确认这是否正确设置:
~ # vmkping 10.0.0.1 -s 9000
PING 10.0.0.1 (10.0.0.1): 9000 data bytes
9008 bytes from 10.0.0.1: icmp_seq=0 ttl=64 time=0.533 ms
9008 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.736 ms
9008 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.570 ms
Run Code Online (Sandbox Code Playgroud)
就网络而言,我唯一没有尝试过的是将两个接口绑定在一起。我愿意在路上尝试,但现在我试图让事情变得简单。
我知道这是一个非常适中的设置,我并不期待一流的性能,但我希望看到 90-100MB/s。有任何想法吗?
您没有提供作为 VMWare 来宾安装的 CentOS 版本……但我们假设它是 CentOS 6.x。
默认的CFQ I/O 调度程序对于来宾虚拟机(和大多数系统)来说是一个糟糕的选择。你会想要修改它。我曾经只建议将调度程序设置为Deadline,但现在对于 RHEL/CentOS 系统有一种更简单的方法......
处理该问题和其他几个可调参数的最佳方法是下载调整后的框架并将更好的配置文件应用于系统。
在你的情况下:
yum install tuned tuned-utils
Run Code Online (Sandbox Code Playgroud)
安装后,请尝试使用合适的配置文件之一。对于 VM,我要么做enterprise-storage
要么virtual-guest
. 测试并查看哪种最适合您。配置文件更改之间不需要重新启动。
tuned-adm profile virtual-guest
Run Code Online (Sandbox Code Playgroud)
推理:
编辑:
嗯,这是一个改进。确保您的来宾中安装了 VMWare 工具。其他项目包括文件系统调整(例如noatime
)等等......但实际上,这些结果应该不会超过某个点。一个dd
测试不能代表现实的使用模式。
bonnie++或iozone等其他基准测试工具之一会更有帮助。通过yum
.
作为虚拟机,您需要关注小的随机读写。这将比dd
测试中的顺序写入指标更重要。