Если кому-то когда-то станет интересно. В общем собрал я JBOD средствами BTRFS из 6 HDD. Для этого на HPE ProLiant DL360p Gen8 создал 6 штук RAID0 (F5 при начальной загрузке сервера, загорится соответствующая надпись - попадаем в настройки RAID) + один логический диск на каждом. Далее из Debian:
mkfs.btrfs -d single /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdgВыяснил UUID:
lsblk -alt
blkid
Прописал монтирование при загрузке:
echo "UUID=<UUID> /mnt/<path> btrfs x-systemd.device-timeout=10,noatime,compress-force=zstd,autodefrag 0 2" >> /etc/fstab
В принципе, всё вроде как нормально работает, равномерно разбрасывает файлы по всем физическим дискам в JBOD:
btrfs device usage -h /mnt/<path>
/dev/sdb, ID: 1
Device size: 1.09TiB
Device slack: 0.00B
Data,single: 475.00GiB
Metadata,RAID1: 5.00GiB
System,RAID1: 8.00MiB
Unallocated: 637.77GiB
/dev/sdc, ID: 2
Device size: 1.09TiB
Device slack: 0.00B
Data,single: 474.00GiB
Metadata,RAID1: 6.00GiB
System,RAID1: 8.00MiB
Unallocated: 637.77GiB
/dev/sdd, ID: 3
Device size: 1.09TiB
Device slack: 0.00B
Data,single: 474.00GiB
Metadata,RAID1: 6.00GiB
Unallocated: 637.78GiB
/dev/sde, ID: 4
Device size: 1.09TiB
Device slack: 0.00B
Data,single: 480.00GiB
Metadata,RAID1: 1.00GiB
Unallocated: 636.78GiB
/dev/sdf, ID: 5
Device size: 1.09TiB
Device slack: 0.00B
Data,single: 478.00GiB
Metadata,RAID1: 3.00GiB
Unallocated: 636.78GiB
/dev/sdg, ID: 6
Device size: 1.09TiB
Device slack: 0.00B
Data,single: 474.00GiB
Metadata,RAID1: 7.00GiB
Unallocated: 636.78GiB
btrfs filesystem usage /mnt/<path> -h
Overall:
Device size: 6.55TiB
Device allocated: 2.82TiB
Device unallocated: 3.73TiB
Device missing: 0.00B
Used: 2.80TiB
Free (estimated): 3.74TiB (min: 1.88TiB)
Data ratio: 1.00
Metadata ratio: 2.00
Global reserve: 512.00MiB (used: 0.00B)
Data,single: Size:2.79TiB, Used:2.78TiB
/dev/sdb 475.00GiB
/dev/sdc 474.00GiB
/dev/sdd 474.00GiB
/dev/sde 480.00GiB
/dev/sdf 478.00GiB
/dev/sdg 474.00GiB
Metadata,RAID1: Size:14.00GiB, Used:12.61GiB
/dev/sdb 5.00GiB
/dev/sdc 6.00GiB
/dev/sdd 6.00GiB
/dev/sde 1.00GiB
/dev/sdf 3.00GiB
/dev/sdg 7.00GiB
System,RAID1: Size:8.00MiB, Used:320.00KiB
/dev/sdb 8.00MiB
/dev/sdc 8.00MiB
Unallocated:
/dev/sdb 637.77GiB
/dev/sdc 637.77GiB
/dev/sdd 637.78GiB
/dev/sde 636.78GiB
/dev/sdf 636.78GiB
/dev/sdg 636.78GiB
Видно, что DATA, METADATA я расположил на всех 6 физических дисках, а SYSTEM только на первых двух.
btrfs filesystem show /mnt/<path>
Label: '<label>' uuid: <uuid>
Total devices 6 FS bytes used 2.79TiB
devid 1 size 1.09TiB used 480.01GiB path /dev/sdb
devid 2 size 1.09TiB used 480.01GiB path /dev/sdc
devid 3 size 1.09TiB used 480.00GiB path /dev/sdd
devid 4 size 1.09TiB used 481.00GiB path /dev/sde
devid 5 size 1.09TiB used 481.00GiB path /dev/sdf
devid 6 size 1.09TiB used 481.00GiB path /dev/sdg
btrfs-balance делать нет нужды, данные равномерно распределены между всеми дисками (для дополнительных физических дисков места уже нет).
btrfs filesystem df /mnt/<path>
Data, single: total=2.79TiB, used=2.78TiB
System, RAID1: total=8.00MiB, used=320.00KiB
Metadata, RAID1: total=14.00GiB, used=12.61GiB
GlobalReserve, single: total=512.00MiB, used=0.00B
Сжатие ZSTD со степенью компрессии по умолчанию (на сколько я понял, в текущей версии менять степень сжатия невозможно для этого метода компрессии) жмёт довольно ощутимо текстовые логи (compsize ставится дополнительно: apt-get install btrfs-compsize):
compsize /mnt/<path>
Processed 640027 files, 54822039 regular extents (54822039 refs), 0 inline.
Type Perc Disk Usage Uncompressed Referenced
TOTAL 42% 2.7T 6.4T 6.4T
none 100% 1.8G 1.8G 1.8G
zstd 42% 2.7T 6.4T 6.4T
Никаких ошибок в работе не видно:
btrfs device stats -c /mnt/<path>
[/dev/sdb].write_io_errs 0
[/dev/sdb].read_io_errs 0
[/dev/sdb].flush_io_errs 0
[/dev/sdb].corruption_errs 0
[/dev/sdb].generation_errs 0
[/dev/sdc].write_io_errs 0
[/dev/sdc].read_io_errs 0
[/dev/sdc].flush_io_errs 0
[/dev/sdc].corruption_errs 0
[/dev/sdc].generation_errs 0
[/dev/sdd].write_io_errs 0
[/dev/sdd].read_io_errs 0
[/dev/sdd].flush_io_errs 0
[/dev/sdd].corruption_errs 0
[/dev/sdd].generation_errs 0
[/dev/sde].write_io_errs 0
[/dev/sde].read_io_errs 0
[/dev/sde].flush_io_errs 0
[/dev/sde].corruption_errs 0
[/dev/sde].generation_errs 0
[/dev/sdf].write_io_errs 0
[/dev/sdf].read_io_errs 0
[/dev/sdf].flush_io_errs 0
[/dev/sdf].corruption_errs 0
[/dev/sdf].generation_errs 0
[/dev/sdg].write_io_errs 0
[/dev/sdg].read_io_errs 0
[/dev/sdg].flush_io_errs 0
[/dev/sdg].corruption_errs 0
[/dev/sdg].generation_errs 0
Но смущает только обилие таких вот ошибок (весь список и для всех дисков не стал приводить - слишком он длинный, ниже лишь небольшая часть для одно диска), хотя их влияние на что-либо не заметил:
btrfs-find-root /dev/sdb
Superblock thinks the generation is 62327
Superblock thinks the level is 1
Found tree root at 1344874201088 gen 62327 level 1
Well block 1344863961088(gen: 62325 level: 0) seems good, but generation/level doesn't match, want gen: 62327 level: 1
Well block 1344864288768(gen: 62322 level: 0) seems good, but generation/level doesn't match, want gen: 62327 level: 1
Well block 1344861421568(gen: 62322 level: 0) seems good, but generation/level doesn't match, want gen: 62327 level: 1
Well block 1344861290496(gen: 62322 level: 0) seems good, but generation/level doesn't match, want gen: 62327 level: 1
Well block 1344822345728(gen: 62318 level: 0) seems good, but generation/level doesn't match, want gen: 62327 level: 1