public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
* Copying a btrfs filesystem from one host to another, reflinks, compression
@ 2024-12-04 22:24 Andy Smith
  2024-12-05  4:11 ` Andrei Borzenkov
  0 siblings, 1 reply; 4+ messages in thread
From: Andy Smith @ 2024-12-04 22:24 UTC (permalink / raw)
  To: linux-btrfs

Hi,

I need to copy a pretty large filesystem from one host to another.
What's the best way to do it?

The source filesystem has a single device (redundancy is provided by md
RAID) and uses compression. Destination would be the same. It has a
large number of reflinked files. rsync or tar | ssh | tar are not going
to handle reflinked files, are they?

Should I be using btrfs-send?

There's no subvolumes and no snapshots involved here. Would I just
btrfs-send to a new subvolume and then mount that subvolume as the
"real" filesystem?

Would that preserve compression or would I have to go through and force
recompression of everything?

Source host's kernel is 5.10.0-32; btrfs-progs v5.10.1 (Debian 11).
Destination would be Debian 12 so kernel 6.1.0-28 and btrfs-progs v6.2

Thanks,
Andy

-- 
https://bitfolk.com/ -- No-nonsense VPS hosting

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Copying a btrfs filesystem from one host to another, reflinks, compression
  2024-12-04 22:24 Copying a btrfs filesystem from one host to another, reflinks, compression Andy Smith
@ 2024-12-05  4:11 ` Andrei Borzenkov
  2024-12-05  4:25   ` Andy Smith
  0 siblings, 1 reply; 4+ messages in thread
From: Andrei Borzenkov @ 2024-12-05  4:11 UTC (permalink / raw)
  To: Andy Smith, linux-btrfs

05.12.2024 01:24, Andy Smith wrote:
> Hi,
> 
> I need to copy a pretty large filesystem from one host to another.
> What's the best way to do it?
> 
> The source filesystem has a single device (redundancy is provided by md
> RAID) and uses compression. Destination would be the same. It has a
> large number of reflinked files. rsync or tar | ssh | tar are not going
> to handle reflinked files, are they?
> 
> Should I be using btrfs-send?
> 

btrfs send/receive has better support for sharing data between files, 
yes. It is not guaranteed, that destination will have exactly the same 
data layout though; btrfs send may decide to send full data instead of 
sending clone request. I am not sure about exact conditions, IIRC one 
requirement for cloning is proper alignment.

> There's no subvolumes and no snapshots involved here. Would I just
> btrfs-send to a new subvolume and then mount that subvolume as the
> "real" filesystem?
> 

What do you call "real" filesystem? Any subvolume is just as valid 
subsystem as any other. You can effectively ignore subvolume by 
designating it as default so you do not need to explicitly mention it in 
mount option.

> Would that preserve compression or would I have to go through and force
> recompression of everything?
> 
> Source host's kernel is 5.10.0-32; btrfs-progs v5.10.1 (Debian 11).
> Destination would be Debian 12 so kernel 6.1.0-28 and btrfs-progs v6.2
> 

According to man btrfs-send, --compressed-data should preserve compression.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Copying a btrfs filesystem from one host to another, reflinks, compression
  2024-12-05  4:11 ` Andrei Borzenkov
@ 2024-12-05  4:25   ` Andy Smith
  2024-12-27 22:21     ` Nicholas D Steeves
  0 siblings, 1 reply; 4+ messages in thread
From: Andy Smith @ 2024-12-05  4:25 UTC (permalink / raw)
  To: Andrei Borzenkov; +Cc: linux-btrfs

Hi Andrei,

Thanks for your reply.

On Thu, Dec 05, 2024 at 07:11:59AM +0300, Andrei Borzenkov wrote:
> 05.12.2024 01:24, Andy Smith wrote:
> > rsync or tar | ssh | tar are not going to handle reflinked files,
> > are they?
> > 
> > Should I be using btrfs-send?
> 
> btrfs send/receive has better support for sharing data between files, yes.
> It is not guaranteed, that destination will have exactly the same data
> layout though; btrfs send may decide to send full data instead of sending
> clone request. I am not sure about exact conditions, IIRC one requirement
> for cloning is proper alignment.

Hmm. I don't mind if the destination has a  bit of a different layout
but I would not like if a significant number of the regions on the
source got deduplicated…

I guess I will have to try it and see what happens (time-consuming,
given the size).

If it expands too much I may have to try again with dd.

> > Would that preserve compression or would I have to go through and force
> > recompression of everything?
> > 
> > Source host's kernel is 5.10.0-32; btrfs-progs v5.10.1 (Debian 11).
> > Destination would be Debian 12 so kernel 6.1.0-28 and btrfs-progs v6.2
> > 
> 
> According to man btrfs-send, --compressed-data should preserve compression.

Looks like I would have to install a newer btrfs-progs on the sender as
I read in:

    https://btrfs.readthedocs.io/en/latest/btrfs-send.html

    --proto <N>

    Version 2 requires at least btrfs-progs 6.0 on both the sender and
    receiver and at least Linux 6.0 on the sender.

    --compressed-data

    This requires protocol version 2 or higher. If --proto was not used,
    then --compressed-data implies --proto 2.

Thanks,
Andy

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Copying a btrfs filesystem from one host to another, reflinks, compression
  2024-12-05  4:25   ` Andy Smith
@ 2024-12-27 22:21     ` Nicholas D Steeves
  0 siblings, 0 replies; 4+ messages in thread
From: Nicholas D Steeves @ 2024-12-27 22:21 UTC (permalink / raw)
  To: Andy Smith; +Cc: Andrei Borzenkov, Btrfs BTRFS

Hi Andy,

On Wed, 4 Dec 2024, 23:26 Andy Smith, <andy@strugglers.net> wrote:

> On Thu, Dec 05, 2024 at 07:11:59AM +0300, Andrei Borzenkov wrote:
> > 05.12.2024 01:24, Andy Smith wrote:
> > > rsync or tar | ssh | tar are not going to handle reflinked files,
> > > are they?
> > >
> > > Should I be using btrfs-send?
> >
> > btrfs send/receive has better support for sharing data between files,
> yes.
> > It is not guaranteed, that destination will have exactly the same data
> > layout though; btrfs send may decide to send full data instead of sending
> > clone request. I am not sure about exact conditions, IIRC one requirement
> > for cloning is proper alignment.
>
> Hmm. I don't mind if the destination has a  bit of a different layout
> but I would not like if a significant number of the regions on the
> source got deduplicated…
>
> I guess I will have to try it and see what happens (time-consuming,
> given the size).
>
> If it expands too much
> > > Source host's kernel is 5.10.0-32; btrfs-progs v5.10.1 (Debian 11).
> > > Destination would be Debian 12 so kernel 6.1.0-28 and btrfs-progs v6.2
> > >
> >
> > According to man btrfs-send, --compressed-data should preserve
> compression.
>
> Looks like I would have to install a newer btrfs-progs on the sender as
> I read in:
>

https://backports.debian.org/Instructions/

You can use bullseye-backports on the sender to install a 6.x kernel and
btrfs-progs versions from bookworm (Debian 12).

Whether it works or not, please consider writing to the backports mailing
list, and maybe CC Alexander Writ, because you have a compelling use case
for keeping at least a subset of oldstable backports active longer than
they're usually kept active.

I hope these backports save you some time!
Regards,
Nicholas

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-12-27 22:21 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-04 22:24 Copying a btrfs filesystem from one host to another, reflinks, compression Andy Smith
2024-12-05  4:11 ` Andrei Borzenkov
2024-12-05  4:25   ` Andy Smith
2024-12-27 22:21     ` Nicholas D Steeves

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox