Re: Balancing raid5 after adding another disk does not move/use any data on it

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 13, 2019 at 11:11:02PM +0100, Jakub Husák wrote:
> Sorry, fighting with this technology called "email" :)
> 
> 
> Hopefully better wrapped outputs:
> 
> On 13. 03. 19 22:58, Jakub Husák wrote:
> 
> 
> > Hi,
> > 
> > I added another disk to my 3-disk raid5 and ran a balance command. After
> > few hours I looked to output of `fi usage` to see that no data are being
> > used on the new disk. I got the same result even when balancing my raid5
> > data or metadata.
> > 
> > Next I tried to convert my raid5 metadata to raid1 (a good idea anyway)
> > and the new disk started to fill immediately (even though it received
> > the whole amount of metadata with replicas being spread among the other
> > drives, instead of being really "balanced". I know why this happened, I
> > don't like it but I can live with it, let's not go off topic here :)).
> > 
> > Now my usage output looks like this:
> > 
> # btrfs filesystem usage   /mnt/data1
> WARNING: RAID56 detected, not implemented
> Overall:
>     Device size:          10.91TiB
>     Device allocated:         316.12GiB
>     Device unallocated:          10.61TiB
>     Device missing:             0.00B
>     Used:              58.86GiB
>     Free (estimated):             0.00B    (min: 8.00EiB)
>     Data ratio:                  0.00
>     Metadata ratio:              2.00
>     Global reserve:         512.00MiB    (used: 0.00B)
> 
> Data,RAID5: Size:4.59TiB, Used:4.06TiB
>    /dev/mapper/crypt-sdb       2.29TiB
>    /dev/mapper/crypt-sdc       2.29TiB
>    /dev/mapper/crypt-sde       2.29TiB
> 
> Metadata,RAID1: Size:158.00GiB, Used:29.43GiB
>    /dev/mapper/crypt-sdb      53.00GiB
>    /dev/mapper/crypt-sdc      53.00GiB
>    /dev/mapper/crypt-sdd     158.00GiB
>    /dev/mapper/crypt-sde      52.00GiB
> 
> System,RAID1: Size:64.00MiB, Used:528.00KiB
>    /dev/mapper/crypt-sdc      32.00MiB
>    /dev/mapper/crypt-sdd      64.00MiB
>    /dev/mapper/crypt-sde      32.00MiB
> 
> Unallocated:
>    /dev/mapper/crypt-sdb     393.04GiB
>    /dev/mapper/crypt-sdc     393.01GiB
>    /dev/mapper/crypt-sdd       2.57TiB
>    /dev/mapper/crypt-sde     394.01GiB
> 
> > 
> > I'm now running `fi balance -dusage=10` (and rising the usage limit). I
> > can see that the unallocated space is rising as it's freeing the little
> > used chunks but still no data are being stored on the new disk.

That is exactly what is happening:  you are moving tiny amounts of data
into existing big empty spaces, so no new chunk allocations (which should
use the new drive) are happening.  You have 470GB of data allocated
but not used, so you have up to 235 block groups to fill before the new
drive gets any data.

Also note that you always have to do a full data balance when adding
devices to raid5 in order to make use of all the space, so you might
as well get started on that now.  It'll take a while.  'btrfs balance
start -dstripes=1..3 /mnt/data1' will work for this case.

> > I it some bug? Is `fi usage` not showing me something (as it states
> > "WARNING: RAID56 detected, not implemented")? 

The warning just means the fields in the 'fi usage' output header,
like "Free (estimate)", have bogus values because they're not computed
correctly.

> > Or is there just too much
> > free space on the first set of disks that the balancing is not bothering
> > moving any data?

Yes.  ;)

> > If so, shouldn't it be really balancing (spreading) the data among all
> > the drives to use all the IOPS capacity, even when the raid5 redundancy
> > constraint is currently satisfied?

btrfs divides the disks into chunks first, then spreads the data across
the chunks.  The chunk allocation behavior spreads chunks across all the
disks.  When you are adding a disk to raid5, you have to redistribute all
the old data across all the disks to get balanced IOPS and space usage,
hence the full balance requirement.

If you don't do a full balance, it will eventually allocate data on
all disks, but it will run out of space on sdb, sdc, and sde first,
and then be unable to use the remaining 2TB+ on sdd.

> > 
> #  uname -a
> Linux storage 4.19.0-0.bpo.2-amd64 #1 SMP Debian 4.19.16-1~bpo9+1
> (2019-02-07) x86_64 GNU/Linux
> #   btrfs --version
> btrfs-progs v4.17
> #  btrfs fi show
> Label: none  uuid: xxxxxxxxxxxxxxxxx
>     Total devices 4 FS bytes used 4.09TiB
>     devid    2 size 2.73TiB used 2.34TiB path /dev/mapper/crypt-sdc
>     devid    3 size 2.73TiB used 2.34TiB path /dev/mapper/crypt-sdb
>     devid    4 size 2.73TiB used 2.34TiB path /dev/mapper/crypt-sde
>     devid    5 size 2.73TiB used 158.06GiB path /dev/mapper/crypt-sdd
> 
> #   btrfs fi df .
> Data, RAID5: total=4.59TiB, used=4.06TiB
> System, RAID1: total=64.00MiB, used=528.00KiB
> Metadata, RAID1: total=158.00GiB, used=29.43GiB
> GlobalReserve, single: total=512.00MiB, used=0.00B
> 
> > Thanks
> > 
> > Jakub
> > 

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux