В файловой системе ZFS, являющейся сочетанием файловой системы и диспетчера томов, могут возникать сбои различных типов. В начале этой главы описываются различные типы сбоя, а затем рассматривается их идентификация в работающей системе. В завершение приводятся инструкции по устранению сбоев. В ZFS могут возникать ошибки трех основных типов:
Следует отметить, что в одном пуле могут возникать все три типа ошибок, поэтому полная процедура восстановления включает в себя поиск и исправление всех ошибок поочередно.
Если устройство полностью удалено из системы, ZFS обнаруживает, что открыть устройство невозможно, и переводит его в состояние UNAVAIL. В зависимости от уровня репликации данных пула, в некоторых случаях это может привести к недоступности всего пула. При удалении одного диска в зеркальном устройстве или устройстве RAID-Z пул остается доступным. При удалении всех компонентов зеркала и нескольких устройств в составе RAID-Z или удалении устройства верхнего уровня с одним диском пул переводится в состояние FAULTED. До повторного присоединения устройства доступных данных нет.
Термин "повреждение" охватывает широкий спектр возможных ошибок. Ниже приведены следующие примеры ошибок:
временные ошибки ввода/вывода вследствие неисправности диска или контроллера;
повреждение данных на диске вследствие воздействия космических лучей;
ошибки драйвера, приводящие к передаче данных в неправильное местоположение или из него;
непреднамеренная перезапись части пространства физического устройства другим пользователем.
В некоторых случаях эти ошибки являются временными, например, случайная ошибка ввода/вывода при возникновении проблем в контроллере. В других случаях повреждения носят постоянный характер, например, повреждение данных на диске. Тем не менее, постоянный характер повреждения не обязательно указывает на то, что эта ошибка снова возникнет в будущем. Так, если администратор случайно перезаписывает часть диска, сбой оборудования не фиксируется и замена устройства не требуется. Точная идентификация сбоев устройства является сложной задачей, которая более подробно рассматривается в одном из следующих разделов.
Повреждение данных происходит в том случае, если одна или несколько ошибок устройств (указывающих на отсутствие или повреждение устройств) влияют на виртуальное устройство верхнего уровня. Например, на одной стороне зеркала может возникать большое количество ошибок, но это не приведет к повреждению данных. Однако в случае возникновения ошибки на другой стороне зеркала в том же расположении данные будут повреждены.
Повреждение данных всегда носит постоянный характер и требует специальной процедуры устранения сбоев. Даже при исправлении или замене основных устройств исходные данные утрачиваются окончательно. Чаще всего в этом случае необходимо восстановление данных на основе резервных копий. Ошибки в данных регистрируются по мере их возникновения, и для их обработки используется программа очистки диска, описанная в следующем разделе. При удалении поврежденного блока в ходе следующей очистки фиксируется отсутствие повреждений, и вся информация об ошибке удаляется из системы.