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

Медленный программный рейд с SSD

Мы переместили веб-приложение с базой данных Oracle на новый сервер, потому что старый умирал. На старом сервере было два зеркальных жестких диска и отдельный твердотельный накопитель без зеркального отображения для файлов данных Oracle (без журнала повторов и отмен). Новый сервер имеет почти такую ​​же конфигурацию, за исключением того, что теперь есть два твердотельных накопителя, которые также могут быть зеркалированы.

К сожалению, производительность произвольной записи программного RAID-1 с SSD была очень низкой. Ночью, когда в базу данных сливается большой объем данных, веб-приложение почти перестало работать, потому что простые операции вставки, такие как добавление записи в журнал, занимали 20 секунд и более. RAID-1 просто не мог справиться с запросами Oracle на запись, вызванными ночными заданиями (произвольный доступ к файлам данных).

Затем я вернул конфигурацию к старой: без RAID, а только один SSD для файлов данных. Теперь проблемы с производительностью исчезли, веб-приложение работает постоянно, а ночные задания выполняются примерно в 10 раз быстрее, чем с RAID (и примерно так же, как на старом сервере).

Как может программный RAID быть хотя бы в 10 раз медленнее, чем тот же диск без RAID?

Оборудование:

Команды для настройки RAID:

# mdadm –-create –-name=3 /dev/md/3 --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1
# mkfs.ext4 /dev/md3

Кстати: я не могу проводить никаких экспериментов на новом сервере, так как мы были вынуждены сделать его продуктивным (старый умирал).

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

Есть онлайн-инструмент для расчета добавок, описанных на форум OCZ. Это может помочь.

У вас достаточно денег, чтобы заплатить за Oracle, но не хватает денег на тестовую среду?

Нет ответа (хотя это и длинновато для комментария), но некоторые наблюдения:

SSD лгут о размере своего физического блока - на самом деле это размер стираемого блока, который огромен.

Большинство дисков также лгут о своей геометрии (поэтому вы можете отформатировать их из MS-DOS), но это действительно снижает производительность уровней RAID с чередованием данных (но я бы не ожидал слишком большого влияния на зеркалирование).

Вы не показали нам, как они были разделены, и какое ведение журнала вы настроили.

Тебе надо расскажите ext о конфигурации RAID - хотя опять же IIRC, это больше проблема для чередования, чем для зеркалирования.

Операции записи на зеркало никогда не будут быстрее (потенциально до 2 раз медленнее, хотя чаще всего в районе 20%), чем на один диск.

Проблема с твердотельными накопителями - износ от записи. В зеркале необычно, что вращающиеся диски ржавчины, даже из одной партии, выходят из строя в одно и то же время. OTOH более вероятно, что 2 SSD выйдут из строя одновременно. Одно из решений - намеренно увеличить срок службы дисков. Но если бы я устанавливал машину с этим набором оборудования, я бы использовал mdadm для настройки гибридное хранилище - зеркало устанавливает между SSD и HD.

Я подозреваю, что проблема на уровне файловой системы - если бы она не находилась в производстве, я бы предложил предоставить Oracle доступ к зеркальному устройству как необработанный раздел и проверка работоспособности.

Redhat не рекомендует RAID 1 с SSD и mdadm:

На этапе инициализации этих уровней RAID некоторые утилиты управления RAID (например, mdadm) записывают данные во все блоки устройства хранения, чтобы обеспечить правильную работу контрольных сумм. Это приведет к быстрому снижению производительности SSD.

Глава 21. Рекомендации по развертыванию твердотельных дисков

Аналогичные опасения высказываются и в другом месте:

ОТДЕЛКА ( https://en.wikipedia.org/wiki/TRIM ) не поддерживается с RAID на SSD сегодня на аппаратных контроллерах, и большинство дистрибутивов Linux не поддерживают TRIM on RAID из коробки, если вы делаете программный RAID, поэтому вы увидите, что производительность резко упадет после вы делаете один проход записи на диск. Во многих конфигурациях RAID вы собираетесь обнулить весь диск при его форматировании, поэтому производительность будет отстой с самого начала.

https://news.ycombinator.com/item?id=4266119