我们有一台装有 Ubuntu 20.04.6 LTS 的服务器。它是我们备份的辅助存储,在 RAIDZ3 中有 12x8TB HDD,顶部有一个 XFS 文件系统。
几天前,一个驱动器发生故障。我想,“好的,没问题,这是一个 RAIDZ3”,但在我更换和重新镀银损坏的驱动器之前,我注意到文件系统不再挂载。
我尝试手动挂载它,但没有成功,运行:
sudo mount -t xfs /dev/zd0 /mnt/veeam_repo_prod
它立即返回内核错误:“XFS (zd0):日志恢复写入 I/O 错误,位于 daddr 0x1b1b70 长度 4096 错误 -5”,后跟“mount: /mnt/veeam_repo_prod: 无法读取 /dev/zd0 上的超级块。”
我看不到任何问题zpool status -v
。
pool: zpool01
state: ONLINE
scan: scrub repaired 0B in 2 days 11:10:24 with 0 errors on Wed Feb 28 19:54:19 2024
config:
NAME STATE READ WRITE CKSUM
zpool01 ONLINE 0 0 0
raidz3-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
sdh ONLINE 0 0 0
scsi-351402ec000fe5847 ONLINE 0 0 0
scsi-351402ec000fe5848 ONLINE 0 0 0
scsi-351402ec000fe5849 ONLINE 0 0 0
scsi-351402ec000fe584a ONLINE 0 0 0
scsi-351402ec000fe584b ONLINE 0 0 0
errors: No known data errors
运行清理后返回 0B 已修复。
我尝试运行xfs_repair /dev/zd0
,然后它说日志中有有价值的元数据更改。运行xfs_repair -L /dev/zd0
再次返回 I/O 错误:“xfs_repair:libxfs_device_zero 写入失败:输入/输出错误”。
我简直没有主意了。唯一的好处是它只是备份的第二个副本,我可以从头开始,但重新复制所有数据需要数周时间。此外,如果它发生过一次,它可能会再次发生,我不想在我们需要备份的那一天再次发生这种情况。
答案1
今天,我偶然在 Reddit 上找到了解决方案,就在我在这里提问的第二天;Reddit 上有人遇到了同样的情况Reddit 帖子。
原因:
问题似乎是存储已满,虽然我不知道怎么回事,因为它应该只有半满,但这是另一天的问题。
解决方案:
一种方法显然是尽可能添加更多驱动器。由于这在我的处境下是不可能的,所以我不得不采取另一种方法。幸运的是,解决方案也在 Reddit 帖子中。我将值增加到/sys/module/zfs/parameters/spa_slop_shift
15。这使我能够将配额再增加zpool01/veeam
1TB(sudo zfs set quota=61T zpool01/veeam
)。有了新的可用存储,我能够再次正常挂载我的 XFS,并且能够删除一些文件并暂时降低保留时间。
答案2
您正在 ZFS zvol 上运行 XFS 文件系统。堆叠文件系统。XFS 可能会中断,而底层 ZFS 则报告正常。
您能提供有关硬件、控制器、操作系统和 ZFS 版本的详细信息吗?
根据池故障驱动器的性质,可能需要在 ZFS 端进行修复(因为它不知道您的 XFS 文件系统的内容)。
- 真正的 zpool scrub 是一个好的开始。
- 输出中可能会有有价值的输出
dmesg
。你能发布一下吗?
如果其他方法都失败了,可以寻求专业人士的帮助或使用 UFS Explorer 进行恢复: