Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BTRFS Raid / Multi Disk setup is currently not supported #2028

Closed
ChojinDSL opened this issue Feb 1, 2019 · 6 comments
Closed

BTRFS Raid / Multi Disk setup is currently not supported #2028

ChojinDSL opened this issue Feb 1, 2019 · 6 comments
Assignees
Milestone

Comments

@ChojinDSL
Copy link

I've noticed that ReaR doesn't correctly work with a BTRFS Multiple Disk setup.

E.g. a BTRFS Volume can consist of multiple disks in a variety of configurations, e.g. single, RAID1, RAID10, RAID5/6, etc..

It seems as if ReaR only creates a single disk BTRFS Volume during recovery. This could create problem if the backup is larger than a single disk.

Since BTRFS supports many mixed configurations, e.g. Metadata as RAID1 but Data as RAID10, accurately detecting the original layout might be tricky.
However, at the very least it would be very nice if ReaR could detect if a BTRFS Volume consists of multiple devices and then re-creates the BTRFS volume with the member devices during recovery.

If you create the BTRFS volume with just a list of devices, then per default the volume will be created as a "single" volume, but with the total capacity of all member devices. Since BTRFS supports rebalancing to migrate from single to RAID1/10/5/6, it would be easy for the user to rebalance their system back to their original layout, after recovery has taken place and the system has bootet into the OS.

@jsmeix jsmeix self-assigned this Feb 5, 2019
@jsmeix jsmeix added the enhancement Adaptions and new features label Feb 5, 2019
@jsmeix jsmeix added this to the ReaR future milestone Feb 5, 2019
@jsmeix jsmeix changed the title BTRFS Raid / Multi Disk setup? BTRFS Raid / Multi Disk setup is currently not supported Feb 5, 2019
@jsmeix
Copy link
Member

jsmeix commented Feb 5, 2019

I implemented the current Btrfs support in ReaR and
I never had a Btrfs setup on multiple disks
so that I think you are right that currently
ReaR does not support a Btrfs filesystem that is on more than one partition.

See
"Disk layout file syntax" at
https://github.com/rear/rear/blob/master/doc/user-guide/06-layout-configuration.adoc
that reads (excerpt)

Filesystems

fs <device> <mountpoint> <filesystem type> [uuid=<uuid>] [label=<label>] [blocksize=<block size(B)>] [<reserved_blocks=<nr of reserved blocks>] [max_mounts=<nr>] [check_interval=<number of days>d] [options=<filesystem options>]

Btrfs Default SubVolumes

btrfsdefaultsubvol <device> <mountpoint> <btrfs_subvolume_ID> <btrfs_subvolume_path>

Btrfs Normal SubVolumes

btrfsnormalsubvol <device> <mountpoint> <btrfs_subvolume_ID> <btrfs_subvolume_path>

Btrfs Mounted SubVolumes

btrfsmountedsubvol <device> <subvolume_mountpoint> <mount_options> <btrfs_subvolume_path>

where all show only device but no devices.

See also
#2023

@jsmeix
Copy link
Member

jsmeix commented Feb 5, 2019

@ChojinDSL
to get an idea how a Btrfs setup on multiple disks could look like
could you please post here the output of the command

lsblk -i -p -o NAME,KNAME,PKNAME,TRAN,TYPE,FSTYPE,SIZE,MOUNTPOINT

on your original system or systems when you have different kind of them.

Perhaps you may need to specify some more output columns that could be
of particular interest in case of Btrfs on multiple disks, see lsblk -h
what output columns are available for the lsblk command on your
particular system.

By the way:
What Linux distribution and version do you use?
Cf.
https://github.com/rear/rear/blob/master/.github/ISSUE_TEMPLATE.md

@ChojinDSL
Copy link
Author

ChojinDSL commented Feb 5, 2019

@jsmeix Here's the output of lsblk you asked for.

I use Debian Stretch at the moment.

NAME        KNAME     PKNAME   TRAN TYPE FSTYPE   SIZE MOUNTPOINT
/dev/sda    /dev/sda           sas  disk          1.7T 
|-/dev/sda1 /dev/sda1 /dev/sda      part vfat     512M /boot/efi
|-/dev/sda2 /dev/sda2 /dev/sda      part btrfs    1.5T /
`-/dev/sda3 /dev/sda3 /dev/sda      part swap   127.7G [SWAP]
/dev/sdb    /dev/sdb           sas  disk          1.7T 
|-/dev/sdb1 /dev/sdb1 /dev/sdb      part          512M 
|-/dev/sdb2 /dev/sdb2 /dev/sdb      part btrfs    1.5T 
`-/dev/sdb3 /dev/sdb3 /dev/sdb      part swap   127.7G [SWAP]
/dev/sdc    /dev/sdc           sas  disk          1.7T 
|-/dev/sdc1 /dev/sdc1 /dev/sdc      part          512M 
|-/dev/sdc2 /dev/sdc2 /dev/sdc      part btrfs    1.5T 
`-/dev/sdc3 /dev/sdc3 /dev/sdc      part swap   127.7G [SWAP]
/dev/sdd    /dev/sdd           sas  disk          1.7T 
|-/dev/sdd1 /dev/sdd1 /dev/sdd      part          512M 
|-/dev/sdd2 /dev/sdd2 /dev/sdd      part btrfs    1.5T 
`-/dev/sdd3 /dev/sdd3 /dev/sdd      part swap   127.7G [SWAP]
/dev/sde    /dev/sde           sas  disk          1.7T 
|-/dev/sde1 /dev/sde1 /dev/sde      part          512M 
|-/dev/sde2 /dev/sde2 /dev/sde      part btrfs    1.5T 
`-/dev/sde3 /dev/sde3 /dev/sde      part swap   127.7G [SWAP]
/dev/sdf    /dev/sdf           sas  disk          1.7T 
|-/dev/sdf1 /dev/sdf1 /dev/sdf      part          512M 
|-/dev/sdf2 /dev/sdf2 /dev/sdf      part btrfs    1.5T 
`-/dev/sdf3 /dev/sdf3 /dev/sdf      part swap   127.7G [SWAP]
/dev/sdg    /dev/sdg           sas  disk          1.7T 
|-/dev/sdg1 /dev/sdg1 /dev/sdg      part          512M 
|-/dev/sdg2 /dev/sdg2 /dev/sdg      part btrfs    1.5T 
`-/dev/sdg3 /dev/sdg3 /dev/sdg      part swap   127.7G [SWAP]
/dev/sdh    /dev/sdh           sas  disk          1.7T 
|-/dev/sdh1 /dev/sdh1 /dev/sdh      part          512M 
|-/dev/sdh2 /dev/sdh2 /dev/sdh      part btrfs    1.5T 
`-/dev/sdh3 /dev/sdh3 /dev/sdh      part swap   127.7G [SWAP]

@ChojinDSL
Copy link
Author

ChojinDSL commented Feb 12, 2019

BTRFS is a bit unusual since it's so flexible and allows for very unusual setups.
It's probably easier to get information about the underlying BTRFS setup using some of BTRFS's own tools.

e..g

#############
btrfs fi show

Label: 'ROOT'  uuid: 69a8d230-fe68-4504-bb14-1742acdb8967
        Total devices 8 FS bytes used 2.23GiB
        devid    1 size 1.51TiB used 1.27GiB path /dev/sda2
        devid    2 size 1.51TiB used 1.27GiB path /dev/sdb2
        devid    3 size 1.51TiB used 1.27GiB path /dev/sdc2
        devid    4 size 1.51TiB used 1.27GiB path /dev/sdd2
        devid    5 size 1.51TiB used 1.27GiB path /dev/sde2
        devid    6 size 1.51TiB used 1.27GiB path /dev/sdf2
        devid    7 size 1.51TiB used 1.27GiB path /dev/sdg2
        devid    8 size 1.51TiB used 1.27GiB path /dev/sdh2

###############
btrfs fi usage /

Overall:
    Device size:                  12.10TiB
    Device allocated:             10.12GiB
    Device unallocated:           12.09TiB
    Device missing:                  0.00B
    Used:                          4.47GiB
    Free (estimated):              6.05TiB      (min: 6.05TiB)
    Data ratio:                       2.00
    Metadata ratio:                   2.00
    Global reserve:               16.00MiB      (used: 0.00B)

Data,RAID10: Size:4.00GiB, Used:2.16GiB
   /dev/sda2     512.00MiB
   /dev/sdb2     512.00MiB
   /dev/sdc2     512.00MiB
   /dev/sdd2     512.00MiB
   /dev/sde2     512.00MiB
   /dev/sdf2     512.00MiB
   /dev/sdg2     512.00MiB
   /dev/sdh2     512.00MiB

Metadata,RAID10: Size:1.00GiB, Used:71.77MiB
   /dev/sda2     128.00MiB
   /dev/sdb2     128.00MiB
   /dev/sdc2     128.00MiB
   /dev/sdd2     128.00MiB
   /dev/sde2     128.00MiB
   /dev/sdf2     128.00MiB
   /dev/sdg2     128.00MiB
   /dev/sdh2     128.00MiB

System,RAID10: Size:64.00MiB, Used:16.00KiB
   /dev/sda2       8.00MiB
   /dev/sdb2       8.00MiB
   /dev/sdc2       8.00MiB
   /dev/sdd2       8.00MiB
   /dev/sde2       8.00MiB
   /dev/sdf2       8.00MiB
   /dev/sdg2       8.00MiB
   /dev/sdh2       8.00MiB

Unallocated:
   /dev/sda2       1.51TiB
   /dev/sdb2       1.51TiB
   /dev/sdc2       1.51TiB
   /dev/sdd2       1.51TiB
   /dev/sde2       1.51TiB
   /dev/sdf2       1.51TiB
   /dev/sdg2       1.51TiB
   /dev/sdh2       1.51TiB

@jsmeix
Copy link
Member

jsmeix commented Feb 13, 2019

@ChojinDSL
I know Btrfs "is a bit unusual" (polite wording ;-)

Btrfs' features just break traditional assumptions
how a stack of storage objects is usually organized
(like disks => partitions => filesystems => mountpoints).

You may have a look at
#1603 (comment)
and
#1603 (comment)
and follow the links therein.

I fear implementing support for Btrfs setup on multiple disks
may require that the whole disk layout code in ReaR needs
to be fundamentally changed, enhanced, and overhauled.
On the other hand
#2023 (comment)
indicates that perhaps it could be even easier than it looks like.

@github-actions
Copy link

Stale issue message

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants