环境/硬件:
HP 微服务器 gen8
1x1TB - 独立,2x4TB Raid
1x16GB iLO SDCARD,带 Debian + OpenMediaVault
事件:
SDCARD 故障
重新启动服务器并在 1TB 驱动器上安装 Ubuntu
结果:
ZFS 不再可访问
root@fremen:~# sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL NAME FSTYPE SIZE MOUNTPOINT LABEL sda zfs_member 931,5G └─sda1 ext4 931,5G / sdb zfs_member 3,7T └─sdb1 zfs_member 3,7T sdc zfs_member 3,7T └─sdc1 zfs_member 3,7T sdd 5,7G root@fremen:~# zpool import -D -f no pools available to import root@fremen:~# file -s /dev/sd?1 /dev/sda1: Linux rev 1.0 ext4 filesystem data, UUID=9c46f52c-b529-4c39-a23b-819726f79146 (needs journal recovery) (extents) (64bit) (large files) (huge files) /dev/sdb1: data /dev/sdc1: data
磁盘似乎仍在 ZFS 池中,但无法访问数据。
在这种情况下该怎么办?这是朋友的设置,我可以远程连接到机器。我不想创建新池,因为它会破坏 ZFS 卷上的数据。由于我找不到磁盘上的池,因此无法使用 zdb。
答案1
迈克尔·汉普顿 (Michael Hampton) 的评论对此给出了解决方案。
事实证明,OMV 实际上根本没有使用 ZFS,而只是将驱动器标记为 ZFS 成员。
我已经对其中一个驱动器执行了 dd 命令,并在映像上运行了 testdisk。结果发现磁盘上有一个 0x0700 分区。使用 testdisk 编写了一个新的分区表并将其循环挂载。结果发现它是一个带有损坏日志的 ext4 分区。修复错误后,我能够挽救所有数据。因此,我在物理磁盘上执行了同样的操作,恢复了数据。