Citrix XenServer和Linux iSCSI存储之间的networking性能较低

我有两个SuperMicro服务器通过两个10 GBit英特尔X540-T2网卡直接连接(无交换机)。 一台服务器运行Citrix XenServer 6.2,另一台运行Debian 7。

然后,我在Debian系统上安装了open-iscsi和iscsitarget,configuration了一个12 GB的RAM磁盘,将它作为iSCSI存储挂载在XenServer上,并为该XenServer上运行的一个虚拟机提供了12 GB的虚拟磁盘。

事实certificate,我不能超过约290兆字节/秒:

root@s1002:~# dd if=/dev/zero of=/dev/xvdb bs=16M dd: writing `/dev/xvdb': No space left on device 737+0 records in 736+0 records out 12348030976 bytes (12 GB) copied, 42.6216 s, 290 MB/s root@s1002:~# dd if=/dev/xvdb of=/dev/null bs=16M 736+0 records in 736+0 records out 12348030976 bytes (12 GB) copied, 46.0591 s, 268 MB/s 

然后我用商业存储重复了同样的testing,即使在使用物理磁盘时,我也获得了大约450 MByte / s的传输速度。

当我的Linux服务器和ramdisk一起使用时,我预计会有类似甚至更好的速度,但是似乎我的iscsitargetconfiguration或者我的networkingconfiguration都不是最优的。 networkingconfiguration了巨型帧(在两端都使用ping -M do -s 8972 ipaddr进行testing)。 targetcli设置几乎是默认configuration:

 /> ls o- / ....................................................................................................................... [...] o- backstores ............................................................................................................ [...] | o- fileio ................................................................................................. [0 Storage Object] | o- iblock ................................................................................................. [0 Storage Object] | o- pscsi .................................................................................................. [0 Storage Object] | o- rd_dr .................................................................................................. [0 Storage Object] | o- rd_mcp ................................................................................................. [1 Storage Object] | o- ramdisk ............................................................................................. [ramdisk activated] o- iscsi ........................................................................................................... [1 Targets] | o- iqn.2003-01.org.linux-iscsi.server85.x8664:sn.f63360d26dd2 ........................................................ [1 TPG] | o- tpgt1 ......................................................................................................... [enabled] | o- acls .......................................................................................................... [0 ACL] | o- luns .......................................................................................................... [1 LUN] | | o- lun0 ..................................................................................... [rd_mcp/ramdisk (ramdisk)] | o- portals .................................................................................................... [1 Portal] | o- 10.0.12.85:3260 ................................................................................................ [OK] o- loopback ......................................................................................................... [0 Target] o- tcm_fc ........................................................................................................... [0 Target] /> 

如何configurationiscsitarget和/或NIC来提高networking性能,使其与商业存储相匹配?

你正在写磁盘的末尾,并写了超过12GB。 与普通磁盘不同,dd(或者更可能是内核)在达到虚拟盘末尾时不会停止。 通过附加bs=1GB count=12来设置dd写入的限制。

通过在本地主机上使用targetcli创build4GiB RamDisk后备存储来testing覆盖,并使用iscsiadm启动到它的连接。 然后使用ddtesting写入大于4GB的内容:

 # targetcli ls backstores/ramdisk/ 

o-ramdisk ……………………………………….. ………………………………………….. … [存储对象:1]
o – RamDisk4GB ……………………………………….. ………………………………………… [( 4.0GiB)激活]

安全写入3GB:

time dd if = / dev / zero of = / mnt / sdd bs = 1GB count = 3
3 + 0中的3 + 0logging拷贝了3000000000字节(3.0GB),4.41983s,679MB / s

 real 0m6.692s user 0m0.000s sys 0m4.333s 

但是当写入5GB,6GB,8GB,16GB,甚至是32GB只有4GB的空间时没有错误时感到震惊:

时间dd if = / dev / zero of = / mnt / sdd bs = 1GB count = 16

 16+0 records in 16+0 records out 16000000000 bytes (16 GB) copied, 36.671 s, 436 MB/s real 0m38.301s user 0m0.002s sys 0m13.591s 

直到64GB被试图写入4GB RamDisk时,错误才报告。 这似乎是错误的大约是我的/分区的大小是50G。

时间dd if = / dev / zero of = / mnt / sdd bs = 1GB count = 64
dd: 错误写入'/ mnt / sdd': 设备上没有剩余空间
49 + 0的logging
48 + 0logging
48838684672字节(49 GB)复制,122.821 s,398 MB / s

 real 2m4.682s user 0m0.002s sys 0m38.257s 

希望Datera.io和or linux-iscsi.org会对此提出警告,并提供tmpfs或更新的ramdisktypes选项之一。 我的设置是CentOS7,所以我实际上使用github.com/open-iscsi/的免费分支。