* Re: Btrfs RAID1 File System Grew Something Extra
2013-12-18 4:12 ` Garry T. Williams
@ 2013-12-18 8:13 ` Hugo Mills
2013-12-18 8:28 ` Duncan
1 sibling, 0 replies; 6+ messages in thread
From: Hugo Mills @ 2013-12-18 8:13 UTC (permalink / raw)
To: Garry T. Williams; +Cc: linux-btrfs
[-- Attachment #1: Type: text/plain, Size: 2192 bytes --]
On Tue, Dec 17, 2013 at 11:12:25PM -0500, Garry T. Williams wrote:
> On 12-18-13 10:46:29 Anand Jain wrote:
> > On 12/18/2013 10:03 AM, Garry T. Williams wrote:
> > > I have been using btrfs for my /home partition on my home machine for
> > > a few years now. I created the file system RAID1 using two disk
> > > partitions. Recently I noticed btrfs fi df shows extra Data, System,
> > > and Metadata allocations. And btrfs fi show indicates extra
> > > allocations on one of my disk drives accounting for the 20 MiB
> > > allocation in the df display.
> >
> > this is a known bug in mkfs.btrfs, the workaround for now is
> > to run balance on FS having some data. so that unused group-
> > profile will go away.
>
> Thanks.
>
> garry@vfr$ sudo btrfs balance start /home
> Done, had to relocate 50 out of 50 chunks
> garry@vfr$ sudo btrfs filesystem df /home
> Data, RAID1: total=22.00GiB, used=21.02GiB
> System, RAID1: total=32.00MiB, used=12.00KiB
> System, single: total=4.00MiB, used=0.00
> Metadata, RAID1: total=1.00GiB, used=419.60MiB
>
> Hmmm.
>
> Well, it's better, but the extra allocation for System is baffling. I
> believe that this happened sometime after creating the file system.
It won't be spontaneously created -- it'll have been there since
the beginning. The first system chunk is "special" and is skipped
during balances, so it won't get cleaned up like this.
> Also balance on a RAID1 file system with exactly two drives doesn't
> make much sense to me. Why would any "chunks" have to be relocated?
> I'm clearly missing something here.
That's what balance does -- it rewrites every single piece of data
on the filesystem. In this case, you could have used a filter to
balance (and hence remove) only the single chunks:
btrfs balance start -mprofiles=single -dprofiles=single -sprofiles=single /mountpoint
Hugo.
--
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
PGP key: 65E74AC0 from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
--- One of these days, I'll catch that man without a quotation, ---
and he'll look undressed.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Btrfs RAID1 File System Grew Something Extra
2013-12-18 4:12 ` Garry T. Williams
2013-12-18 8:13 ` Hugo Mills
@ 2013-12-18 8:28 ` Duncan
2013-12-22 1:14 ` Kai Krakow
1 sibling, 1 reply; 6+ messages in thread
From: Duncan @ 2013-12-18 8:28 UTC (permalink / raw)
To: linux-btrfs
Garry T. Williams posted on Tue, 17 Dec 2013 23:12:25 -0500 as excerpted:
> On 12-18-13 10:46:29 Anand Jain wrote:
>> On 12/18/2013 10:03 AM, Garry T. Williams wrote:
>> > I have been using btrfs for my /home partition on my home machine for
>> > a few years now. I created the file system RAID1 using two disk
>> > partitions. Recently I noticed btrfs fi df shows extra Data, System,
>> > and Metadata allocations.
>>
>> this is a known bug in mkfs.btrfs, the workaround for now is to run
>> balance on FS having some data. so that unused group-
>> profile will go away.
>
> Thanks.
>
> garry@vfr$ sudo btrfs balance start /home
> Done, had to relocate 50 out of 50 chunks
> garry@vfr$ sudo btrfs filesystem df /home
> Data, RAID1: total=22.00GiB, used=21.02GiB
> System, RAID1: total=32.00MiB, used=12.00KiB
> System, single: total=4.00MiB, used=0.00
> Metadata, RAID1: total=1.00GiB, used=419.60MiB
>
> Hmmm.
>
> Well, it's better, but the extra allocation for System is baffling. I
> believe that this happened sometime after creating the file system.
Keep in mind that btrfs remains under development, still improving old
features and growing new ones as well as bugfixing (and of course
unfortunately still adding new bugs with the new code occasionally, it
comes with the development filesystem territory).
Having seen the same thing happen here, I think the extra allocations
were there all the time, but simply weren't originally reported. After
some improvements in btrfs fi df, it more accurately reported the empty
chunk-stub relics of mkfs.btrfs where it didn't before, so they appeared
to be new even if they'd been there all the time. But a balance normally
does remove them.
Tho that doesn't explain why the balance didn't remove that 4 MiB single-
mode system stub. It did on all my btrfs here. But I run gentoo and
build/install gentoo's live-git btrfs-progs, and build/run the mainline
development kernel from live-git as well, so I'm well into the 3.13-rcs
by now, while you haven't even upgraded to 3.12 yet and are still on 3.11-
stable series, which might account for that. Or perhaps another balance
would kill the system-stub as well? I don't know.
> Also balance on a RAID1 file system with exactly two drives doesn't make
> much sense to me. Why would any "chunks" have to be relocated? I'm
> clearly missing something here.
You haven't read up on how btrfs balance works at the wiki, have you?
Which means you're probably missing other information that might be
helpful in administering your btrfs as well. It'll likely be worth your
while to spend some time reading the user documentation there (and to
bookmark it for further reference, too =:^) :
https://btrfs.wiki.kernel.org/
For balance in particular, see:
https://btrfs.wiki.kernel.org/index.php/FAQ#What_does_.22balance.22_do.3F
Also of interest:
https://btrfs.wiki.kernel.org/index.php/Balance_Filters
Of course, the btrfs manpage is also useful.
Basically, unless you limit it with the -d/-m/-s switches and/or filters,
balance blindly rewrites/relocates every chunk on the filesystem,
cleaning up and if applicable converting between redundancy types as it
does so. So all chunks are relocated/rewritten.
But the above documentation should also suggest trying this to see if it
addresses that remaining single-mode system chunk stub:
btrfs balance start -fsconvert=raid1 /home
Especially if you're on spinning rust (not SSD), that should take quite a
bit less time than a full balance as well, because you're only rebalancing
the few MiB of system chunks, not the GiBs of data and metadata.
Hopefully that'll kill the single-mode system stub-chunk. If not, you've
probably hit a bug and should report it as such, tho you might wish to
try it with the latest 3.12 stable or 3.13-rc first, in case the bug has
already been fixed.
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
^ permalink raw reply [flat|nested] 6+ messages in thread