* Recover btrfs partition after accidental reformat @ 2022-03-07 20:10 Emil 2022-03-07 23:29 ` Chris Murphy 0 siblings, 1 reply; 4+ messages in thread From: Emil @ 2022-03-07 20:10 UTC (permalink / raw) To: linux-btrfs Hi, I did a boo boo and reformatted my btrfs partition with NTFS (used the wrong /dev/sdX). It was a single drive with standard options (metadata dup, data single) and it was the only partition of the drive. I have not written any data to the ntfs partition. Is there any chance of data recovery? The only thing I found was a backup superblock: [bluemond@BlueQ ~]$ sudo btrfs insp dump-su -s 2 /dev/sdh1 superblock: bytenr=274877906944, device=/dev/sdh1 --------------------------------------------------------- csum_type 0 (crc32c) csum_size 4 csum 0x69883d2a [match] bytenr 274877906944 flags 0x1 ( WRITTEN ) magic _BHRfS_M [match] fsid 6dc337f5-2146-4aa5-a9c1-8faf1e2994c5 metadata_uuid 6dc337f5-2146-4aa5-a9c1-8faf1e2994c5 label generation 7004 root 436338688 sys_array_size 129 chunk_root_generation 7002 root_level 0 chunk_root 22020096 chunk_root_level 0 log_root 0 log_root_transid 0 log_root_level 0 total_bytes 2000397864960 bytes_used 125869297664 sectorsize 4096 nodesize 16384 leafsize (deprecated) 16384 stripesize 4096 root_dir 6 num_devices 1 compat_flags 0x0 compat_ro_flags 0x3 ( FREE_SPACE_TREE | FREE_SPACE_TREE_VALID ) incompat_flags 0x341 ( MIXED_BACKREF | EXTENDED_IREF | SKINNY_METADATA | NO_HOLES ) cache_generation 0 uuid_tree_generation 7004 dev_item.uuid 0c86cfd6-fc28-4f99-9b4a-6bd3546aa523 dev_item.fsid 6dc337f5-2146-4aa5-a9c1-8faf1e2994c5 [match] dev_item.type 0 dev_item.total_bytes 2000397864960 dev_item.bytes_used 131021668352 dev_item.io_align 4096 dev_item.io_width 4096 dev_item.sector_size 4096 dev_item.devid 1 dev_item.dev_group 0 dev_item.seek_speed 0 dev_item.bandwidth 0 dev_item.generation 0 I tried using photorec, but the btrfs partition was pretty fresh and I had a ntfs partition with lots of data before that so it finds all kinds of data from the old ntfs partition. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Recover btrfs partition after accidental reformat 2022-03-07 20:10 Recover btrfs partition after accidental reformat Emil @ 2022-03-07 23:29 ` Chris Murphy 2022-03-08 22:20 ` Emil 0 siblings, 1 reply; 4+ messages in thread From: Chris Murphy @ 2022-03-07 23:29 UTC (permalink / raw) To: Emil; +Cc: Btrfs BTRFS On Mon, Mar 7, 2022 at 1:10 PM Emil <broetchenrackete@gmail.com> wrote: > > Hi, > > I did a boo boo and reformatted my btrfs partition with NTFS (used the wrong /dev/sdX). It was a single drive with standard options (metadata dup, data single) and it was the only partition of the drive. You'll have damaged files most likely but there's some chance that with DUP metadata the file system can self-repair its way out of this mistake. You could check out https://raid.wiki.kernel.org/index.php/Irreversible_mdadm_failure_recovery#Simple_using_of_overlays for guidance on how to use device-mapper to make the drive partition read-only, and redirect any recovery attempts (writes) to a file so that it's all reversible. Or take a chance and just apply the changes to the partition directly... thought it could make things worse. My thought is to start out with wiping the NTFS signature only, and making a backup of it (optional, sorta boilerplate but it sounds like you don't care about this NTFS file system anyway since it was a mistake). wipefs -b -t ntfs /dev/sdXY Next, check status of superblocks before repairing them: btrfs rescue super -v /dev/sdXY If there are damaged superblocks it should give you a choice to repair them from a good superblock. You can do that. Next, try to mount it. If you're on overlay, just mount it normally and see what happens. If not, you might go more conservative with mount -o ro /dev/sdXY I'm actually not fully sure that this prevents all writes. i.e. if there's DUP metadata, and btrfs finds corruption with one copy, pretty sure it tries to write fixups from a good copy. The ro is a VFS mount option, and enforces no writes from user space, but the kernel code can still write. I think. So it's a small risk. I'd probably do this with a current stable or mainline kernel, i.e. 5.15+. This also allows you the option to use combinations of the rescue= mount options along with ro, in case too much metadata is damaged for normal mount, you can sometimes skip over the broken parts. If you're lucky, you might just end up with only some corrupt files. This will definitely produce a *lot* of btrfs kernel messages, you will get around 1/2 dozen at least per 4KiB block damaged. Good luck! -- Chris Murphy ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Recover btrfs partition after accidental reformat 2022-03-07 23:29 ` Chris Murphy @ 2022-03-08 22:20 ` Emil 2022-03-08 23:04 ` Chris Murphy 0 siblings, 1 reply; 4+ messages in thread From: Emil @ 2022-03-08 22:20 UTC (permalink / raw) To: Chris Murphy; +Cc: Btrfs BTRFS Thanks for the tip with the overlay. Unfortunately recovering superblocks isn't working: [bluemond@BlueQ btrfsoverlay]$ sudo btrfs rescue super -v /dev/mapper/sdh1 All Devices: Device: id = 1, name = /dev/mapper/sdh1 Before Recovering: [All good supers]: device name = /dev/mapper/sdh1 superblock bytenr = 274877906944 [All bad supers]: device name = /dev/mapper/sdh1 superblock bytenr = 65536 device name = /dev/mapper/sdh1 superblock bytenr = 67108864 Make sure this is a btrfs disk otherwise the tool will destroy other fs, Are you sure? [y/N]: y checksum verify failed on 22020096 wanted 0x00000000 found 0xb6bde3e4 checksum verify failed on 22020096 wanted 0x00000000 found 0xb6bde3e4 ERROR: cannot read chunk root Failed to recover bad superblocks [bluemond@BlueQ btrfsoverlay]$ uname -a Linux BlueQ 5.16.12-arch1-1 #1 SMP PREEMPT Wed, 02 Mar 2022 12:22:51 +0000 x86_64 GNU/Linux [bluemond@BlueQ btrfsoverlay]$ btrfs version btrfs-progs v5.16.2 For some reason I can't find anything btrfs related in dmesg... 8 Mar 2022 00:29:30 Chris Murphy <lists@colorremedies.com>: > On Mon, Mar 7, 2022 at 1:10 PM Emil <broetchenrackete@gmail.com> wrote: >> >> Hi, >> >> I did a boo boo and reformatted my btrfs partition with NTFS (used the wrong /dev/sdX). It was a single drive with standard options (metadata dup, data single) and it was the only partition of the drive. > > You'll have damaged files most likely but there's some chance that > with DUP metadata the file system can self-repair its way out of this > mistake. > > You could check out > https://raid.wiki.kernel.org/index.php/Irreversible_mdadm_failure_recovery#Simple_using_of_overlays > for guidance on how to use device-mapper to make the drive partition > read-only, and redirect any recovery attempts (writes) to a file so > that it's all reversible. Or take a chance and just apply the changes > to the partition directly... thought it could make things worse. > > My thought is to start out with wiping the NTFS signature only, and > making a backup of it (optional, sorta boilerplate but it sounds like > you don't care about this NTFS file system anyway since it was a > mistake). > > wipefs -b -t ntfs /dev/sdXY > > Next, check status of superblocks before repairing them: > > btrfs rescue super -v /dev/sdXY > > If there are damaged superblocks it should give you a choice to repair > them from a good superblock. You can do that. Next, try to mount it. > If you're on overlay, just mount it normally and see what happens. If > not, you might go more conservative with > > mount -o ro /dev/sdXY > > I'm actually not fully sure that this prevents all writes. i.e. if > there's DUP metadata, and btrfs finds corruption with one copy, pretty > sure it tries to write fixups from a good copy. The ro is a VFS mount > option, and enforces no writes from user space, but the kernel code > can still write. I think. So it's a small risk. > > I'd probably do this with a current stable or mainline kernel, i.e. > 5.15+. This also allows you the option to use combinations of the > rescue= mount options along with ro, in case too much metadata is > damaged for normal mount, you can sometimes skip over the broken > parts. If you're lucky, you might just end up with only some corrupt > files. This will definitely produce a *lot* of btrfs kernel messages, > you will get around 1/2 dozen at least per 4KiB block damaged. > > Good luck! > > > -- > Chris Murphy ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Recover btrfs partition after accidental reformat 2022-03-08 22:20 ` Emil @ 2022-03-08 23:04 ` Chris Murphy 0 siblings, 0 replies; 4+ messages in thread From: Chris Murphy @ 2022-03-08 23:04 UTC (permalink / raw) To: Emil; +Cc: Chris Murphy, Btrfs BTRFS On Tue, Mar 8, 2022 at 3:20 PM Emil <broetchenrackete@gmail.com> wrote: > > Thanks for the tip with the overlay. Unfortunately recovering superblocks isn't working: > > > [bluemond@BlueQ btrfsoverlay]$ sudo btrfs rescue super -v /dev/mapper/sdh1 > All Devices: > Device: id = 1, name = /dev/mapper/sdh1 > > Before Recovering: > [All good supers]: > device name = /dev/mapper/sdh1 > superblock bytenr = 274877906944 > > [All bad supers]: > device name = /dev/mapper/sdh1 > superblock bytenr = 65536 > > device name = /dev/mapper/sdh1 > superblock bytenr = 67108864 > > > Make sure this is a btrfs disk otherwise the tool will destroy other fs, Are you sure? [y/N]: y > checksum verify failed on 22020096 wanted 0x00000000 found 0xb6bde3e4 > checksum verify failed on 22020096 wanted 0x00000000 found 0xb6bde3e4 > ERROR: cannot read chunk root > Failed to recover bad superblocks If both copies of the chunk root are damaged, then the file system is toast. It's a critical tree, if it can't be read then none of the addresses for file locations can be figured out. Most mkfs write a lot of zeros on purpose to wipe away portions of previous file systems that could tend to confuse the new one and so it would seem NTFS's mkfs has zero'd too much. I don't really have any good suggestions. -- Chris Murphy ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-03-08 23:05 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-03-07 20:10 Recover btrfs partition after accidental reformat Emil 2022-03-07 23:29 ` Chris Murphy 2022-03-08 22:20 ` Emil 2022-03-08 23:04 ` Chris Murphy
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox