All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Murphy <lists@colorremedies.com>
To: "Swâmi Petaramesh" <swami@petaramesh.org>
Cc: Linux BTRFS Mailinglist <linux-btrfs@vger.kernel.org>,
	Anand Jain <anand.jain@oracle.com>
Subject: Re: Cloning / getting a full backup of a BTRFS filesystem
Date: Wed, 4 Sep 2019 11:55:00 -0600	[thread overview]
Message-ID: <CAJCQCtRCmG05mnTMtxYrnnY5T-gcjiVHP_dYNHSz7NuRrNpLTw@mail.gmail.com> (raw)
In-Reply-To: <7d044ff7-1381-91c8-2491-944df8315305@petaramesh.org>

On Wed, Sep 4, 2019 at 12:16 AM Swâmi Petaramesh <swami@petaramesh.org> wrote:
>
> Hi list,
>
> Is there an advised way to completely “clone” a complete BTRFS
> filesystem, I mean to get an exact copy of a BTRFS filesystem including
> subvolumes (even readonly snapshots) and complete file attributes
> including extended attributes, ACLs and so, to another storage pool,
> possibly defined with a different RAID geometry or compression ?

The bottom line answer is no. There are only compromises.

Btrfs seed sprout will do what you want, except you can't change
geometry or compression. Last time I tested multiple devices as either
a source or destination, I ran into problems - but it's possible some
of this has been fixed, which is a question for Anand Jain.

Btrfs send receive can use a destination with different geometry,
compression, and multiple devices - but it doesn't handle relinks /
shared extents between otherwise unrelated subvolumes, although I
think that's what the -c flag is used for. I've never used it. There
also isn't a built-in way to recursively and intelligently send all
subvolumes, taking advantage of incremental send.

But in both cases, all file metadata is preserved. It's not really an
exact copy. The extent layout will be different, the subvolume UUIDs
will change in the 2nd case, and the volume UUID will change in both
cases. Etc. So not exact. But in terms of user visible aspects, yes it
would be exact with either method.

>
> The question boils down to getting an exact backup replica of a given
> BTRFS filesystem that could be restored to something logically
> absolutely identical.

Using words like "exact" and "absolutely identical" you've reduced it
down to a block copy. Only a sector copy does that. So I think you
need a better term that qualifies what you want or what your use case
really is. And also, changing compression, number of devices and
profiles, that's not exact either, and it definitely does not qualify
as identical let alone absolutely identical.


> The usual backup tools have no clue about share extents, snapshots and
> the like, and using btrfs send/receive for individual subvols is a real
> pain in a BTRFS filesystem that may contain hundreds of snapshots of
> different BTRFS subvols plus deduplication etc.

If you only ever deduplicate within a subvolume, and you aren't
deduplicating between subvolumes, then send/receive will do what you
want. Otherwise I think it's clone option. Maybe.

> So on a practical standpoint, how can one backup and restore a full
> BTRFS structure ?

Seed sprout comes the closest. But Btrfs does allow the user too
create a volume that will exceed the present feature set of seed
sprout. Therefore it's possible to create a Btrfs volume that cannot
really be replicated other than a block copy, if your goal is
exactness.


-- 
Chris Murphy

  parent reply	other threads:[~2019-09-04 17:55 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-04  6:15 Cloning / getting a full backup of a BTRFS filesystem Swâmi Petaramesh
2019-09-04  9:03 ` Andrei Borzenkov
2019-09-04 14:04   ` Piotr Szymaniak
2019-09-04 20:20     ` Hugo Mills
2019-09-04 20:48       ` Chris Murphy
2019-09-04 21:04         ` Swâmi Petaramesh
2019-09-04 22:01           ` Chris Murphy
2019-09-04 22:14           ` Alberto Bursi
2019-09-05  2:47             ` Chris Murphy
2019-09-05  4:59               ` Swâmi Petaramesh
2019-09-04 17:55 ` Chris Murphy [this message]
2019-09-04 20:51   ` Chris Murphy
2019-09-05 13:06   ` Anand Jain
2019-09-05 13:13     ` Qu Wenruo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAJCQCtRCmG05mnTMtxYrnnY5T-gcjiVHP_dYNHSz7NuRrNpLTw@mail.gmail.com \
    --to=lists@colorremedies.com \
    --cc=anand.jain@oracle.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=swami@petaramesh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.