Пока пользуешься 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 запишет –
одному богу известно…