Re: RAID10 Balancing Request for Comments and Advices

Hugo Mills
2015-06-16T12:25:48Z

[-- Attachment #1: Type: text/plain, Size: 3591 bytes --]

On Tue, Jun 16, 2015 at 08:09:17AM -0400, Vincent Olivier wrote:
> Hello,
>
> I have a Centos 7 machine with the latest EPEL kernel-ml (4.0.5) with a 6-disk 4TB HGST RAID10 btrfs volume. With the following mount options :
>
> noatime,compress=zlib,space_cache 0 2
>
>
> "btrfs filesystem df” gives :
>
>
> Data, RAID10: total=7.08TiB, used=7.02TiB
> Data, single: total=8.00MiB, used=0.00B
> System, RAID10: total=7.88MiB, used=656.00KiB
> System, single: total=4.00MiB, used=0.00B
> Metadata, RAID10: total=9.19GiB, used=7.56GiB
> Metadata, single: total=8.00MiB, used=0.00B
> GlobalReserve, single: total=512.00MiB, used=0.00B

> My first question is this : is it normal to have “single” blocks ?
> Why not only RAID10? I don’t remember the exact mkfs options I used
> but I certainly didn’t ask for “single” so this is unexpected.

Yes. It's an artefact of the way that mkfs works. If you run a
balance on those chunks, they'll go away. (btrfs balance start
-dusage=0 -musage=0 /mountpoint)

> My second question is : what is the best device add / balance sequence to use if I want to add 2 more disks to this RAID10 volume? Also is a balance necessary at all since I’m adding a pair?

Add both devices first, then balance.

For a RAID-1 filesystem, adding two devices wouldn't need a balance
to get full usage out of the new devices. However, you've got RAID-10,
so the most you'd be able to get on the FS without a balance is four
times the remaining space on one of the existing disks.

The chunk allocator for RAID-10 will allocate as many chunks as it
can in an even number across all the devices, omitting the device with
the smallest free space if there's an odd number of devices. It must
have space on at least four devices, so adding two devices means that
it'll have to have free space on at least two of the existing ones
(and will try to use all of them).

So yes, unless you're adding four devices, a rebalance is required
here.

> My third question is: given that this file system is an offline
> backup for another RAID0 volume with SMB sharing, what is the best
> maintenance schedule as long as it is offline? For now, I only have
> a weekly cron scrub now, but I think that the priority is to have it
> balanced after a send-receive or rsync to optimize storage space
> availability (over performance). Is there a “light” balancing method
> recommended in this case?

You don't need to balance after send/receive or rsync. If you find
that you have lots of data space allocated but not used (the first
line in btrfs fi df, above), *and* metadata close to usage (within,
say, 700 MiB), *and* no unallocated space (btrfs fi show), then it's
worth running a filtered balance with -dlimit=3 or some similar small
value to free up some space that the metadata can expand into. Other
than that, it's pretty much entirely pointless.

For maintenance, I would suggest running a scrub regularly, to
check for various forms of bitrot. Typical frequencies for a scrub
are once a week or once a month -- opinions vary (as do runtimes).

> My fourth question, still within the same context: are there best
> practices when using smartctl for periodically testing (long test,
> short test) btrfs RAID devices?

I can't answer that one, I'm afraid.

Hugo.

--
Hugo Mills | Welcome to Rivendell, Mr Anderson...
hugo@... carfax.org.uk |
http://carfax.org.uk/ |
PGP: E2AB1DE4 | Machinae Supremacy, Hybrid

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]