At 12/05/2016 10:28 AM, Calle Kabo wrote:
Hi,

I've got a Netgear NAS with an encrypted 4 disk RAID5 setup. One of the
hard drives was emailing me about errors so I swapped it out before it
died. While syncing another disk died. So I've cloned the disk I
replaced before it died and managed to get the array running again. You
can read more about that here:
https://community.netgear.com/t5/Using-your-ReadyNAS/Re-adding-disk-to-volume/m-p/1179982/highlight/false

But now BTRFS won't mount. I'd like to mount it read only so I can move
the stuff to another drive and then format the NAS into a new array. If
there's some data loss that's fine, the most important stuff is already
backed up, but there are a few things that aren't backed up that I find
it worth the effort of trying to restore if at all possible.

Mandatory information:
root@MyNAS:~# uname -a
Linux MyNAS 4.1.30.armada.1 #1 SMP Thu Sep 22 16:39:49 PDT 2016 armv7l
GNU/Linux
root@MyNAS:~# btrfs --version
btrfs-progs v4.7.3
root@MyNAS:~# btrfs fi show
Label: '0e35246e:data'  uuid: b6283e48-ebd3-4fdb-8976-b66b1f0868bc
        Total devices 1 FS bytes used 3.99TiB
        devid    1 size 8.17TiB used 4.22TiB path /dev/dm-0

Here's what I've done (/dev/mapper/data-0 is symlinked to /dev/dm-0 so
they're interchangeable):

root@MyNAS:~# mount -t btrfs -o ro,recovery,nospace_cache,clear_cache
/dev/dm-0 /data
mount: wrong fs type, bad option, bad superblock on /dev/mapper/data-0,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
root@MyNAS:~# dmesg | tail
[25168.491582] BTRFS info (device dm-0): enabling auto recovery
[25168.724395] BTRFS (device dm-0): parent transid verify failed on
2474687627264 wanted 558760 found 558769
[25168.732497] BTRFS (device dm-0): parent transid verify failed on
2474687627264 wanted 558760 found 558769
[25168.734444] BTRFS (device dm-0): parent transid verify failed on
2474687627264 wanted 558760 found 558769
[25168.736294] BTRFS (device dm-0): parent transid verify failed on
2474687627264 wanted 558760 found 558769
[25169.583328] BTRFS (device dm-0): bad tree block start
6746185026026631152 3067274493952
[25169.595978] BTRFS (device dm-0): bad tree block start
13892978140409233545 3067274493952
[25169.597777] BTRFS (device dm-0): bad tree block start
6746185026026631152 3067274493952
[25169.599472] BTRFS (device dm-0): bad tree block start
13892978140409233545 3067274493952
[25169.599516] BTRFS: Failed to read block groups: -5
[25169.640222] BTRFS: open_ctree failed

According to the fsck report, extent tree seems to be corrupted heavily.
A lot of transid error and bad tree blocks.

No wonder kernel refuses to mount it.


root@MyNAS:~# btrfs rescue zero-log /dev/mapper/data-0
parent transid verify failed on 2474648240128 wanted 558760 found 558765
parent transid verify failed on 2474648240128 wanted 558760 found 558765
parent transid verify failed on 2474648240128 wanted 558760 found 558765
parent transid verify failed on 2474648240128 wanted 558760 found 558765
Ignoring transid failure
parent transid verify failed on 2474688413696 wanted 558760 found 558769
parent transid verify failed on 2474688413696 wanted 558760 found 558769
parent transid verify failed on 2474688413696 wanted 558760 found 558769
parent transid verify failed on 2474688413696 wanted 558760 found 558769
Ignoring transid failure
parent transid verify failed on 2474691854336 wanted 558765 found 558758
parent transid verify failed on 2474691854336 wanted 558765 found 558758
parent transid verify failed on 2474691854336 wanted 558765 found 558758
parent transid verify failed on 2474691854336 wanted 558765 found 558758
Ignoring transid failure
leaf parent key incorrect 2474691854336
Clearing log on /dev/mapper/data-0, previous log_root 0, level 0
Unable to find block group for 0
extent-tree.c:289: find_search_start: Assertion `1` failed.

Zero log won't help on such heavily damaged fs.


The output of btrfs check --repair /dev/mapper/data-0 is attached.

Considering it's extent tree heavily damaged, normal repair won't help.

IMHO there will be 2 alternative method to recover:

1) Btrfs restore
   The safest method to recover files.
   Although it may need a lot of space to restore recovered data.

2) Btrfs check --init-extent-tree
   This will use fs tree to try to rebuild the extent tree.
   I don't believe it's only extent tree corrupted, so this may make
   things even *worse*, but at least it won't take several TBs to
   recover data which you may already have backup.

Thanks,
Qu

What should I do next? Run --init-csum-tree? btrfs restore to a USB
drive? Any help much appreciated.

/Calle




--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to