Я очистил свой бассейн сегодня, и после того, как очистка закончилась, я заметил, что произошла ошибка, которая повредила файл. Мне было наплевать на файл, поэтому я удалил его. К сожалению, ошибка остается (теперь на нее указывает шестнадцатеричный идентификатор, а не имя файла), и я не знаю, как ее очистить.
Для справки, вот введенные мной команды и результат с аннотациями:
Проверка статуса
kevin@atlas:~$ sudo zpool status -v
pool: zstorage
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: zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 1.81M in 7h19m with 1 errors on Wed Feb 19 10:04:44 2014
config:
NAME STATE READ WRITE CKSUM
zstorage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-WDC_WD30EZRX-00DC0B0_WD-WCC1T1735698 ONLINE 0 0 0
ata-WDC_WD30EZRX-00DC0B0_WD-WMC1T0506289 ONLINE 0 0 0
ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ2711600 ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause/03 Harmony One.mp3
Переход в root и удаление файла - мне это не нужно
kevin@atlas:~$ sudo -i
root@atlas:~# cd /zstorage/owncloud/kevin/files/Archives/Music/Kev\ Rev\ 7/graveyard/Old/Four\ Tet/Pause/
root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# rm 03\ Harmony\ One.mp3
Проверка статуса снова
root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# zpool status -v
pool: zstorage
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: zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 1.81M in 7h19m with 1 errors on Wed Feb 19 10:04:44 2014
config:
NAME STATE READ WRITE CKSUM
zstorage ONLINE 0 0 1
raidz1-0 ONLINE 0 0 2
ata-WDC_WD30EZRX-00DC0B0_WD-WCC1T1735698 ONLINE 0 0 0
ata-WDC_WD30EZRX-00DC0B0_WD-WMC1T0506289 ONLINE 0 0 0
ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ2711600 ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
zstorage:<0x9f115>
Ой ой. Может я смогу сбросить ошибку?
root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# zpool clear zstorage
root@atlas:/zstorage/owncloud/kevin/files/Archives/Music/Kev Rev 7/graveyard/Old/Four Tet/Pause# zpool status -v
pool: zstorage
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: zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 1.81M in 7h19m with 1 errors on Wed Feb 19 10:04:44 2014
config:
NAME STATE READ WRITE CKSUM
zstorage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-WDC_WD30EZRX-00DC0B0_WD-WCC1T1735698 ONLINE 0 0 0
ata-WDC_WD30EZRX-00DC0B0_WD-WMC1T0506289 ONLINE 0 0 0
ata-WDC_WD30EZRX-00MMMB0_WD-WCAWZ2711600 ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
zstorage:<0x9f115>
Это выглядит не очень хорошо!
Снова очистите бассейн (если вы еще этого не сделали):
zpool скраб zstorage
Эта ошибка сообщает вам, что индексный дескриптор <0x9f115> поврежден (удаление файла нарушило сопоставление имя файла-> индексного дескриптора, поэтому теперь он просто сообщает индексный дескриптор). Либо что-то еще имеет открытый файл, либо метаданные просто нужно очистить (что должно сделать скраб).
Чтобы очистить ошибку, если скраб вам не понадобится, вам нужно спуститься и испачкаться с zdb, что публично не документировано oracle (и плохо документировано в другом месте) - и, во всяком случае, вероятно, указывает на что-то более фундаментальное неправильное.
Я знаю, что очень опаздываю на вечеринку, но просто хотел добавить, что если дополнительные скрабы не исправят такие проблемы, вместо того, чтобы смотреть на zdb
вместо этого вы можете просто запустить очистку, дать ей поработать пару минут, а затем остановить ее с помощью zpool scrub -s zstorage
. Это сработало для меня при очистке постоянных ошибок для файлов, когда все ошибки чтения / записи / контрольной суммы были равны нулю.
http://unixetc.co.uk/2012/01/22/zfs-corruption-persists-in-unlinked-files/
РЕДАКТИРОВАТЬ: После того, как мне пришлось проделать это несколько раз, я также понял, что время, в течение которого вы позволяете запускать скраб, будет влиять на то, будет ли он работать (в зависимости от того, какие блоки он смотрит сначала). Поэтому, если сначала это не сработает, попробуйте еще несколько раз и отрегулируйте время, когда вы его остановите.