最近清理我的 ZFS 池时发现了一个错误:
$ zpool status -v rpool
pool: rpool
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: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-8A
scan: scrub repaired 0B in 04:48:04 with 1 errors on Thu Oct 24 14:07:21 2024
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
wwn-0x50014ee216641349-part2 ONLINE 0 0 2
wwn-0x50014ee216620a52-part2 ONLINE 0 0 2
wwn-0x50014ee2c1015982-part2 ONLINE 0 0 2
raidz1-1 ONLINE 0 0 0
ata-WDC_WD3000FYYZ-01UL1B1_WD-WCC1F0293326 ONLINE 0 0 0
ata-WDC_WD30EZRZ-00Z5HB0_WD-WCC4N2ZYKAKR ONLINE 0 0 0
ata-WDC_WD30EZRZ-60Z5HB0_WD-WCC4N0SFH6JA ONLINE 0 0 0
logs
ata-CT500MX500SSD1_2344E8835E4F-part1 ONLINE 0 0 0
cache
sdi2 ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
rpool/[DATASET]@autosnap_2024-09-30_23:30:07_weekly:[FILEPATH]
(注意:实际的文件系统和文件路径出于隐私原因已被删除,但快照名称是真实的。)
显然,错误出现在“autosnap_2024-09-30_23:30:07_weekly”快照中。但是,由于 ZFS 是写时复制的,并且此文件可能在一段时间内没有更改,因此我预计此错误也存在于其他快照中存在的此文件版本中。但是,该zpool status
命令没有给我任何提示。我可以做些什么来确定哪些快照中有损坏的文件副本,哪些没有?
2
最佳答案
2
删除包含输出中列出的错误的文件。
我认为不需要采取任何其他行动。
1
-
我已经从备份中恢复了受影响的文件,但我仍然想知道是否有办法确定多个快照中的哪些包含损坏的文件,哪些不包含。(此外,当前的非快照数据集是否包含损坏的文件。)
–
|
tar cf – rpool/[DATASET]@autosnap_2024-09-30_23:30:07_weekly:[FILEPATH] |cat – >/dev/null 将向您显示无法读取的文件。
1
-
这将向我显示是否可以在特定快照中读取该文件。您是说我应该对每个快照运行此命令或其他读取整个文件的命令来确定哪些是可读的吗?
–
|
–
–
|