Re: Trying to recover data from SSD
From: Zygo Blaxell <hidden>
Date: 2021-08-11 00:30:56
On Tue, Aug 10, 2021 at 02:56:22PM +0800, Qu Wenruo wrote:
On 2021/8/10 下午2:44, Konstantin Svist wrote:quoted
It's a Micron MTFDDAK512MBF, firmware M603CC Zygo to see if he also hits such hardware.
I only have one data point for Micron M600 series, and this is it.
quoted
I don't know how to do that (corrupt the extent tree)There is the more detailed version: https://lore.kernel.org/linux-btrfs/744795fa-e45a-110a-103e-13caf597299a@gmx.com/ (local) Or if you can re-compile btrfs kernel module, this patch would allow your to mount with rescue=all, without destroying the existing extent tree root: https://patchwork.kernel.org/project/linux-btrfs/patch/20210719054304.181509-1-wqu@suse.com/quoted
Is there any other way to pull files off of the drive?Either btrfs-restore or above rescue=all mount option. Since btrfs-restore doesn't give you the recent files, I guess the rescue=all method is the only alternative. Thanks, Ququoted
On Mon, Aug 9, 2021, 22:24 Qu Wenruo <quwenruo.btrfs@gmx.com <mailto:quwenruo.btrfs@gmx.com>> wrote: On 2021/8/10 下午12:41, Konstantin Svist wrote: > Not sure exactly when it stopped working, possibly had a power outage.. > I was able to pull most of a snapshot with btrfs restore -s -- but it's > months old and I want the more recent files from. > > > Testing the SSD for bad sectors, but nothing so far > > > While trying to mount: > [442587.465598] BTRFS info (device sdb3): allowing degraded mounts > [442587.465602] BTRFS info (device sdb3): disk space caching is enabled > [442587.465603] BTRFS info (device sdb3): has skinny extents > [442587.522301] BTRFS error (device sdb3): bad tree block start, want > 952483840 have 0 > [442587.522867] BTRFS error (device sdb3): bad tree block start, want > 952483840 have 0 Some metadata is completely lost. Mind to share the hardware model? Maybe it's some known bad hardware. Just a small note, all filesystems (including btrfs) should survive a power loss, as long as the disk is following the FLUSH/FUA requirement properly. > [442587.522876] BTRFS error (device sdb3): failed to read block groups: -5 > [442587.523520] BTRFS error (device sdb3): open_ctree failed > [442782.661849] BTRFS error (device sdb3): unrecognized mount option > 'rootflags=recovery' > [442782.661926] BTRFS error (device sdb3): open_ctree failed Since the fs is already corrupted, you can try to corrupt extent tree root completely, then "rescue=all" mount option should allow you to mount the fs RO, and grab as much data as you can. But I doubt if it's any better than btrfs-restore. Thanks, Qu > > # btrfs-find-root /dev/sdb3 > ERROR: failed to read block groups: Input/output error > Superblock thinks the generation is 166932 > Superblock thinks the level is 1 > Found tree root at 787070976 gen 166932 level 1 > Well block 786399232(gen: 166931 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 781172736(gen: 166930 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 778108928(gen: 166929 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 100696064(gen: 166928 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 99565568(gen: 166927 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 97599488(gen: 166926 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 91701248(gen: 166925 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 89620480(gen: 166924 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 86818816(gen: 166923 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 84197376(gen: 166922 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 76398592(gen: 166921 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 72400896(gen: 166920 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 63275008(gen: 166919 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 60080128(gen: 166918 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 58032128(gen: 166917 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 55689216(gen: 166916 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 52264960(gen: 166915 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 49758208(gen: 166914 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 48300032(gen: 166913 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 45350912(gen: 166912 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 40337408(gen: 166911 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 71172096(gen: 166846 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 61210624(gen: 166843 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 55492608(gen: 166840 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 36044800(gen: 166829 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 34095104(gen: 166828 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 33046528(gen: 166827 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 31014912(gen: 166826 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 30556160(gen: 166825 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 777011200(gen: 166822 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 766672896(gen: 166821 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 690274304(gen: 166820 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 175046656(gen: 166819 level: 1) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 766017536(gen: 166813 level: 0) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 765739008(gen: 166813 level: 0) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > Well block 32604160(gen: 152478 level: 0) seems good, but > generation/level doesn't match, want gen: 166932 level: 1 > # btrfs check /dev/sdb3 > Opening filesystem to check... > checksum verify failed on 952483840 wanted 0x00000000 found 0xb6bde3e4 > checksum verify failed on 952483840 wanted 0x00000000 found 0xb6bde3e4 > checksum verify failed on 952483840 wanted 0x00000000 found 0xb6bde3e4 > bad tree block 952483840, bytenr mismatch, want=952483840, have=0 > ERROR: failed to read block groups: Input/output error > ERROR: cannot open file system > > > # uname -a > Linux fry 5.13.6-200.fc34.x86_64 #1 SMP Wed Jul 28 15:31:21 UTC 2021 > x86_64 x86_64 x86_64 GNU/Linux > # btrfs --version > btrfs-progs v5.13.1 > # btrfs fi show /dev/sdb3 > Label: none uuid: 44a768e0-28ba-4c6a-8eef-18ffa8c27d1b > Total devices 1 FS bytes used 171.92GiB > devid 1 size 472.10GiB used 214.02GiB path /dev/sdb3 > >