Низкая производительность сети между хранилищем Citrix XenServer и Linux iSCSI

У меня есть два сервера SuperMicro, напрямую соединенные (без коммутатора) с двумя 10-гигабитными сетевыми платами Intel X540-T2. На одном сервере работает Citrix XenServer 6.2, на другом - Debian 7.

Затем я установил open-iscsi и iscsitarget в системе Debian, настроил диск RAM объемом 12 ГБ, установил его в качестве хранилища iSCSI на XenServer и предоставил виртуальный диск объемом 12 ГБ одной из виртуальных машин, работающих на этом XenServer.

Оказывается, я не могу получить больше, чем около 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

Затем я повторил тот же тест с коммерческим хранилищем и получил скорость передачи приблизительно 450 МБ / с даже при использовании физических дисков.

Я ожидал такой же или даже лучшей скорости при использовании моего Linux-сервера с виртуальным диском, но кажется, что либо моя конфигурация iscsitarget, либо моя сетевая конфигурация не оптимальны. Сеть настроена с большими кадрами (протестировано с ping -M do -s 8972 ipaddr на обоих концах). Настройка targetcli в значительной степени является конфигурацией по умолчанию:

/> 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]
/>

Как я могу настроить iscsitarget и / или сетевой адаптер для улучшения производительности сети, чтобы она соответствовала коммерческому хранилищу?

1 ответ

Во-первых, даже если он называется виртуальным диском, он может использовать вращающиеся диски. Оказывается, в настоящее время существует много типов RamDisk, и тип tmpfs может использовать как жесткий диск, так и RAM. Хотелось бы увидеть ваш тест в отношении хранилища файлов с вращающимися дисками на 12 ГБ. Может быть, с той же скоростью.

Во-вторых, возможно, вы переписали конец диска и записали гораздо больше, чем 12 ГБ. Это был мой опыт. В отличие от обычных дисков, dd (или, скорее, ядро) не останавливается, когда достигает конца виртуального диска. Установите ограничение на количество написанного dd, добавив bs=1GB count=12,

Протестируйте перезапись, создав резервную копию 4GiB RamDisk с помощью targetcli на localhost и инициируйте соединение с ним, используя iscsiadm, Затем проверьте запись гораздо больше, чем 4 ГБ с dd:

# targetcli ls backstores/ramdisk/

o- ramdisk.................................................................................................... [Объекты хранения: 1]
o- RamDisk4GB............................................................................................... [(4.0GiB) активирован]

Безопасно писать 3 ГБ:

время dd if=/dev/zero = = mnt / sdd bs = 1GB count = 3 #
3+0 записей в 3+0 записей, скопировано 3000000000 байт (3,0 ГБ), 4,41983 с, 679 МБ / с

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

Но шокирован, когда нет ошибок при записи 5 ГБ, 6 ГБ, 8 ГБ, 16 ГБ, даже 32 ГБ только на 4 ГБ пространства:

время dd если = / dev / ноль = / mnt / sdd bs = 1ГБ счетчик =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

Об ошибках не сообщалось до тех пор, пока 64 ГБ не попытались записать на 4 ГБ RamDisk. Казалось, ошибка примерно в размере моего / раздела, который составляет 50G.

время dd if=/dev/zero of = / mnt / sdd bs = 1GB count = 64
dd: ошибка записи '/ mnt / sdd': на устройстве не осталось места
49+0 записей в
48+0 записей
48838684672 байт (49 ГБ) скопировано, 122,821 с, 398 МБ / с

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

Хотелось бы, чтобы http://datera.io/ и / или http://linux-iscsi.org/ предупреждали об этом и предоставили tmpfs или один из более новых вариантов типа ramdisk. Моя установка - CentOS7, поэтому я использую бесплатную ветку от http://github.com/open-iscsi/.

Другие вопросы по тегам