2gusia (2gusia) wrote,
2gusia
2gusia

Category:

Проверка целостности данных на ZFS NAS - scrub

Неспешно прикидывая таблицу функциональности NAS обнаружил в своих инструкциях досадный пробел. Данные надо не просто хранить. Хорошо бы время от времени проверять, что всё в порядке. Ведь холодные данные на дисках имеют свойство незаметно портиться, "протухать". К счастью, у нас на NAS zfs, умеющий адресовать эту проблему.Сегодня обсудим как.

Немного теории
Перевод из Вики по ссылке выше

Проведённое NetApp исследование в реальной жизни на более чем 1,5 млн жестких дисков в течение 41 месяцев выявило более 400 000 примеров протухших данных, из которых более 30 000 не были обнаружены контроллерами аппаратных RAID. Еще одно исследование, проведенное ЦЕРН в течение шести месяцев и с участием около 97 петабайт данных, показало, что около 128 мегабайт данных были необратимо повреждены.

Но это на RAID контроллерах и дисках корпоративного класса. Ваши и мои данные на десктопном железе протухают несколько быстрее.
Традиционное решение проблемы проверки целостности данных - хранение вместе с ними контрольной суммы. Считываем данные, сверяем суммы, если OK - считаем данные не повреждёнными.
А традиционное решение проблемы восстановления повреждённых данных - избыточность. Хранение 2 и более копий (зеркало, как пример RAID1) и расчёт, хранение и сличение кодов чётности ( как пример - RAID5).

Одно из важнейших положительных свойств ZFS состоит в том, что и проверка целостности и восстановление повреждений (если есть избыточность - mirror или raidz) производится автоматически на уровне файловой системы при любом чтении данных. Но читать все данные не всегда удобно. Есть команда scrub (от англ. чистить, мыть, скрести)

ВАЖНО. Во время скраба пул доступен, но его производительность уменьшается. Хотя приоритет - за другими задачами. Поэтому, к примеру, качать с-на пул торренты и одновременно делать ему скраб идея так себе. Работать будет, но долго и с избыточной нагрузкой на диски.

На практике
Из командной строки вызывается
zpool scrub Pool
- для пула по имени Pool
Если дать ключ -s текущий скраб будет остановлен
zpool scrub -s Pool

В nas4free вызов команды zpool scrub выведен и в вебгуй
Через Disks|ZFS|Pools|Tools скраб можно запустить (и остановить при необходимости)


После запуска результат можно посмотреть через
zpool status
в командной строке
Или в Disks|ZFS|Pools|Information в вебгуе

На картинке выше где scan: сказано, что идёт scrub, но так как он только начался, оставшееся время определить нельзя, надо подождать. Со временем скорость растёт, но для больших пулов полная проверка запросто может продлиться порядка суток. Скорость зависит от
- производительности процессора
- заполненности пула (в отличие от аппаратных RAID пустое место НЕ читается)
- скорости дисков. Особенно если диск при смерти, скраб может затянуться очень надолго.

Я рекомендую после запуска скраба взглянуть на статус сразу и ещё раз минут через пять. В норме все три правых столбца должны быть нулями. Но нередко там появляются небольшие цифры - это как раз сообщение о том, что скраб проверяет и по возможности исправляет данные (и метаданные).

Если на одном из дисков лезет несколько десятков (и более) ошибок - у вас проблема. Скорее всего (в этом порядке) SATA кабель, сам диск, порт контроллера подыхает и нуждается в замене. Либо диску не хватает питания.
Советую остановить скраб и взглянуть в логи, на смарт этого диска и поискать корень проблемы.

Если десятки (и более) ошибок лезут на ВСЕХ дисках - НЕМЕДЛЕННО ВЫКЛЮЧАЙТЕ СКРАБ, а затем и весь NAS. Хорошие шансы, что у вас битая память. Проверяйте, гоняйте мемтест. Хотя по некоторым практическим примерам ZFS удаётся отработать львиную долю, более 99%, ошибок вызванных сбоями в памяти, всё же битая память без контроля чётности - годный способ загубить всю информацию на пуле при скрабе. Именно поэтому в идеальном мире (и в корпоративной практике) ZFS используют на ECC (то есть с аппаратным контролем чётности) памяти. Впрочем, как и остальные файловые системы. Но Intel решила, что домашний пользователь рылом не вышел для ECC. А AMD стала слишком слаба, чтобы спорить хотя было время...

Кстати, скраб можно запускать по крону. Но именно из-за возможности вляпаться в битую память я этого делать НЕ советую, если память у вас не ECC. Да, это крайне маловероятная ситуация. Битая память должна почти работать. Шалить самую малость, не вешать систему. Но всё же гадить. Поэтому у сотен камрадов, которые общаются в профильной ветке на хоботе, такого не было, чтоб битая память именно и только на zfs повлияла. Но в Сети я выловил пару сообщений. Так что хоть и крайне маловероятно - но бережёного...

И, наконец, как часто делать скраб? IMHO в домашней практике не чаще раза в месяц и не реже раза в год на каждом из пулов.
Tags: nas, nas4free, zfs
Subscribe

  • День отца

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

  • Игра с картой

    Обсуждали сегодня построение некоторой абстрактной карты (видов сервисной робототехники, хотя и не важно). Как пример нашел карту из Игры престолов.…

  • Жизнь, она смешнее анекдота

    Мне сейчас друг напомнил коммент месячной давности. Как раз тогда в Суэцком канале контейнеровоз застрял. Улыбнитесь и вы :)

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 52 comments

  • День отца

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

  • Игра с картой

    Обсуждали сегодня построение некоторой абстрактной карты (видов сервисной робототехники, хотя и не важно). Как пример нашел карту из Игры престолов.…

  • Жизнь, она смешнее анекдота

    Мне сейчас друг напомнил коммент месячной давности. Как раз тогда в Суэцком канале контейнеровоз застрял. Улыбнитесь и вы :)