【发布时间】:2022-01-10 22:11:53
【问题描述】:
磁盘故障后我有一个 zpool。尝试导入它(甚至zpool import -F -T 12855264 -R /mnt -f rpool)会产生错误
Dec 4 12:56:54 freebsd kernel: Solaris: WARNING: can't open objset 1035, error 5
Dec 4 12:56:54 freebsd ZFS[10155]: pool I/O failure, zpool=rpool error=97
Dec 4 12:56:54 freebsd ZFS[10159]: pool I/O failure, zpool=rpool error=97
Dec 4 12:56:54 freebsd ZFS[10163]: failed to load zpool rpool
zdb 显示一些数据
Dataset mos [META], ID 0, cr_txg 4, 1.02G, 304 objects
Dataset rpool/samba [ZPL], ID 100, cr_txg 135431, 276K, 9 objects
Dataset rpool/ROOT/pve-1 [ZPL], ID 515, cr_txg 10, 4.85G, 74685 objects
Dataset rpool/ROOT [ZPL], ID 259, cr_txg 8, 96K, 7 objects
Dataset rpool/secure/vm-103-state-good [ZVOL], ID 661, cr_txg 2925304, 2.94G, 2 objects
Dataset rpool/secure/vm-101-disk-1 [ZVOL], ID 1441, cr_txg 1445964, 188G, 2 objects
Dataset rpool/secure/vm-104-disk-0@good [ZVOL], ID 1285, cr_txg 2925290, 83.1G, 2 objects
Dataset rpool/secure/vm-104-disk-0 [ZVOL], ID 413, cr_txg 222940, 84.7G, 2 objects
Dataset rpool/secure/vm-104-state-good [ZVOL], ID 173, cr_txg 2925283, 438M, 2 objects
Dataset rpool/secure/subvol-105-disk-0@good [ZPL], ID 521, cr_txg 2925300, 1.36G, 36077 objects
failed to hold dataset 'rpool/secure/subvol-105-disk-0': Input/output error
Dataset rpool/secure/vm-101-disk-2 [ZVOL], ID 942, cr_txg 1445966, 114G, 2 objects
Dataset rpool/secure/vm-103-disk-0@good [ZVOL], ID 1027, cr_txg 2925319, 18.1G, 2 objects
Dataset rpool/secure/vm-103-disk-0 [ZVOL], ID 431, cr_txg 916036, 59.6G, 2 objects
Dataset rpool/secure/vm-101-disk-0 [ZVOL], ID 448, cr_txg 1445962, 160K, 2 objects
Dataset rpool/secure/vm-107-disk-0 [ZVOL], ID 285, cr_txg 219462, 16.9G, 2 objects
Dataset rpool/secure/vm-101-disk-3 [ZVOL], ID 654, cr_txg 2329396, 83.1G, 2 objects
Dataset rpool/secure [ZPL], ID 145, cr_txg 90, 200K, 7 objects
Dataset rpool/data/vm-100-state-good [ZVOL], ID 394, cr_txg 1864406, 114M, 2 objects
Dataset rpool/data/vm-106-disk-0@good [ZVOL], ID 1287, cr_txg 3889962, 3.97G, 2 objects
Dataset rpool/data/vm-106-disk-0 [ZVOL], ID 781, cr_txg 1890481, 27.5G, 2 objects
Dataset rpool/data/vm-100-disk-0@good [ZVOL], ID 518, cr_txg 1864412, 88.5M, 2 objects
Dataset rpool/data/vm-100-disk-0 [ZVOL], ID 266, cr_txg 36631, 88.6M, 2 objects
Dataset rpool/data/vm-106-state-good [ZVOL], ID 668, cr_txg 3889956, 358M, 2 objects
Dataset rpool/data [ZPL], ID 387, cr_txg 9, 96K, 6 objects
Dataset rpool [ZPL], ID 54, cr_txg 1, 10.3G, 26 objects
MOS object 403 (bpobj) leaked
MOS object 522 (DSL deadlist map) leaked
MOS object 1032 (zap) leaked
MOS object 1033 (DSL props) leaked
MOS object 1034 (DSL directory child map) leaked
MOS object 1035 (zap) leaked
MOS object 1036 (DSL dataset snap map) leaked
MOS object 1038 (zap) leaked
Verified large_blocks feature refcount of 0 is correct
Verified large_dnode feature refcount of 0 is correct
Verified sha512 feature refcount of 0 is correct
Verified skein feature refcount of 0 is correct
userobj_accounting feature refcount mismatch: 7 consumers != 8 refcount
encryption feature refcount mismatch: 14 consumers != 15 refcount
project_quota feature refcount mismatch: 7 consumers != 8 refcount
在我看来,只有一个数据集被损坏了。
所以我有两个问题:
- dd 读取所有磁盘正常,I/O 失败是什么原因?
- 如何提取完整数据?有些数据集是加密的,所以仅仅读取块是不够的
【问题讨论】:
-
考虑将问题移至超级用户或服务器故障论坛。它可能更适合服务器管理论坛,除非涉及一些编程。那么 Stack Overflow 就是正确的选择。
-
dd reads all the disk fine, what causes the I/O failure?我认为 I/O 故障是由 ZFS 本身产生的。它可以毫无问题地从磁盘获取字节,但是由于它的元数据已损坏,它不会给您错误的数据,而是显示 I/O 错误。这就是它应该的样子。 -
我看了一个很吸引人的video of a ZFS data recovery。不过,作者是在一家恢复公司的帮助下做到这一点的,并且需要大量的编程和调试技能。基本上,他们在 ZFS 中禁用了一堆保护措施并转储了他们的数据(即使某些块已损坏)并且能够恢复其中的大部分。我本人不够专业,无法完成此操作。
-
一个想法。导入时可以尝试使用
-o readonly吗?上面提到的视频强调了在恢复场景中导入时使用-o readonly的重要性。如果您只是在阅读,也许 ZFS 会让您通过...手指交叉 -
-o readonly 没有帮助
标签: data-recovery zfs