morfizm (morfizm) wrote,
morfizm
morfizm

Category:

FreeNAS + ZFS: Raid-Z or RaidZ2

Убедился на опыте, что 4.5T массив в Raid-Z (1.5T полезных данных на каждом диске) имеет вполне реальный риск с отваливанием ещё одного диска в процессе resilvering первого (люди на форумах таки правы, хоть я и не верил). Плюс ZFS в том, что случайный unrecoverable read error на одном из оставшихся дисков в процессе resilver не убивает его наповал: диск вылетел из массива и перестал распознаваться, но после detach volume, перезагрузки и re-import volume, диск подхватился, и заново проведённый resilvering нашёл ошибку в одном файле, благо, это было в одном из архивных snapshot'ов.

Отягощающим обстоятельством является факт глючности моего конфига, в результате чего resilvering одного диска я уже делал раза 4 - при перезагрузке почему-то слетает encryption, а если сделать detach и re-import, то один из дисков не "подхватывается". Volume становится degraded, а диск можно за-wipe'ить и добавить заново, он восстановится через resilvering. Возможно, если бы не делал так часто, то и не попал бы на случай с двойной ошибкой. При этом полный scrub делается раз в две недели, +ежедневный snapshotting на внешний диск, который подключен через USB и раз в месяц происходит rotation с off-site диском.

Отдельно отмечу, что форумы ещё раз правы в отношении рекомендаций против USB. Сервер не перезагружается месяц, всё время включен, никто не трогает провода, тем не менее, раз в пару недель USB на мгновение отключается, и уже раза три это было в момент копирования snapshot'а, что приводило к потерям в нескольких файлах в архиве после скраба архива.

Собираюсь:
- починить отягчающее обстоятельство методом пересоздания pool'а с нуля,
- починить issue с USB тем, что вместо USB буду использовать eSATA.

Что делать с архитектурой массива - неясно. Raid-Z явно не годится. Он максимизирует sequential read/write performance, но по IOPS у него performance не лучше, чем у 1 диска. У меня 2+2+3+3 диски, два диска на 5 в rotation'е для off-site бэкапа. Соответственно, в отношении места больше 5 мне смысла нет (с Raid-Z было 6, т.к. 3 диски пришлось считать как за 2). Есть несколько вариантов, которые я рассматриваю:

1. Raid-Z2. Места будет 4 вместо 6, это туговато, но можно за $100-120 купить ещё один диск на 2-3 и получить свои 6 на 5 дисках. Raid-Z2 даёт полную защиту от сбоев на двух дисках.

2. Сделать 2 vdevs с mirror и поместить их в stripe. Benefits: всё ещё max sequential read/write performance + double read IOPS. В случае ошибок на 2 дисках есть шанс 1/3 потери всего массива. С другой стороны, в случае ошибки на одном диске, resilvering будет происходить зачитыванием с другого диска (парного), а не со всех трёх других, это втрое уменьшает вероятность unrecoverable read error. С местом будет совсем туговато (4) и не понятно, как его занедорого увеличить. Ещё два диска вставлять мне просто некуда.

3. Сделать 2 vdevs с mirror и поместить их в jbod. Benefits: double read IOPS, но sequential read speed может быть в 1.5-2 раза ниже гигабита. Диски будут узким местом. По сравнению с предыдущим вариантом - чуть лучше по безпасности: если умирают 2 диска и с вероятностью 1/3 это происходит на одной паре, то теряешь только эту пару, а не весь массив. Кроме того, массив фундаментально проще, в случае багов можно будет легко восстановить файлы с отдельных дисков без требования целостности оригинального массива. С местом будет нормально (5).

Что вам кажется правильнее?
Tags: 1, devices, polls questions and social games, software
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 25 comments