Skip to contentSkip to conversation

Recovering a file from a snapshot without duplicating its blocks (--reflink across devs?)

DISCUSSION NAK Marc MERLIN 2 participants 3 messages Jun 5, 2012 Btrfs file system

lore
Share & tools
lore
#0 lore raw

I hit a problem on my laptop, I had about 40GB free, and I screwed up a 36GB virtualbox image.
No biggie, I have netapp style snapshots, so I deleted my messed up VM image, and figured I only had to copy the last image from my hourly snapshot.

First I though, I sure would be nice if I could take btrfs to reference the same blocks from the snapshot to my current image.
But, --reflink failed across devices nodes, so I was forced to copy/duplicate the blocks (36GB).

Then, by getting down to less than 10GB free, I got into the dark corners of the btrfs code where writes would just hang, or take 10H to copy an extra 1GB, while copiously hanging the system.

In the end, I never was able to recover the system without copying the snapshot VM image to 3rd party storage, deleting the snapshot, then getting enough blocks of free space, and finally being able to copy my 36GB image back on my /home partition.

This was very slow and painful and required power cycle my laptop more than once while it was very close to being fully hung (in real life, it was just unusable and stuck on disk IO but not fully hung). Was there a better way?

I had 3.2.16 at the time and now have 3.4.0.

Thanks,
Marc

Signature · 4 lines
"A mouse is a device used to point at the xterm you want to type in" - A.S.R.
Microsoft is to operating systems ....
                                      .... what McDonalds is to gourmet cooking
Home page: http://marc.merlins.org/
#1 lore raw
Quoted 4 lines · Marc MERLIN

First I though, I sure would be nice if I could take btrfs to reference the same blocks from the snapshot to my current image.
But, --reflink failed across devices nodes, so I was forced to copy/duplicate the blocks (36GB).

Patches for this were posted over a year ago, but it was NAK'd by Christoph Hellwig. I don't know if it's got any further since then. :-(

Patch description:

http://www.spinics.net/lists/linux-btrfs/msg09226.html

NAK:

http://www.spinics.net/lists/linux-btrfs/msg09229.html

Signature · 1 line
 Chris Samuel  :  http://www.csamuel.org/  :  Melbourne, VIC
#2 lore raw
Quoted 10 lines · Chris Samuel
Quoted 4 lines · Marc MERLIN

First I though, I sure would be nice if I could take btrfs to reference the same blocks from the snapshot to my current image.
But, --reflink failed across devices nodes, so I was forced to copy/duplicate the blocks (36GB).

Patches for this were posted over a year ago, but it was NAK'd by Christoph Hellwig. I don't know if it's got any further since then. :-(

Quoted 7 lines

Patch description:

http://www.spinics.net/lists/linux-btrfs/msg09226.html

NAK:

http://www.spinics.net/lists/linux-btrfs/msg09229.html

Thanks for that.

So, I'm not sure how common my use case is, but obviously for cases were recovering a huge file is important, like disk images, being able to re-link blocks without copying would be fantastic.

So here's my vote for that.

Thanks,
Marc

Signature · 4 lines
"A mouse is a device used to point at the xterm you want to type in" - A.S.R.
Microsoft is to operating systems ....
                                      .... what McDonalds is to gourmet cooking
Home page: http://marc.merlins.org/