Что означает постоянная ошибка ZFS?

18

Несколько из них permanent errorsбыли опубликованы на моем Zpool сегодня.

  pool: seagate3tb
 state: ONLINE
status: One or more devices has experienced an error resulting in data
        corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
        entire pool from backup.
   see: http://zfsonlinux.org/msg/ZFS-8000-8A
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        seagate3tb  ONLINE       0     0    28
          sda       ONLINE       0     0    56

errors: Permanent errors have been detected in the following files:

        /mnt/seagate3tb/Install.iso
        /mnt/seagate3tb/some-other-file1.txt
        /mnt/seagate3tb/some-other-file2.txt

Изменить: я уверен, что эти CKSUMзначения точны. Я редактировал данные и, возможно, исказил их по ошибке. Возможно, их было 0. К сожалению, я не могу найти окончательный ответ в своих заметках, и теперь ошибки устранены, поэтому я не уверен, но все остальное точно / отражает то, что сообщал zpool.

/mnt/seagate3tb/Install.iso один пример файла, о котором сообщают, что он имеет постоянную ошибку

Вот где я запутался. Если я сравниваю мои «постоянные ошибки» Install.isoс резервной копией того же файла в другой файловой системе, они выглядят одинаково.

shasum "/mnt/seagate3tb/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/seagate3tb/Install.iso
shasum "/mnt/backup/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/backup/Install.iso
cmp /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
diff /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso

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

Как утверждают документы :

Ошибки повреждения данных всегда фатальны.

Но, основываясь на моих элементарных проверках файлов, я не уверен, что понимаю определение fatal.

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

Действие: Восстановите файл, если это возможно. В противном случае восстановите весь пул из резервной копии.

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

Я видел другие статьи с такой же ошибкой , но мне еще предстоит найти ответ на мой вопрос.

Что такое постоянная ошибка с файлом? Есть ли какая-то проблема более низкого уровня с файлом, которая просто не очевидна для меня? Если так, то почему бы не обнаружить это shasumкак разницу в файле?

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

Уилл Хейли
источник
У вас есть снимки?
ewwhite
3
Буду ли я приветствовать вас на ServerFault, поскольку никто не сказал этого? Это выглядит для меня как превосходный первый вопрос, и я надеюсь, что он продолжает подбирать поучительные ответы. Я надеюсь, что вы решили остаться в SF и внести свой вклад.
MadHatter
Спасибо @MadHatter! Я ценю ваш добрый прием, и, конечно, буду приставать к СФ. Я уже добавил его в свой краткий список сообществ SE.
Уилл Хейли

Ответы:

22

Формулировка zpool statusнемного вводит в заблуждение. Постоянная ошибка (в этом контексте) указывает на то, что произошла ошибка ввода-вывода и была зарегистрирована в журнале ошибок SPA (распределитель пула хранения) для этого пула. Это не обязательно означает, что существует необратимое повреждение данных.

Что вы должны сделать, это запустить zpool scrubв пуле. Когда очистка завершится, журнал ошибок SPA будет повернут и больше не будет отображать ошибки до очистки. Если очистка не обнаруживает ошибок, то zpool statusбольше не будут отображаться «постоянные» ошибки.

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

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

РЕДАКТИРОВАТЬ: Полностью согласен с @bahamat, что вы должны инвестировать в избыточность как можно скорее.

Том Шоу
источник
Журнал ошибок SPA, сообщающий об этом как «постоянный», действительно, кажется, немного вводит в заблуждение. Он zpool scrubсделал именно то, что вы предложили @ Том-Шоу, и ваше объяснение имеет смысл. Я больше не вижу никаких «постоянных ошибок» в этом массиве после очистки. Я не думал о фатальных ошибках в контексте неудачного чтения. Я думаю, что это просто временная ошибка ввода-вывода при чтении, как вы предлагаете. Я также полностью согласен с необходимостью резервирования.
Уилл Хейли
Том, давно тебя не видел. Добро пожаловать.
the-wabbit
7

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

Глядя на конфигурацию вашего пула, похоже, что у вас нет избыточности. Это очень опасно. Вы не получите любой из самовосстанавливающихся преимущества ZFS, но он будет иметь возможность сказать вам , когда было повреждение данных. Обычно ZFS автоматически и бесшумно исправляет испорченное чтение, но в вашем случае это невозможно. Выглядит так, как будто вы уже запустили, zpool clearпотому что CKSUMсчетчик 0для обоих дисков.

К сожалению, без реплик на самом деле нет способа узнать.

bahamat
источник
2
Не zpool clearочистит ли само сообщение об ошибке, а не только количество ошибок? Странно, что сообщение сохраняется, но ошибки не отображаются.
user121391
2
Мои извенения. Я пропустил файлы из списка постоянных ошибок для конфиденциальности. При редактировании этого вывода я также искажал значения CKSUM и терял ценный контекст. Я отредактировал вопрос, чтобы отразить реальность. @ user121391
Уилл Хейли,
В этом случае, если показанные вами числа верны, то, скорее всего, где-то произошла аппаратная ошибка. Поскольку оба диска показывают, что CKSUM countsэто может быть контроллер, кабель или любое совместное оборудование между двумя дисками. Также возможно, что оба диска выходят из строя. В любом случае это подчеркивает необходимость добавления избыточности как можно скорее и проверки указанных файлов на наличие повреждений.
Багамат
У OP, похоже, нет никакой избыточности; vdev имеет 56 ошибок CKSUM, а пул имеет 28 ошибок CKSUM. Поэтому я не уверен, что вы имели в виду под «обоими дисками» в своем предыдущем комментарии. Я согласен с вашей точкой зрения о значении избыточности.
CVN
Ты прав. Я неправильно прочитал имя пула, как если бы это был другой диск. Спасибо что подметил это.
Багамат