Ошибки 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-ошибок просто так — это либо дефект, либо плохой контакт в слоте (переустановите диск, проверьте питание).