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

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

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

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

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

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

Конфигурация raid6 - размер блока 128 КБ, stripe_cache_size = 8191. Растровое изображение намерения записи находится на SSD (Samsung 860 PRO, фрагмент растрового изображения 4096 КБ).

Установленный массив с опциями: rw,noatime,nobarrier,commit=999,stripe=128,data=writeback

open-iscsi setup: цель основана на файле размером 4 ТБ.

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

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

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

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

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

https://www.starwindsoftware.com/starwind-virtual-san#Hyper-V

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

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

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

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

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

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