Может ли ZFS справиться с внезапной потерей мощности? (Какие события вызывают бассейн безнадежной, если сам диск не удалось или стать ненадежной)

все ресурсы говорят, что ZFS не имеет fsck или инструменты восстановления, используйте SSD с батарейным питанием для ZIL и т. д.

Если вилка вдруг почему-то потянуло (суммарная потеря мощности, несмотря на UPS и т. д., Но если нет физического повреждения, нет головы вылетает и т. д.), SSD-накопители кэш записи NVRAM и потом идти тихо....

какова вероятность того, что ZFS находится в согласованном состоянии (даже если некоторые данные были потеряны), а пул может использоваться / читаться, когда он перезагрузки?

обновление

Я понимаю, что на самом деле я хочу спросить кое-что ближе, какие события приведут к ситуации, когда ZFS откажется от возможности читать пул, несмотря на то, что данные в основном не повреждены? Неясно, что ZFS может восстановить (или может восстановить, учитывая правильное оборудование) и что он не может (или не может без правильного оборудования), потому что он делает так много внутри, чтобы самостоятельно проверять и исправлять вещи. Явно недостаточная избыточность + диск отказ (или другой главный вопрос оборудования) один случай, и полный wipe/overwrite должный к ошибке микропрограммных обеспечений/програмного обеспечения другие. Но при условии, что носители информации, аппаратное и программное обеспечение все еще работают надежно / правильно, что еще должно было пойти не так, чтобы результатом была потеря пула? Где свои пределы на отладке бассеина? Какие ситуации должны возникать прежде чем он не может, и что должно произойти, чтобы привести к ним?

5
задан Stilez
13.05.2023 9:07 Количество просмотров материала 3201
Распечатать страницу

3 ответа

какова вероятность того, что ZFS будет находиться в согласованном состоянии (даже если некоторые данные были потеряны) и пул будет доступен/читаем, когда он перезагрузится?

ZFS работает как транзакционный системы управления базами данных при этом старые данные не перезаписываются на месте при обновлении, как в традиционных файловых системах. Вместо этого новые данные записываются в другое место на диске, а затем структуры метаданных файловой системы обновляются, указывая на новые данные, и только тогда блок старых данных освобождается для повторного использования файловой системой. Таким образом, внезапная потеря мощности оставит старую копию данных на месте, если новые обновления данных не будут на 100% зафиксированы в постоянном хранилище. Вы не будете иметь половину блока заменены или что-нибудь подобное, что приводит к повреждению данных.

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

если вы используя ZFS с резервным хранилищем, эта же схема позволяет файловой системе выбирать между двумя или более резервными копиями данных при восстановлении файловой системы. То есть, если у вас есть две копии данного блока, и только одна из них совпадает с его сохраненной контрольной суммой, файловая система знает, что она должна восстановить плохую копию/копии с чистой.

этот ремонт может происходить на лету, когда вы попытаетесь прочитать или изменить данные, после чего файловая система может понять, что просила блоки не полностью кошерные-или во время zfs scrub операции. Обычно в пулах ZFS, к которым редко обращаются с файлами, запланирован периодический запуск очистки, так как в противном случае файловая система не обнаружила бы потерю аппаратных данных в ходе обычной работы. Обычно пулы ZFS, работающие на сомнительном оборудовании, показывают некоторое количество фиксированных блоков после каждой очистки.

очистка вроде как fsck для других файловых систем типа Unix и, кроме что это происходит в сети, в то время как файловая система смонтирована и может использоваться; это происходит в фоновом режиме и только тогда, когда пул в противном случае простаивает. Также,fsck реализации обычно проверяют только метаданные, но не данные, но контрольные суммы ZFS и так могут обнаружить ошибки в обоих. Если эти механизмы целостности решат, что один из блоков должен быть заменен,он может использовать контрольные суммы, чтобы решить, какой копией заменить поврежденные копии.

предполагая, что носители, аппаратное и программное обеспечение все еще работает надежно / должным образом, что еще должно пойти не так, чтобы результат был потерей пула?

насколько мне известно, такого случая нет. Либо одна из трех вещей, которые вы упомянули, не удалась, либо ZFS смонтирует пул и прочитает из него.

явно недостаточное резервирование + сбой диска (или другая серьезная проблема с оборудованием) - это один случай

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

возьмите простое двустороннее зеркало. Я думаю, вы думаете об одном из дисков, физически удаляемых с компьютера, или, по крайней мере, недоступных по какой-то причине. Но представьте, что сектор 12345 поврежден на обоих дисках. Тогда все умные контрольные суммы и избыточность в ZFS вам не помогут: обе копии повреждены, поэтому весь блок, содержащий этот сектор, не может быть прочитан.

а вот это умно: ведь в ZFS-это как файловая система и volume manager-в отличие от lash-up, как аппаратный RAID+ext4 или LVM2 + ext4-a zpool status команда скажет вам, какой файл безвозвратно поврежден. При удалении этого файла пул немедленно возвращается в неповрежденное состояние; проблема устранена. Плетка-это отдельная файловая система с RAID и LVM штук не могу.

какие ситуации должны возникать прежде чем он не может, и что должно произойти, чтобы привести к их?

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

по этой причине, с сегодняшними чрезвычайно большими дисками - 100 триллионов бит! - Я рекомендую вам настроить ZFS (или любую другую RAID или LVM систему), по крайней мере, с двойной избыточностью. С точки зрения файловой системы ZFS, что означает raidz2, 3-зеркала, или высший.

тем не менее, ZFS обычно хранит дополнительные копии всех метаданных файловой системы за пределами нормального уровня избыточности, используемого для обычных файловых данных. Например, двустороннее зеркало будет хранить 2 копии обычных пользовательских данных, но 4 копии всех метаданных. Вы можете набрать это обратно для производительности, но вы не можете отключить его полностью.


в руководстве ZFS есть глава о ЗФС отказов что вы можете найти полезным.

3
отвечен Warren Young 2023-05-14 16:55

поскольку мои комментарии становятся длинными, этот ответ кажется полезным. Уоррен Янг уже правильно изложил все основные соображения в своем ответе, поэтому я просто сосредоточусь на части "отражать или не отражать устройство SLOG?".


ситуация следующая:

я блуждаю до моей системы ZFS и без предупреждения отключаюсь и случайно выдергиваю P3500 ZIL на полпути через очень тяжелую сессию входящих данных и систему сразу замерзает. Благодаря хорошему PSU и MB, другие HDD/SSD не подвержены влиянию электрических переходных процессов. Все остальные диски/vol были избыточны, кроме ZIL. Я только что потерял некоторые последние данные, весь пул, или "это зависит", и если это зависит, то от чего? )

если подумать, обычно ZIL хранится на всех дисках пула и поэтому имеет ту же избыточность, что и пул. Если вы перемещаете его снаружи на отдельном устройстве для целей скорости, вам нужно установить другое зеркало самостоятельно, если требуется избыточность. Но даже если у вас его нет, вы просто потеряете крошечный объем данных в ZIL (восстановление из резервной копии требуется только в том случае, если требуются записи синхронизации, а данные приложения повреждены) и не сделаете весь пул непоследовательным (что во всех случаях будет восстановлено из резервной копии).


теперь на вопрос, Что выбрать:

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

Это зависит от вашей ситуации (как всегда):

  • если у вас есть только простое хранилище данных (классический файловый сервер), вы не получите много (или что-нибудь) от перемещения ZIL на SLOG-устройство, потому что SMB асинхронен и может обрабатывать внезапные потери питания. Я считаю, что для NFS это зависит от вашего выбора/программного обеспечения, но в настоящее время большинство людей используют SMB на всех трех основных системах.
  • Если вам нужна скорость и целостность (в основном для баз данных и хранилища виртуальных машин) вы будете (должны) работать с sync=always и вам будет нужно SLOG прибор для ZIL или оно будет очень очень медленн. В этих случаях вы можете либо зеркально отразить SLOG-устройство, либо решить, что событие "внезапный отказ оборудования SSD/контроллера или удаление и внезапная потеря мощности" достаточно редки, чтобы запустить его без. Затем вы можете решить, оправдана ли стоимость или нет (в большинстве случаев это так, поскольку остальное оборудование довольно дорого, но все же намного дешевле, чем коммерческое предложение.)
  • если вы хотите душевное спокойствие, но находитесь на бюджете, я могу рекомендовать Intel SSD 730. Он продается как продукт "геймер" или "энтузиаст", но очень похож на меньшую 3700 линию внутри, если вы сравните таблицы. Он также имеет супер-конденсаторы, как несколько источников на государстве сети. Конечно, официально Intel этого не признает, потому что тогда никто не будет покупать дорогие.

Edit: в отношении вашего комментарий:

NFS/ESXi / sync будет основным вариантом использования. В качестве затрат и рисков на мои плечи, я пытаюсь понять риск, нежели вам рекомендуется - если отделить ЗИЛ в отключения электроэнергии (или не предполагалось, что оно будет излишним, потеря защиту и т. д), но ничего не влияет, возможна потеря/повреждение данных, полученных ЗИЛ и еще не написанное в бассейн (последние несколько секунд данные на худой конец), и к возмещению, или существуют способы, которые внезапный сбой питания ZIL+(при условии, что в то же время нет другого сбоя) может привести к неисправности пула?

все точки допустимы только в предположении вашего примера, и ни одно из следующих условий не верно: (а) ошибки в ZFS, (б) полный отказ оборудования всех дисков пула, (в) человеческая ошибка/злой умысел.

  • ваши данные пула будут в безопасности, а целостность данных в состоянии покоя будет сохранена, что означает, что вы можете импортировать пул и его не будет поврежден с точки зрения ZFS. Это нормальное поведение потери мощности в ZFS и часть ее дизайна.
  • после того, как питание восстановлено, обычно ZIL будет считан, чтобы повторить потерянные транзакции (подобно RDBMS). Теперь возможно следующее:
    • ваше устройство SLOG не повреждено или поврежденные части могут быть восстановлены из slog mirror: все работает как обычно (после возможного resilver), поэтому ваши последние 5 секунд записываются обратно в бассейн.
    • ваш SLOG устройство повреждено: ЗИЛ не может быть откат должным образом. Я не знаю, пробуется ли частичный откат, но с вашей точки зрения это не будет иметь большого значения (потому что вам нужны все транзакции), поэтому я предполагаю, что ваши последние 5 секунд отбрасываются.

С точки зрения пула, даже этот худший случай довольно хорош-5 секунд потеряно, но пул можно импортировать (если его версия не менее 19). Но из приложения дело в том, что это может быть критическая ошибка - приложение просто записало 5 секунд данных синхронизации, получило подтверждение, что оно было написано успешно и после перезагрузки данные отсутствуют, но приложение этого не знает. Точная ошибка зависит от приложения. СУБД, возможно, стали непоследовательными и должны быть отремонтированы, большой файл данных может быть нечитаемым, системные файлы могут вызвать трудно найти сбои, зашифрованный раздел хранения может быть полностью невосстановимым-все потому, что часть этого отсутствует / неправильно.

еще один момент, который редко упоминается: твердотельные накопители могут неожиданно умереть, поэтому зеркальное отображение становится более важным, чем с жесткими дисками, но если вы поместите в систему два идентичных SSD, новых на заводе, ваши сбои могут произойти одновременно.


Вы можете прочитать хорошее резюме на Solaris ZFS, синхронные записи и ЗИЛ объяснил и некоторые детали на части ситуаций потери данных на эффекты потеря устройства ZFS ZIL SLOG, как я их понимаю. документация Oracle немного коротко, но также упоминает, что при нормальной работе ZIL автоматически переходит от SLOG к устройствам пула при сбое SLOG (конечно, у вас есть 5 секунд уязвимости).

страница man также содержит информацию об импорте пулов без ZIL:

 zpool import -a [-DfmN] [-F [-n]] [-c cachefile|-d dir] [-o mntopts] [-o
         property=value]... [-R root]

     -m      Allows a pool to import when there is a missing log
             device. Recent transactions can be lost because the log
             device will be discarded.
1
отвечен user121391 2023-05-14 19:12

Я использую ZFS на 4 серверах, а также мой ноутбук в течение 5 лет. У меня было несколько сбоев питания на серверах с интенсивной записью (сломанная прошивка, сообщающая ложные данные) и не замечала любое* ошибки данных / проблемы с монтированием пула (что не означает, что не было потери данных из последней транзакции, которая не закончила запись, как объяснялось ранее/CoW)

* за исключением одного события, когда я отклонился от руководства ZFS: У меня был ZFS на одном диске (iSCIS SAN LUN, сопоставленный на хосте) внутри KVM Guest и после копирования исходных данных я забыл сменить режим кэширования с WriteBack на WriteThrough. Пул (5 ТБ)был доступен для чтения, но имел ошибки 20k+. Мне пришлось воссоздать пул, используя данные с резервного сервера-благодаря ZFS snapshots и zfs send / receive я потерял только (что означает, что это может быть намного хуже) 2 мин данных. использовать память ECC, отключить всю буферизацию записи (по крайней мере, без BBU/FBU – subject для другой истории), RTFM и ZFS-это рок.

0
отвечен Jakub Juraszek 2023-05-14 21:29

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх