Почему open-iscsi в два раза медленнее пишет, чем Samba через 10G Ethernet?

На моем локальном файловом сервере у меня есть raid-6 на жестких дисках 7x.

dd if=/dev/zero of=tempfile bs=1M count=2048 conv=fdatasync

Тест локальной скорости дает мне скорость записи 349 МБ / с.

Удаленная запись в Samba с SSD (скорость чтения>2 Гбит / с) дает мне 259 МБ / с записей. Но удаленная запись на диск iSCSI (на инициаторе iSCSI в Win10) дает мне всего 151 Мбит / с.

raid6 config - размер фрагмента 128K, stripe_cache_size = 8191. Битовая карта с намерением записи находится на SSD (Samsung 860 PRO, 4096K битовый фрагмент).

Массив с опциями: rw,noatime,nobarrier,commit=999,stripe=128,data=writeback

Настройка open-iscsi: цель основана на файле 4Tb.

Любые намеки, почему iSCSI медленнее, чем Samba при записи? Любые советы о том, как улучшить скорость записи iSCSI?

Я предполагаю, что это как-то связано с желанием open-iscsi сбрасывать записи на диск после каждой операции, что увеличивает усиление записи на raid6 из-за чрезмерной четности перезаписей. Но я не уверен, как это исправить. Ускорить его важнее, чем безопасность записанных на данный момент данных на случай отключения электроэнергии.

В качестве примечания, в более старой цели ietd iSCSI была возможность включить режим обратной записи (используя IOMode=wb) и устойчивая скорость записи была намного выше. К сожалению, в настоящее время он не поддерживается.

3 ответа

Прежде всего, RAID-6 является проблемой из-за вычисления двойной четности. Во-вторых, вы можете подключить iSCSI target дважды в MS iSCSI Initiator, включить RR или наименьшую глубину очереди (к сожалению, Win10 не поддерживает многопоточность, поэтому вместо этого вы можете протестировать ее с Windows Server).

На самом деле доступ на уровне блоков должен быть быстрее, чем доступ на уровне файлов. Какой тип инструмента для тестирования вы используете на сайте Windows? Я бы порекомендовал использовать diskpd или FIO. Кроме того, вы можете использовать что-то вроде Starwind в качестве гораздо более быстрой цели iSCSI.

https://www.starwindsoftware.com/starwind-virtual-san

iSCSI должен использоваться на уровне блоков, ваше описание установки звучит так, как будто вы используете файловую систему, помещаете в нее файл и затем запускаете этот файл как блочный уровень iSCSI.

Это далеко не идеал, и определенно не установка для сравнения скоростей. Попробуйте использовать lvm поверх raid6 для сегментирования пространства и остаться на уровне блоков для iSCSI, или используйте raid6 непосредственно в качестве устройства iSCSI.

В текущей настройке данные передаются по сети, попадая в файл в файловой системе, который (скорее всего) не оптимизирован для этого типа рабочей нагрузки, а также передается другим процессам. Можно выполнить такую ​​настройку с iSCSI, но это следует рассматривать как неоптимизированное резервное решение.

Пожалуйста, будьте осторожны dd Это очень простой тест и ОЧЕНЬ подвержен искажениям. Например, ваш dd записывает нули - если у чего-то есть особый случай для данных, полных нулей (например, потому что он может выполнять сжатие), вы увидите фантастическую производительность, но переключитесь на запись ненулевых "реальных данных", и внезапно эта производительность может исчезнуть...

Чтобы ответить на ваш вопрос (как и при любом бенчмаркинге), вам действительно нужно выделить фрагменты, чтобы определить, что представляет проблему. Например, запись в файловую систему Windows напрямую (а не через iSCSI) также чрезвычайно быстрая? Если вы берете ту же аппаратную конфигурацию и запускаете Linux вместо Windows, это так же быстро или замедляется? Что произойдет, если вы перейдете к использованию инструмента тестирования, такого как fio?

К сожалению, слишком много возможностей, чтобы иметь возможность ответить на такой вопрос хорошо...

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