web-dev-qa-db-ja.com

ZFSデータを回復する

コンテキスト/ハードウェア:

  • HPマイクロサーバーgen8

  • 1x1TB-スタンドアロン、2x4TBレイド

  • Debian + OpenMediaVaultを搭載した1x16GBのiLOSDCARD

イベント:

  • 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を使用できません。

2
Daniel Voina

MichaelHamptonのコメントがこれに対する解決策でした。

実際、OMVはZFSをまったく使用せず、ドライブをZFSメンバーとしてマークしただけでした。

ドライブの1つを追加し、イメージでtestdiskを実行しました。ディスク上に0x0700パーティションがあることが判明しました。 testdiskを使用して新しいパーティションテーブルを作成し、ループにマウントしました。ジャーナルが破損しているext4パーティションであることが判明しました。エラーを修正した後、私はすべてのデータを回収することができました。したがって、私は物理ディスクで同じことを行い、データを取り戻しました。

3
Daniel Voina