Назад | Перейти на главную страницу

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

У меня есть два сервера 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-сервера с ramdisk, но мне кажется, что либо моя конфигурация iscsitarget, либо моя конфигурация сети не оптимальны. Сеть настроена с использованием jumbo-кадров (протестировано с 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 и / или NIC для повышения производительности сети, чтобы она соответствовала коммерческому хранилищу?

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

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

Протестируйте перезапись, создав резервное хранилище RamDisk объемом 4 ГБ, используя targetcli на localhost и инициируйте соединение с ним, используя iscsiadm. Затем протестируйте запись более 4 ГБ с dd:

# targetcli ls backstores/ramdisk/

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

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

время дд if = / dev / zero of = / 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 ГБ:

время дд if = / dev / zero of = / 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. Казалось, что произошла ошибка примерно с размером моего раздела /, который составляет 50 ГБ.

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

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

Желаю Datera.io и или linux-iscsi.org предупредит об этом и предоставит tmpfs или одну из новых опций типа ramdisk. Моя установка - CentOS7, поэтому я использую бесплатную ветку от github.com/open-iscsi/.