恢复 ZFS 数据

恢复 ZFS 数据

环境/硬件:

  • 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 分区。修复错误后,我能够挽救所有数据。因此,我在物理磁盘上执行了同样的操作,恢复了数据。

相关内容