У меня есть два сервера 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) активировано]
время дд 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
время дд 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
время дд 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/.