From: Anand Jain <anand.jain@oracle.com>
To: kreijack@inwind.it, linux-btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: Question: how understand the raid profile of a btrfs filesystem
Date: Tue, 24 Mar 2020 12:55:31 +0800 [thread overview]
Message-ID: <2c7f2844-b97d-0e15-6ae6-40c9c935aa77@oracle.com> (raw)
In-Reply-To: <517dac49-5f57-2754-2134-92d716e50064@alice.it>
On 3/21/20 1:56 AM, Goffredo Baroncelli wrote:
> Hi all,
>
> for a btrfs filesystem, how an user can understand which is the
> {data,mmetadata,system} [raid] profile in use ? E.g. the next chunk
> which profile will have ?
> For simple filesystem it is easy looking at the output of (e.g) "btrfs
> fi df" or "btrfs fi us". But what if the filesystem is not simple ?
>
> btrfs fi us t/.
> Overall:
> Device size: 40.00GiB
> Device allocated: 19.52GiB
> Device unallocated: 20.48GiB
> Device missing: 0.00B
> Used: 16.75GiB
> Free (estimated): 12.22GiB (min: 8.27GiB)
> Data ratio: 1.90
> Metadata ratio: 2.00
> Global reserve: 9.06MiB (used: 0.00B)
>
> Data,single: Size:1.00GiB, Used:512.00MiB (50.00%)
> /dev/loop0 1.00GiB
>
> Data,RAID5: Size:3.00GiB, Used:2.48GiB (82.56%)
> /dev/loop1 1.00GiB
> /dev/loop2 1.00GiB
> /dev/loop3 1.00GiB
> /dev/loop0 1.00GiB
>
> Data,RAID6: Size:4.00GiB, Used:3.71GiB (92.75%)
> /dev/loop1 2.00GiB
> /dev/loop2 2.00GiB
> /dev/loop3 2.00GiB
> /dev/loop0 2.00GiB
>
> Data,RAID1C3: Size:2.00GiB, Used:1.88GiB (93.76%)
> /dev/loop1 2.00GiB
> /dev/loop2 2.00GiB
> /dev/loop3 2.00GiB
>
> Metadata,RAID1: Size:256.00MiB, Used:9.14MiB (3.57%)
> /dev/loop2 256.00MiB
> /dev/loop3 256.00MiB
>
> System,RAID1: Size:8.00MiB, Used:16.00KiB (0.20%)
> /dev/loop2 8.00MiB
> /dev/loop3 8.00MiB
>
> Unallocated:
> /dev/loop1 5.00GiB
> /dev/loop2 4.74GiB
> /dev/loop3 4.74GiB
> /dev/loop0 6.00GiB
>
> This is an example of a strange but valid filesystem. So the question
> is: the next chunk which profile will have ?
> Is there any way to understand what will happens ?
>
> I expected that the next chunk will be allocated as the last "convert".
> However I discovered that this is not true.
>
> Looking at the code it seems to me that the logic is the following (from
> btrfs_reduce_alloc_profile())
>
> if (allowed & BTRFS_BLOCK_GROUP_RAID6)
> allowed = BTRFS_BLOCK_GROUP_RAID6;
> else if (allowed & BTRFS_BLOCK_GROUP_RAID5)
> allowed = BTRFS_BLOCK_GROUP_RAID5;
> else if (allowed & BTRFS_BLOCK_GROUP_RAID10)
> allowed = BTRFS_BLOCK_GROUP_RAID10;
> else if (allowed & BTRFS_BLOCK_GROUP_RAID1)
> allowed = BTRFS_BLOCK_GROUP_RAID1;
> else if (allowed & BTRFS_BLOCK_GROUP_RAID0)
> allowed = BTRFS_BLOCK_GROUP_RAID0;
>
> flags &= ~BTRFS_BLOCK_GROUP_PROFILE_MASK;
>
> So in the case above the profile will be RAID6. And in the general if a
> RAID6 chunk is a filesystem, it wins !
That's arbitrary and doesn't make sense to me, IMO mkfs should save
default profile in the super-block (which can be changed using ioctl)
and kernel can create chunks based on the default profile. This
approach also fixes chunk size inconsistency between progs and kernel
as reported/fixed here
https://patchwork.kernel.org/patch/11431405/
Thanks, Anand
> But I am not sure.. Moreover I expected to see also reference to DUP
> and/or RAID1C[34] ...
>
> Does someone have any suggestion ?
>
> BR
> G.Baroncelli
>
next prev parent reply other threads:[~2020-03-24 4:55 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-20 17:56 Question: how understand the raid profile of a btrfs filesystem Goffredo Baroncelli
2020-03-21 3:29 ` Zygo Blaxell
2020-03-21 5:40 ` Andrei Borzenkov
2020-03-21 7:14 ` Zygo Blaxell
2020-03-21 9:55 ` Goffredo Baroncelli
2020-03-21 23:26 ` Zygo Blaxell
2020-03-22 8:34 ` Goffredo Baroncelli
2020-03-22 8:38 ` Goffredo Baroncelli
2020-03-22 23:49 ` Zygo Blaxell
2020-03-23 20:50 ` Goffredo Baroncelli
2020-03-23 22:48 ` Graham Cobb
2020-03-25 4:09 ` Zygo Blaxell
2020-03-25 4:30 ` Paul Jones
2020-03-26 2:51 ` Zygo Blaxell
2020-03-23 23:18 ` Zygo Blaxell
2020-03-24 4:55 ` Anand Jain [this message]
2020-03-24 17:59 ` Goffredo Baroncelli
2020-03-25 4:09 ` Andrei Borzenkov
2020-03-25 17:14 ` Goffredo Baroncelli
2020-03-26 3:10 ` Zygo Blaxell
-- strict thread matches above, loose matches on Subject: below --
2020-03-20 17:58 Goffredo Baroncelli
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=2c7f2844-b97d-0e15-6ae6-40c9c935aa77@oracle.com \
--to=anand.jain@oracle.com \
--cc=kreijack@inwind.it \
--cc=linux-btrfs@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox