Victor3D

Ошибки CRC при синхронизации ZFS пула

Счётчик CKSUM в zpool status — это накопленные ошибки за всю жизнь пула, не «прямо сейчас». Ключевое — посмотреть, на каком диске и растут ли они.

Шаг 1. Посмотрите текущий статус подробно

zpool status -v data

Флаг -v покажет список файлов, которые затронуты, если были невосстановимые ошибки. Если файлов нет — значит все ошибки были исправлены (перечитаны/восстановлены с зеркала).

Обратите внимание на столбцы:

    NAME        STATE     READ WRITE CKSUM
    data        ONLINE       0     0     6
      ...

· READ — ошибки чтения; · WRITE — ошибки записи; · CKSUM — ошибки контрольных сумм (CRC и др.).

Если CKSUM = 6 на уровне пула, но на дисках нули — это исторические ошибки, уже отработанные.

Шаг 2. Проверьте, на каком уровне ошибки

zpool status -v data

Смотрите, на каком диске ненулевые счётчики. Если на новом диске (nvme1n1) — вероятно, он с дефектом/плохой контакт. Если на старом single — он мог сбоить во время чтения при resilver (плохо, но если ZFS перечитала — данные целы).

Шаг 3. Сбросьте счётчики и запустите scrub — это главный тест

Счётчики ошибок накапливаются и не сбрасываются сами. Чтобы понять, есть ли проблема сейчас:

# сбросить счётчики ошибок пула
zpool clear data

# запустить проверку целостности всех данных
zpool scrub data

Дождитесь окончания:

watch -n 5 'zpool status data'

После scrub:

· Если zpool status -v data показывает 0 ошибок — все данные целы, CRC-ошибки были разовыми (контакт, кабель, глюк шины), проблема решена. · Если снова появились ошибки — смотрите -v: там будут конкретные файлы (если ошибка невосстановимая) и конкретный диск (если диск сбоит).

Шаг 4. Если scrub показал ошибки — как узнать файлы

zpool status -v data

Внизу будет блок вида:

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

        /mnt/data/some/file1
        /mnt/data/dir/file2

Это реально повреждённые файлы (ZFS не смогла восстановить ни с одной копии). Их надо:

· восстановить из бэкапа; · или удалить, если не нужны.

Если такого блока нет — повреждённых файлов нет, только исторические счётчики.

Шаг 5. Проверьте SMART нового диска

Раз были CRC — стоит глянуть здоровье нового диска:

smartctl -a /dev/nvme1n1

Смотрите:

· Media and Data Integrity Errors — ошибки целостности; · Error Information Log Entries — журнал ошибок; · Percentage Used — износ; · Critical Warning — критичные предупреждения (должно быть 0x00).

Если Media and Data Integrity Errors растёт — диск проблемный, менять по гарантии. NVMe обычно не дают CRC-ошибок просто так — это либо дефект, либо плохой контакт в слоте (переустановите диск, проверьте питание).