希望有人能为我指出一些我遇到的 iSCSI 性能问题的正确方向。我在较旧的 ProLiant DL360 G5 上运行 Openfiler 2.99。双 Xeon 处理器、6GB ECC RAM、Intel 千兆服务器 NIC、SAS 控制器和 3 个 10K SAS 驱动器(RAID 5)。当我直接从盒子运行简单的写入测试时,性能非常好:
[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
因此,我创建了一个 LUN,将其连接到另一个运行 ESXi 5.1(Core i7 2600k、16GB RAM、Intel 千兆服务器 NIC)的盒子,并创建了一个新的数据存储。创建数据存储后,我能够创建并启动一个运行 CentOS 的 VM,该 VM 具有 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 ~]#
两台服务器都配有全新的 Intel 服务器网卡,并且我在交换机、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
就网络而言,我唯一没有尝试过的是将两个接口绑定在一起。我愿意以后再尝试,但目前我试图让事情变得简单。
我知道这是一个相当普通的设置,我并不期待顶级性能,但我希望看到 90-100MB/s。有什么想法吗?
答案1
您没有提供作为 VMWare 客户机安装的 CentOS 版本...但我们假设它是 CentOS 6.x。
默认CFQ I/O 调度程序对于客户虚拟机(和大多数系统)来说,这是一个糟糕的选择。您需要修改它。我以前只是建议将调度程序设置为最后期限,但是对于 RHEL/CentOS 系统现在有一种更简单的方法......
处理这个问题和其他一些可调参数的最佳方法是下载调整框架并将更好的配置文件应用到系统中。
就你的情况而言:
yum install tuned tuned-utils
安装后,尝试其中一个适当的配置文件。对于 VM,我要么执行enterprise-storage
要么执行virtual-guest
。测试并查看哪个最适合您。配置文件更改之间不需要重新启动。
tuned-adm profile virtual-guest
理由是:
编辑:
嗯,这是个进步。请确保您的客户机中安装了 VMWare 工具。其他项目包括文件系统调整(例如noatime
)等......但实际上,这些结果在一定程度之后并不重要。dd
测试并不代表实际的使用模式。
其他基准测试工具包括邦尼++或者碘会更有帮助。通过 获取它们yum
。
作为虚拟机,您需要关注小规模的随机读写。这比dd
测试中的顺序写入指标更重要。