
TLDR; В моем зеркальном пуле ZFS есть ошибки контрольной суммы. Я заменил контроллер, думая, что это наиболее вероятная причина, но ошибки не исчезают. Очистка пула временно сбрасывает их, но они возвращаются при следующем запуске очистки. Как мне очистить их навсегда?
Полная история: У меня уже некоторое время работает ZFS mirror-0 на Ubuntu 20.04.2 LTS. Когда один из дисков сломался, я воспользовался этим, чтобы заменить оба диска на более крупные, а также добавил карту SATA-III PCI для новых дисков (старые были подключены к встроенному контроллеру SATA II, так как у меня не было больше доступных портов SATA III). После нескольких недель работы на новых дисках и контроллере ZFS пожаловалась на ошибки контрольной суммы на обоих новых дисках, и в результате массив перешел в «деградированное» состояние.
Некоторые исследования привели меня к выводу, что поскольку оба диска показывали одинаковое количество ошибок контрольной суммы, проблема была гораздо более вероятной в контроллере, чем в самих дисках. Поэтому я вытащил новый контроллер и пока установил диски обратно на встроенный контроллер SATA II, намереваясь заменить плату контроллера, как только удостоверюсь, что проблема именно в этом. Затем я удалил два файла, которые zpool status -v
отображались как имеющие постоянные ошибки, выполнил команду zpool clear data
для сброса ошибок и запустил очистку.
К сожалению, после очистки ошибки появились снова, только теперь a -v
больше не отображал файл, а только адрес (inode, я полагаю), предположительно для одного из файлов, которые я удалил ранее. Я попробовал снова, с тем же результатом. Каждый раз, когда я запускаю очистку, он возвращается со следующим результатом:
root@watchman:~# zpool status -v
pool: data
state: DEGRADED
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: scrub repaired 16K in 0 days 09:10:20 with 1 errors on Sat Jul 24 15:48:21 2021
config:
NAME STATE READ WRITE CKSUM
data DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
ata-ST8000VE000-2P6101_WSD1M5NW DEGRADED 0 0 15 too many errors
ata-ST8000VE000-2P6101_WSD1HEJX DEGRADED 0 0 15 too many errors
errors: Permanent errors have been detected in the following files:
data:<0x380508>
Насколько я могу судить, это та же проблема, которая уже существовала, предположительно, из-за плохого контроллера, но я не могу ее устранить. Как мне восстановить зеркало до полностью работоспособного состояния?
ОБНОВЛЕНИЕ: Я наконец отказался от идеи очистить ошибки и вместо этого начал заново. Я создал новый пул, украв один из дисков из существующего зеркала. Затем я запустил , rsync
чтобы скопировать все данные из старого пула в новый. Это привело к нескольким ошибкам (zfs не лгал об ошибках данных), но ничего значительного или тревожного, и исключение ошибочных файлов позволило rsync успешно завершиться. Затем я добавил второй диск в новый пул, и после восстановления все теперь выглядит хорошо, а очистка на новом пуле завершилась без ошибок.
Так что, если все будет хорошо в течение следующей недели или около того, я думаю, можно с уверенностью предположить, что причиной проблемы была карта SATA III, и заменить ее на более качественную марку/вариант :)