今日、プールをスクラブしました。スクラブが終了した後、ファイルを破損するエラーが発生していることに気付きました。ファイルは気にしなかったので削除しました。残念ながら、エラーは残っており(現在はファイル名ではなく16進数のIDで参照されています)、それをクリアする方法がわかりません。
参考までに、私が発行したコマンドと出力を、注釈付きで以下に示します。
ステータスの確認
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
ルートに切り替えてファイルを削除する-不要
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
そのエラーは、inode <0x9f115>が破損していることを示しています(ファイルを削除すると、filename-> inodeマッピングが壊れたため、inodeがレポートされます)。何かがまだファイルを開いているか、メタデータをクリーンアップする必要があるだけです(スクラブで行う必要があります)。
スクラブが発生しない場合にエラーをクリアするには、Oracleによって公に文書化されていない(および他の場所では十分に文書化されていない)zdbを使用してダーティにする必要があります。
私はパーティーに遅刻しているのはわかっていますが、追加のスクラブでこのような問題が解決しない場合は、zdb
を調べる代わりに、スクラブを開始して実行できるようにしたかっただけです。数分後、zpool scrub -s zstorage
で停止します。これは、すべての読み取り/書き込み/チェックサムエラーがゼロのときにファイルの永続的なエラーをクリアするのに役立ちました。
http://unixetc.co.uk/2012/01/22/zfs-corruption-persists-in-unlinked-files/
EDIT:これを数回実行する必要があった後、スクラブを実行させる時間の長さが、動作するかどうかに影響することにも気付きました(それが行うブロックは最初に見えます)。最初はうまくいかない場合は、数回試して、停止するタイミングを調整してください。