Пока пользуешься raid-1 и не волнует скорость, глубина всех труднострей плохо понятна. Ситуация сейчас такая:
raid10 280 МБ/с запись, 380 МБ/с чтение.
dm-integrity + raid10 200 МБ/с запись, 280 МБ/с чтение.
dm-integrity + raid5 50 МБ/с запись, чтение даже не смотрел
(синхронизация падает до 20МБайт/с)
raid5 какая-то приличная скорость, сравнимая с ZFS,
не помню деталей, такая конфигурация не интересна
ZFS < 140 МБ/с запись, синхронизация
с первой космической скоростью.
Неустраивает что медленно. Диски самые дешевые, SMR, на 5600об/с. Что не устраивали критику – сравнил с CMR на 7200 и не увидел заметной разницы, может процентов на 20 по скорости записи больших блоков и раза в два при записи кучи мелких. То что «raid на SMR не работает» – в значительной степени миф. Может на дисках WD и не работает, в данном случае Seagate.
Интересует в первую очередь скорость записи больших файлов, а не работа в качестве сервера СУБД (тогда CMR).
Во вторую очередь интересует контроль целостности записанных данных, ввиду понимания, что на сколько-нибудь большом объёме единичные ошибки это уже как правило, а не редкая случайность.
В чём проблема: применение dm-integrity сильно замедляет. Сравнивал без bitmap’а и без журнала, понимаю, они тормозят ещё больше. Конкретно raid5 замедляется катастрофически, и хуже того, я попробовал всё то же самое сделать на SSD и получил те же 50МБ/сек!!! Это полное фиаско!
Проблема не в дисках, проблема в самом линуксе! Скорость записи дисков порядка 160..80МБ/сек (снижается к концу диска) у SMR и 180..80 у CMR. SMR хуже ведут себя только на массе мелких записей, не фатально, раза в два всего.
Более того, я был шокирован, когда увидел, что изначально конструкция dm-integrity + raid10 работает быстрей, чем raid10 без ничего. Потыкался и сменил io scheduler с mq-deadline на bfq, скорость немного подрасла, и самое главное всё стало на свои места. raid10 без ничего всё же заметно быстрей, чем с dm-integrity. Но для raid5 ничего не помогает, он просто медленно пишет и совершенно непонятно где затык.
ZFS конечно всем хороша, но скорость записи у ней ограничена скоростью одного диска и через это не перепрыгнешь. Честно говоря, смотря на цифры raid10 без integrity понимаю, что хочу видеть что-то подобное, может процентов на 10 хуже, но никак не в разы.
Кроме того, в ZFS неудобно с шифрованием (zfs поверх четырех разделов dm-crypt – это какой-то идиотизм). В смысле с шифрованием все ок, но совершенно не ок с возможностью подмены данных (с обычным dm-crypt это невозможно, все развалится).
Кроме того, в ZFS нет writeback кеша на ssd. Только writethrough, что ограничивает скорость записи дисками (и нужно много памяти для самой zfs). Хотелось бы сверху всего иметь dm-cache.
Всё же видимо integrity и raid5 в linux катастрофически не совместимы и проще смириться и забыть оставшись с raid10. Может кто посоветует, как поднять скорость записи. Как я понимаю, в значительной степени проблема в том, что linux пишет прерывисто, когда работает с dm-integrity, есть лаг между окончанием предыдущей записи и началом следующей. При записи на сырой диск с помощью dd, при работе raid10 без integrity, такой проблемы нет. Странно, казалось бы проблема носит массовый характер, но в интернете мало об этом пишется. Каких-то толковых советов что подкрутить не нашел. Пробовал readahead увеличивать – без толку (правильно, тут же чистая запись), пробовал у raid5 stripe cache size увеличивать, ускоряет но лишь немного, и как я писал, смена io scheduler на bfq тоже несколько ускоряет.
В btrfs raid5 вроде ж не работает. Может стоит попробовать raid10 в btrfs? Там же вроде встроенная проверка целостности данных?
Может быть, имеет смысл разделить всё на два «раздела». Быстрый raid10 без integrity для часто изменяемых данных и медленный ZFS для остального. Но так неудобно.
Да и неудобство бэкапов с ext4. Снапшота нет, что там dump запишет – одному богу известно…