希望有人可以指出我正确的方向与我遇到的一些iSCSI性能问题。 我在旧的ProLiant DL360 G5上运行Openfiler 2.99。 双Xeon处理器,6GB ECC内存,英特尔千兆服务器网卡,SAS控制器和3个10K SAS驱动器在一个RAID 5中。当我直接从盒子运行一个简单的写testing,性能非常好:
[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
因此,我创build了一个LUN,将其连接到另一个运行ESXi 5.1(Core i7 2600k,16GB RAM,Intel千兆服务器NIC)的盒子,并创build了一个新的数据存储。 一旦我创build了数据存储,我就可以创build并启动一个运行CentOS的虚拟机,它具有2GB的RAM和16GB的磁盘空间。 操作系统安装正常,我可以使用它,但是当我在虚拟机内部运行相同的testing时,我得到了截然不同的结果:
[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 ~]#
两台服务器都有全新的英特尔服务器网卡,并且我在交换机上启用了巨型帧,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 /秒。 有任何想法吗?
你没有提供作为你的VMWare客人安装的CentOS版本…但是让我们假设它是CentOS 6.x.
来宾虚拟机(和大多数系统)的默认CFQ I / O调度程序是一个糟糕的select。 你会想修改它。 我以前只是build议将调度程序设置为截止date ,但是现在对于RHEL / CentOS系统还有一个更简单的方法。
处理这个和其他一些可调参数的最好方法是下载调优框架并将更好的configuration文件应用到系统中。
在你的情况下:
yum install tuned tuned-utils
安装后,请尝试使用其中一个适当的configuration文件 对于虚拟机,我要么做enterprise-storage或virtual-guest 。 testing并看看哪个最适合你。 configuration文件更改之间不需要重新启动。
tuned-adm profile virtual-guest
推理:

编辑:
那么,这是一个改进。 确保你的guest虚拟机中安装了VMWare工具。 其他项目包括文件系统调整(如noatime )等…但实际上,这些结果应该不会超过某一点。 ddtesting不代performance实的使用模式。
像bonnie ++或iozone这样的其他基准testing工具将会更有帮助。 抓住他们通过yum 。
作为一个虚拟机,你需要关心小的随机读写。 这将远远超过你的ddtesting中的顺序写入指标。