我们正在寻找一个合理的速度存储。 由于预算不足,我们决定使用软件iSCSI或AoE目标。 在我们改变生产基础之前,我们正在做一些testing来select最好的技术。
为了testing我们使用:
我们的问题是读取速度低。 为了testing,我们使用dd和一个40-100GB的文件。
我们已经尝试了ietd,aoetools,LIO。 我们使用了2个NIC的绑定:balance-rr和LACP,与rr进行多path处理。 使用正常和巨型帧。 最后,我们甚至直接在目标和主机之间build立了以太网连接(无交换机)。
所有的testing都给出了更less的相同的结果(当然,使用没有TOE和iSCSI的通用网卡会导致20-30%更糟糕的结果)。
使用iperftestingnetworking显示传输速率约为200MB / s(2GBit)。 用bmon监视目标网卡的使用情况,显示两台设备的使用率相等(每个读取大约50MB / s,写入大约100MB / s)。
由于我们没有运气,我们决定使用第三个NIC(当然双方)。 结果很奇怪:
目标软件是否有限制,禁止输出高于1GBit / s?
我们做错了什么?
为了从iSCSI连接存储中获得最大性能,应该使用巨帧和MPIO(而不是LACP)。 如果可以的话,build议使用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,到目前为止非常开心。
您对以太网链路聚合如何工作的期望是不正确的。
除了balance-rr(即:模式> 0的所有方法)之外的所有聚合方法不会提供更大的单连接吞吐量; 相反,当从受影响的主机build立多个连接时,它们会增加总的可用带宽。 换句话说,LAG / LACP不会为这种单连接scheme带来任何好处。
唯一的聚合方法可以给你一个单一会话的吞吐量,比单一接口上的平均吞吐量要大一点,就是balance-rr ,它以循环方式分发数据包。 你必须在发起者和目标上都设置balance-rr 。 然而,一个很大的问题是,这主要取决于开关。
无论如何,如果你将目标和发起者都设置为balance-rr,直接连接两台机器应该会提高性能。 如果没有,你可以发布一个iperf与balance-rr和两台机器直接连接(没有开关)? 另外,请发布您用于基准testing的确切的dd命令。
注意:我只在这里谈论iSCSI。 除了阅读AoE之外,我还没有任何经验,而且我也不会在任何新的基础设施上实现这个function(它几乎不存在)。
除了一些非常特定的点对点协议以外,不要使用balance-rr。 在几乎任何一种现实世界的负载下,它都有可怕的性能,并导致大量的networking问题(如大量的抖动)。 绝对不要使用它与开关。
在发起端使用MPIO而不需要任何绑定来实现负载均衡和容错。 为确保您的path不会通过将所有stream量发送到单个path而“混淆”,请在单独的子网上放置单个path(目标和启动器之间的千兆位NIC)。
您可以自由地将目标端与每个path的 LACP绑定在一起(例如,两个绑定中的两条path总共四个NIC,作为目标端口configuration的示例)。 这很好,可以平衡使用相同path的多个发起者连接。 如果可能,也使用巨型框架和iSER。 在目标上使用LACP将平衡连接到几个NIC之间的每个path。
在启动器上使用LACP只有在同时使用多个目标门户连接(对于任何工作负载不常见)时才有效。 即使您要有效地实施启动器上的每个path的LACP,它也很快会成为布线的噩梦(例如)为每个盒子使用(例如)四个额外的结构。 如果您需要比单个启动器多出2Gb / s的吞吐量,请考虑10GiB / s以太网。
大部分对AoE的反应是完全不正确的,反事实的,并且缺乏AoE的知识和经验。 首先,它并没有停止。 CORAID是AoE的供应商,在保留CORAID商标的同时,他们重新启动为“SouthSuite”。 他们也是同样的开发者。 他们正在制造新产品并支持大多数旧产品。 他们正在推动AoE的发展,因为他们的开放技术邮件清单清楚地显示。 检查网站,它是最新的,并在他们的历史页面上讲述整个故事。
有人说AoE不会受益于巨型框架,也是错误的。 在“vbladed”版本13发布之后,它得到了支持。 你需要调整你的MTU来支持新的帧大小,否则它的效果很好。
iSCSI运行在OSI模型的第5层。 通常运输是TCP。 这给了你一些错误校正(由于TCP中的校验和),并允许你在三层通过IP路由stream量。 这就是iSCSI优势停止的地方。 当你真正把它比作FCP,AoE或FCoE之类的东西时,真实世界的性能是非常糟糕的。 我会邀请你到谷歌“iscsi性能比较”的恐怖节目。
您的读取速度问题可能是由于networkingconfiguration错误,请closuresstream量控制,并确保使用足够大的套接字缓冲区。 你也没有提到你的底层文件系统是否已经被读取或预取。 根据你的情况,这可以帮助你很多,但要注意不要使用那些需要caching的特定数据库。
802.3ad聚合不会增加您的单stream吞吐量,甚至在一个循环的情况下。 这也会使您的networkingconfiguration复杂化,并给您一些新的机会,通过不匹配PDU间隔或错误configuration思科VPC链路来支持主动 – 主动状态,从而在自己的脚下自</s>身亡。 不要使用LACP与AoE,让它处理它自己的多path和多路复用。 后来的AoE版本可以很好地处理这个问题,在大多数情况下,它比FCP更优雅,因为它全部是自动的。 其他以太网端口为您提供更多的带宽和更高的弹性。 如果将主机和发起方以太网端口分散在多个交换机上,则可以提供更多的冗余。 不需要configuration绑定模式。 另外,不要在用于AoE的相同接口上运行IP。 据了解,这在性能方面也是有问题的。
总之,不要听取AoE的反对者的意见,他们听起来没有多less经验,只是时髦的脑波。 顺着牛群。 用手动调整的预取configuration一个后备存储,你可能会看到你的读取吞吐量。 放弃使用聚合协议并从iSCSI运行尖叫。 最后一件事,停止使用“dd”,这不是一个很好的testing,并受到caching的不良影响。 使用真正的基准testing工具,如“fio”,“iozone”或“dbench”。 那些提供更可靠的结果。
我知道LACP是用于多个连接的。 testing这是一个绝望的行为:)
所有testing均使用balance-rr和两个NIC完成。
写入iSCSI目标:
dd if = / dev / zero of = / mnt / zero.bin bs = 1M count = 2000
2000 + 0 przeczytanychrecordów
2000 + 0 zapisanychrecordów
2097152000字节(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ów
2000 + 0 zapisanychrecordów
2097152000字节(2,1 GB,2,0 GiB)复制,16,1684 s,130 MB / s
networking速度:
Iperf -c 172.16.10.80
————————————————– ———-
客户端连接到172.16.10.80,TCP端口5001
TCP窗口大小:325 KB(默认)
————————————————– ———-
[3]本地172.16.10.70端口37024与172.16.10.80端口5001连接
[ID]间隔传输带宽
[3] 0.0-10.0秒2.30 GB 1.98 Gbits / sec
使用iperf和巨型帧进行testing的结果相同。
通过在发起者上运行,我获得了一些阅读速度:
hdparm -a 2048 / dev / dm-1
以前是256,阅读速度是96MB / s
我的目标是达到200MB / s的阅读速度。
编辑:
我们不使用LACP – 这是一次性testing。
2.用balance-rr和MPIO进行testing的结果完全相同。 多pathtesting使用不同子网中的NIC进行testing。
3.增加更多的网卡不会增加读取速度,但只会降低每个网卡的利用率。
4.我们认为问题是一些限制(驱动程序,模块?),不允许更快地读取。 但我不确定,如果是目标或发起方。
编辑2:只是做了一些额外的testing:configuration相同的主机作为目标和发起人摆脱networking硬件问题。 我感到震惊:阅读速度完全一样! 130 MB / s! 写作是227 MB / s。
你怎么configuration好你的网卡?所有的caching设置正确,你有足够的内存分配给networkingcaching。 在这里也不要使用绑定,你可以使用2个iscsi通道,并且在启动器上多path,和ATAoE一样,通过任何path上的shelf和lun ID启动器多path。