iSCSI和AoE均性能低下


9

我们正在寻找合理的速度存储。由于预算低,我们决定使用软件iSCSI或AoE目标。在更改生产基础结构之前,我们正在进行一些测试以选择最佳技术。

为了进行测试,我们使用:

  • 目标富士通西门子RX200 S4
  • 富士通西门子RX200 S4作为启动器
  • NetGear管理的1GBit交换机
  • 板载NIC(Broadcom w / TOE),EdiMax NIC,Broadcom NIC w / TOE-全部1GBit
  • 目标服务器正在使用带有6个2TB WD蓝色SATA驱动器的QLogic控制器。
  • 目标和启动程序操作系统均为具有所有更新的Ubuntu 16.04 LTS。交换机专用于存储。我们测试绑定和多路径。

我们的问题是读取速度低。为了进行测试,我们使用dd了40-100GB的文件。

  • 目标服务器上的本地读写速度超过300MB / s。
  • 通过iSCSI或AoE写入服务器的速度超过200MB / s,这使我们满意。
  • 从服务器读取的数据始终为95-99MB / s。

我们已经尝试过ietd,aoetools,LIO。我们使用了2个NIC的绑定:balance-rr和LACP,与rr进行多路径。使用普通和巨型帧。最终,我们甚至在目标和主机之间进行了直接以太网连接(无需切换)。

所有测试给出的结果更少(当然,使用不带TOE和iSCSI的普通NIC得出的结果要差20-30%)。

使用iperf进行的测试网络显示传输速度约为200MB / s(2GBit)。用bmon观察目标上的NIC使用情况,发现两个设备的利用率均相等(读取时每个设备大约50MB / s,写入时大约100MB / s)。

由于运气不好,我们决定使用第三个NIC(当然是双方)。结果很奇怪:

  • 2个NIC-每个50MB / s
  • 3个NIC-每个33MB / s

目标软件是否有任何限制,可禁用高于1GBit / s的输出?

我们做错了什么?


5
这些天10GbE足够便宜。如果您需要更多带宽(可能不需要),则建议使用此路径。
ewwhite

1
10 GbE不能与ATAoE配合使用,这是一种非常以太网帧无效的协议。尤其是对于巨型帧!
BaronSamedi1958 '16

1
我指的是iSCSI。ATAoE已死,因此不应使用。
ewwhite

Answers:


11

要从iSCSI连接的存储中获取最大性能,您应该使用巨型帧和MPIO(不是LACP)。如果可以的话,建议使用RDMA / iSER。

AOE(基于以太网的ATA)很老旧。几年前,我们已经摆脱了Coraid。我们已经将StarWind https://www.starwindsoftware.com/用作iSCSI目标已经很长时间了,StarWind要求我们从Coraid迁移到我们可以做的任何存储。

因此,现在,我们非常满意StarWind提供的iSCSI,并在Linux上使用Windows,ESX和SCST http://scst.sourceforge.net/作为启动器。借助RDMA / iSER,它可以达到10 Gbit,到目前为止非常高兴。


6

您对以太网链路聚合如何工作的期望是不正确的。

除了balance-rr以外的所有聚合方法(即,所有模式> 0的方法)都不能为您提供更大的单连接吞吐量。相反,当受影响的主机之间建立多个连接时,它们会增加总可用带宽。换句话说,对于这种单连接方案,LAG / LACP不会给您带来任何好处。

可以为您提供比单个接口通常更高的单会话吞吐量的唯一聚合方法是balance-rr,它以循环方式分发数据包。您必须在启动器和目标上设置balance-rr。但是,最大的收获是这很大程度上取决于开关。

无论如何,如果将目标和启动程序都设置为balance-rr,则直接连接两台计算机应该可以提高性能。如果没有,您是否可以发布iperf带有balance-rr且直接连接两台机器(无开关)的a?另外,请发布dd您用于基准测试的确切命令。


2

注意:我在这里仅谈论iSCSI。除了阅读有关AoE的信息外,我还没有其他经验,并且无论如何我也不会在任何新的基础架构中实现它(它已经不存在了)。

除了某些非常特定的点对点协议外,请勿将balance-rr用于其他任何内容。在几乎任何种类的实际负载下,它都具有可怕的性能,并且会导致大量网络问题(例如很多抖动)。绝对不要将其与开关配合使用。

使用MPIO,而在启动器端没有任何绑定,以实现负载平衡和容错能力。为确保通过沿一条路径发送所有流量而不会使路径“混淆”,请将各个路径(在您的情况下,目标和启动器之间的千兆网卡)放在单独的子网中。

随意将目标端与每个路径的 LACP绑定(例如,针对两个路径的两个绑定,总共四个NIC,作为目标端口配置的示例)。这很好用,并且可以平衡使用相同路径的多个启动器连接。如果可能,还请使用巨型框架和iSER。在目标上使用LACP将平衡与多个NIC之间的每个路径的连接。

只有在启动程序同时建立许多目标门户连接的情况下(在几乎所有工作负载中并不常见),在启动器上使用LACP才有效。即使您要在启动器上按路径有效地实施LACP,也很快会成为布线的噩梦,例如在每个机箱中使用四个附加结构。如果单个启动器需要超过〜2Gib / s的吞吐量,请考虑使用10GiB / s以太网。


1

关于AoE的大多数答复都是完全错误的,反事实的,并且显示出缺乏AoE的知识和经验。首先,它尚未失效。CORAID是AoE的供应商,他们以“ SouthSuite”的身份重新启动,同时保留了CORAID商标。他们也是同一位开发人员。他们正在生产新产品并为大多数旧产品提供支持。他们的开放式技术邮件清单清楚地表明,他们也在推动AoE的发展。检查网站,它是最新的,并在其历史页面上讲述了整个故事。

有人说,AoE不会从巨型框架中受益,而且肯定是错误的。在“ vbladed”的第13版发布后,它得到了支持。您确实需要调整MTU以支持新的帧大小,但否则效果很好。

iSCSI在OSI模型的第5层中运行。通常的传输方式是TCP。这样可以进行一些纠错(由于TCP中的校验和),并允许您在第3层上通过IP路由通信。这就是iSCSI优势停止的地方。当您将实际性能与FCP,AoE或FCoE之类的东西进行实际比较时,它的真实世界表现简直糟透了。我会邀请您参加Google“ iscsi性能比较”以进行恐怖表演。

您的读取速度问题可能是由于网络配置错误,关闭流量控制并确保使用足够大的套接字缓冲区引起的。您也没有提到底层文件系统是否已针对读取预取进行了调整。根据您的方案,这可能会对您有所帮助,但请注意不要将其与某些需要禁用缓存的数据库一起使用。

即使在循环情况下,802.3ad聚合也不会显着增加单流吞吐量。这还会使您的网络配置复杂化,并通过错配PDU间隔或将您的Cisco VPC链接配置为支持双活状态而给您带来一些新的机会,使您陷入僵局。不要将LACP与AoE一起使用,让它处理自己的多路径和多路复用。更高版本的AoE可以很好地处理此问题,并且在大多数情况下甚至比FCP更为优雅,因为它是完全自动的。附加的以太网端口可为您提供更多带宽和更多弹性。如果将主机和启动器以太网端口分布在多个交换机上,则可以提供更多的冗余。无需配置绑定模式。另外,请勿在用于AoE的同一接口上运行IP。

简而言之,不要听取AoE反对者的声音,他们听起来没有太多经验,只是在跟着时髦的脑波而动。顺风顺水。使用手动调整的预取功能配置后备存储,您可能会看到读取吞吐量上升。停止使用聚合协议,并从iSCSI运行尖叫。最后一件事,停止使用'dd'并不是一个很好的测试,并且会受到不良的缓存影响。使用真正的基准测试工具,例如“ fio”,“ iozone”或“ dbench”。这些给出更可靠的结果。


1

我知道LACP用于多个连接。测试它是一种绝望的行为:)

所有测试均使用balance-rr和两个NIC完成。

写入iSCSI目标:
dd if = / dev / zero of = / mnt / zero.bin bs = 1M count = 2000
2000 + 0 przeczytanych record-w
2000 + 0 zapisanych record-w
2097152000 bytes(2,1 GB,2,0 GiB)已复制,10,1093 s,207 MB / s

从iSCSI目标读取:
dd if = / mnt / zero.bin of = / dev / null bs = 1M
2000 + 0 przeczytanychrecordów2000
+ 0 zapisanychrecordów2097152000
bytes(2,1 GB ,2,0 GiB)复制,16,1684 s,130 MB / s

网络速度:
iperf -c 172.16.10.80
------------------------ ------------------------------------
客户端连接到172.16.10.80,TCP端口5001
TCP窗口大小: 325 KB(默认)
--------------------------------------------- ---------------
[3]与172.16.10.80端口5001连接的本地172.16.10.70端口37024
[ID]间隔传输带宽
[3] 0.0-10.0秒2.30 Gbytes 1.98 Gbits / sec

使用iperf和巨型帧进行测试得出的结果相同。

通过在启动器上运行,我获得了一些读取速度:
hdparm -a 2048 / dev / dm-1
以前是256,读取速度为96MB / s。
我的目标是达到大约200MB / s的读取速度。

编辑:
1.我们不使用LACP-这是一次测试。
2.使用balance-rr和MPIO进行测试得出的结果完全相同。使用不同子网中的NIC对多路径进行了测试。
3.添加更多的NIC不会提高读取速度,而只会降低每个NIC的利用率。
4.我们认为问题出在某些限制(驱动程序,模块?)上,因此无法加快读取速度。但是我不确定是目标方还是发起方。


编辑2:只是做了一些额外的测试:将相同的主机配置为目标和启动器以摆脱网络硬件问题。我很震惊:完全一样的阅读速度!130 MB /秒!写入速度为227 MB / s。


使用iSCSI时,需要为每个会话启用多个连接才能从LACP获得收益。无mc / s =无性能提升。scst.sourceforge.net/mc_s.htmlstarwindsoftware.com/blog/…可能会有所帮助。
BaronSamedi1958 '16

-2

您如何配置您的nic是正确设置了所有缓冲区,以及是否为网络缓冲区分配了足够的内存。也不要在此处使用绑定,您可以使用2个iscsi通道并在启动器上对它们进行多路径操作,与ATAoE一样,通过任何路径上的架子和lun ID进行启动器多路径操作。


您可以建议进行任何检查和/或配置更改吗?即使您没有完整的答案,也可以帮助您解决其他问题,如果您可以给出一些提示,以将提问者指向正确的方向
iwaseatenbyagrue
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.