ZFS performance Q: hw RAID или RAIDZ(2)

А вот такой практический вопрос.

Есть, к примеру, 6-8 не очень быстрых дисков (7200 rpm, что-нибудь типа Barracuda ES или как они теперь правильно называются, Seagate Constellation?). Двухтерабайтников, скажем (потому и не 10k/15k).

К тому же примеру, есть какой-то 8-портовый контроллер. Вот прямо на руках есть Adaptec 5805. Покупать что-то еще новомодное и быстрое (столь хвалимые LSI 9280, к примеру) не хочется, жаба не велит.

Процессор на тазике будет достаточно быстрый, что-нть в духе i7-920, памяти тоже не пожалею (12G скорее всего).

Хочется на этом месте поднять ZFS (потому что очень удобно на практике), предположительно на FreeBSD, но солярку (в каком-то лице) тоже можно рассмотреть.

Собственно, вопрос:

А как это правильно конфигурировать то:

  • JBOD или 6(8) single-disk arrays и ZFS поверх?
  • Или RAID6 на контроллере и ZFS "на одном томе"?
Вопрос касается именно производительности, причем типичных паттернов я вижу два:
  • I like to move it, move it большими файлами (кино, бэкапы, да мало ли в хозяйстве больших файлов). Т.е. линейное чтение-запись во всей красе.
  • Доступ по iscsi, причем тома будут прямо вот средствами ZFS нарезаны. А на этих томах - всякое разное.

Интернеты - противоречивы. У одних бойцов RAIDZ несколько медленнее, у других - наоборот. Как правило, из тестов непонятно, куда RAIDZ упирался, мог ведь и банально в память/процессор.

Помимо RAIDZ2/RAID6 рассматриваю еще и вариант с mirror, но он для 8 дисков какой-то обидный.

Comments

Я при экспорте дисков через jbod/single disk arrays потенциально вижу растрачивание "впустую" кэша контроллера (типа если гонять данные для raid1), ну и увеличение прогоняемых данных соотвественно.

Ну там этого кэша всего полгига (в конкретном моем 5805). На фоне 12G RAM из коих я могу отдать ZFS-у скажем 8 запросто - не слишком существенно.

А bandwidth и у памяти и у PCIe x8 - хватает с запасом на первый взгляд. Ну сколько диски могут писать sustained, ну пусть 200Mb/sec (и то вряд ли), на восемь дисков - 1.6Gb/s, по x8 (PCIe 2.0 x8) прокачивается 3.5 в видеокарту.

Я про ту память что кэширует запись, точнее flushы всякие, для random writes, которой 512 как раз. Про остальную то понятно, что её в разы больше и влиять она может заметнее намного, а может и не влиять, если "А на этих томах - всякое разное" это разное с directio, например.

Ну я так надеюсь, что random writes покэшируются через ZIL (который мне не впадлу сделать на паре SSD)

Пойду почитаю про ZIL. Но вообще про еще пару SSD в посте вроде не было ничего, а они N денег то стоят :)

Они денег, конечно, стоят. Но 30Gb стоит ~2000р, если не меньше, а большие емкости для log не нужны.

http://wiki.freebsd.org/ZFS судя по всему, они не очень рекомендуют JBOD
С соляркой ты побегаешь по граблям её прекрасного окружения пользователя. Но вот та же нексента - это солярка с ZFS.
Насколько я понимаю, у ZFS проблема работы с размерами блока - оно всё время пытается угадать его (косвенно, по данным чтения наискось .
У ZFS вообще проблема общая со всеми нетривиальными системами - оно хорошо работает пока хорошо работает. А вот обвязка восстановлений из нештатных ситуаций там как везде. Если заранее не подумал и не отработал - читай маны и форумы на ходу.
То что там у кого-то медленее, у кого-то быстрее - все всё время забывают про ZIL и что его не всегда можно использовать. Я раз 5 наткнулся на умные разговоры про тормозящий ZFS, где в итоге оказывалось, что надо или СУБД настраивать особым образом, или ZIL отключать.
iSCSI я так понимаю сегодня это отдельный вопрос, человечески нигде толком не работающий. Опираюсь на обсуждение в .

А в чём удобство ZFS? Кроме того, что я на ходу могу менять свойства папочек, котрые они почему-то называют файловыми системами я ничего прямо супер интересного там не нашёл.

Удобств у ZFS довольно много
- можно растить на ходу (понятно, для mirror - двойками дисков, для raidz - тройками и более), но можно.
- можно удобно нарезать тома со своими свойствами (без чексумминга, например).
- ну и собственно то, что есть один пул, а нету кучки файловых систем фиксированного размера - крайне удобно.
- снэпшоты, экспорт-импорт
Плюс к этому - no fsck, проверка целостности контрольными суммами.
Там, вестимо, есть грабли, на которые я уверенно наступал (с UTF8), но если про них знать, то жизнь прекрасна уже несколько лет (надо, кстати, проверить, не поправили ли его).

А размер блока можно явно поставить через ashift (в солярке через zdb, в freebsd - да, нужно одно место попатчить, известно какое).

А какой-то рекомендации не использовать JBOD на FreeBSD я не видел. Живу так (с пятью дисками в NAS) несколько лет, арбайтед.

Да, еще вдогонку к удобству.
Можно на ходу, по очереди (и не очень быстро) поменять в массиве N-терабайтники на K-терабайтники и отрастить ему таким образом объем на ходу.

Редкий гоголь аппаратный рейд так умеет.

Вообще, там ровно обратное написано "ZFS is designed to be used with "raw" drives - i.e. not over already created hardware RAID volumes"

Ну а с другой стороны, вдруг HW raid быстрее?

А да, слушай, лох. Судя по обсуждениям там как звёзды встанут по скорости.

когда у меня стоял 3ware 9550 с 9 дисками баракудами обычными 7200 1.5Тб raid5 и поверх стоял ZFS кажется 8 версии от 8 фринаса то скорость по dd была 600Мб/с
сейчас стоит 8 дисков баракуд 5900 2Тб на IBM ServeRAID BR10i в RAIDZ1 на ZFS 28 версии от 9 фринаса и скорость по dd у меня 400Мб/с
в первом случае проц был Е7500 во втором Q8400
памяти 8Гб
вот и думай что тут повлияло в итоге :)

по сети я сейчас имею порядка 200Мб/с и впринципе если как-то решить проблему мелких файлов и каталогов с большим количеством файлов то я был бы доволен

А вот поясните тёмному, в каком значении тут имеется ввиду JBOD?
Мне попадалось 2 варианта:
1. Просто пучок одиночных дисков. Каждый видится системой отдельно.
2. Тот-же пучок, но обьединённый в массив равный сумме их емкостей (span по виндовой технологии )

Просто пучок, конечно. ZFS (ОС) видит их отдельно.

Сенкс.

Один слегка битый диск затормозить чтение может ещё и не так.
Если сравнивать разные варианты организации дисков, то уж либо на одном и том же наборе, либо после анализа у всех отдельных дисков скорости доступа по всей поверхности.

А у этих твоих бардакуд на 5900 - какой размер сектора настоящий?

Если ты можешь мелкие файлы отделить от крупных, то может быть iSCSI?

4k
там у сигейта всё хитро теперь
какая-то новомодная технология

Технология Seagate SmartAlign это встроенное микропрограммное
обеспечение, которое управляет состояниями чтения-изменения-записи,
возникающими при наличии невыровненных секторов на дисках с размером
сектора 4 КБ (этот новый формат называется Advanced Format). Технология
SmartAlign не выравнивает разделы диска заново; она динамически управляет
состояниями чтения-изменения-записи внутри диска без участия главного
компьютера и не требуя специальных знаний.
Без использования технологии SmartAlign состояния чтения-изменения-записи
понижают производительность жесткого диска. Проведенное компанией
Seagate тестирование показало, что технология SmartAlign поддерживает
стабильно высокую производительность жестких дисков Advanced Format для
подавляющего большинства задач на настольных компьютерах. Выбирая
технологию SmartAlign, вы получите жесткий диск, который ведет себя точно
так же, как прежние диски с секторами размером 512 байт, без использования
дополнительных программных средств.

Я бы с ashift поигрался, если FS не загрузочная (подробности тут: http://blog.lexa.ru/2010/11/06/freebsd_zfs_performance_prosto_vozmite_mo... и далее по ссылкам).

Но у себя я от ashift=12 пользы не увидел, это WD Green с 4k-секторами

а там собственно 2 варианта игры
в оба сыграл
с 4к лучше
на том и успокоился

но я таки пробовал собирать и на 512 и на 4к
на 4к было быстрее, не смотря на всю их SmartAlign
конкретных цифр уже не вспомню, но заметно - процентов на 15 примерно

ага, поэтому и делают диски "raid edition"

Да, raid edition избавляет от проблемы, когда всё встаёт раком надолго, но вот те же сигейты, даже в RE, по спецификации плохой сектор могут пытаться перечитывать несколько десятков раз, со всё возрастающими интервалами. Поэтому в реальности наихудший вариант - когда такой сектор всё-же считывается попытки с пятой. В итоге и релокейта нет, и IOPSы половинятся.

А разве RAIDZ том можно ресайзить?
В букварях вроде пишут что нет, можно только обычный ZFS.
Я пытался в виртуалке на нексенте собирать raidz из разных
по обьёму дисков - так она их всех считает одинаково маленькими.
Или если постепенно заменить все на большие
(с пересинхронизацией после каждой замены), оно, таки, подрастёт?

когда все поменяете на большие том "подрастет"

Сенкс. Попробую на нексенте. (она у меня тоже на ESXi 4.1 живёт)

Да, постепенно заменить все на большие.

Попробовал, сработало. Алексей, а какое, на ваш взгляд,
оптимальное количество винтов в RAIDZ ?

Ну так, по идее, чем больше - тем лучше (тем оно ближе к страйпу). Это один общий ответ.

Второй общий ответ "наверное зависит от характера нагрузки" :)

То-есть лишь-бы не меньше 2х (1-данные + 1 "чётность")?
Т.е. чем больше винтов, тем меньше накладные расходы на надёжность,
и принципиального ограничения нет?

Для двух лучше mirror, наверное (из общих соображений, ума надо меньше а значит может быть быстрее).

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

То есть я вот для 8 дисков буду делать RAIDZ2 (два диска на четность)

Ок, понятно, спасибо...

Вот попадалась мне такая ссылка от 2009 года про надежность raid разных в зависимости от числа дисков. Показалась интересной.
http://blog.kj.stillabower.net/?p=93

Это, как я понимаю, симуляция монте-карлой.

Она не учитывает двух вещей, важных на практике
1) Бывает, что диски начинают уходить толпой. Были примеры хреновых моделей, которые вдруг начинали сыпаться все (смазка высыхала, например)
2) Rebuild массива - (часто) это гораздо более высокая нагрузка чем обычно. Как следствие, все вместе сильно греется и шанс потерять еще один диск - растет.
Окончательные потери массивов при ребилде RAID-5 я видел почти лично - в соседней/дочерней компании.

Это update к предыдущей записи, там есть в начале ссылка. Но и там не очень много про модель.
Ну и про пункты 1 и 2 трудно что либо возразить, да и графики приведенные там вроде убеждают вполне. По крайней мере меня, хотя на практике увидеть не довелось (были маленькие диски - быстрый ребилд, дисков было не много - 6штук scsi, да и был backup всегда под рукой - база данных, ну и давнооо это было). Но очень сильно удивило количество вылетевших дисков в течении первого года.

В 2000-2001-м году в Рамблере падеж дисков был порядка 1% в месяц. Это дорогие, SCSI и все понты.

Говорят, с тех пор стало получше.

а зачем солярка? фря вроде нынче тиер платформа для zfs

А не знаю, вдруг выяснится какое-то тайное знание, которое в пользу солярки.

А зачем 5805 ?
Продаем 5805 покупаем HBA LSI 2008 -> на разницу покупаем не 12, а 24(а то и 48) памяти
И вперед.
А вот BSD vs Solaris в плане ZFS на одинаковом железе я не встречал.

Как бы это сказать, э

1) Продать компьютерные запчасти можно только с какой-то очень большой потерей стоимости.
2) 24G - не проблема, если оно нужно, 4-гиговый DIMM стоит 600 рублей. Но нужно ли, вот в чем вопрос.

IMHO, настоящих буйных мало и поэтому вряд ли кто ещё страдал такими проблемами ;)
Мне почему-то кажется, что результатом этого вопрошания будет тест данных конфигураций с аккуратно оформленными циферками в блоге ;)

Да у меня на это железа маловато. Чтобы засетапить сторадж-сервер, мне надо sas-контроллер вынуть из рабочей машины, а значит делать это надо быстро (ну, какое-то время я поживу с резервной копией этих файлов на одиночных дисках, но вообще это как-то скучно...)

У меня железа достаточно, но я обычно Solaris использую или его форки, про BSD я как в анекдоте про кошек - готовить не умею.

У меня обратная ситуация - смотрел на солярку последний раз пару лет назад, стошнило. До того, использовал только по необходимости, на санах.

Но мысль поднять сторадж-сервер именно на нем - зачесалась в голове, потому что там SRP есть (в OpenSolaris 11 - точно, а про остальные пока не понял), а в SRP много счастья.
В FreeBSD - есть драйвер (в сорцах ядра лежит), но нету user-level как я понял.

SRP я пока не осилил, хотя хочу страшного (странного)
Системник на Q67 + core i5 + 16 Gb + 6x1(2,3,4)Тб
В него двух портовый IB и к двум esxi серверам
Пока вопросы и с OpenSM и с SRP

А на системнике - какая ОС? OpenSM то можно и на винде поднять.

SRP на Linux у меня сегодня поднялся почти сам, вообще без проблем, делал тупо как обезьяна, по инструкции (см. сегодняшний вечерний пост)

Solaris 11 + ESXi 4.1 u1

В-общем, вот тут чувак пишет, что добился счастья. И спортировал IB-шный userland (включая OpenSM) на OpenSOlaris 11 и Openindiana 151.

http://syoyo.wordpress.com/

Но. Оно у него какое-то долбанутое на голову (исходники на bitbucket, патчи на гитхаб), без поллитры явно не разобраться за 5 минут.

Разберетесь - напишите. Мне пока неактуально т.к. у меня на всех клиентских машинах OpenSM есть, а солярисного сервера, наоборот, нету :)

собирал ZFS (Solaris 11) страйп из зеркал из 4 sata 5400
пока тестируемый кусок попадает в кеш - iops за 5000 зашкаливает
пока тестируемый кусок в два раза больше кеша - iops за 2000 зашкаливает

а по честному 4 * 100 = 400 iops :)

много кеша позволит большинство нагрузки свести к линейной.

Вопрос немного в другом. Вот в линейном случае что будет быстрее, RAIDZ2 или просто пул поверх RAID6?
И намного ли быстрее, стоит ли овчинка того? В остальном то RAIDZ удобнее...

IMHO если процессор нормальный и памяти достаточно и она быстрая то RAID6 будет все конструкцию тормозить.
я на одних и тех же дисках 4 sata проверял на
atom + 2 GB
2xXeon 3000 (старые 604 сокет) + 6 GB
celeron E3400 + 8gb
core i5 + 15 gb

по производительности ZFS они выстроились как написал - celeron на DDR2 обошла пару зеонов на ECC Reg

А вот интересно что лучше
- i3-2xxx, скажем 3.3Ghz и два ядра
- i5-2405S - 4 ядра, 2.5Ghz
?

Sun/Oracle крайне не рекомендуют собирать ZFS не прямо на шпинделях. Крайне. По многим соображениям.
Так что -- RAIDZ и только он. Ну, возможно, не raidz, а jbod средствами ZFS, это по потребности. Но никаких RAID-контроллеров под ZFS быть не должно, только HBA.