The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"BTRFS на JBOD (Debian)"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Файловые системы, диски)
Изначальное сообщение [ Отслеживать ]

"BTRFS на JBOD (Debian)"  +/
Сообщение от Seryoga2014 (ok), 16-Май-18, 16:29 
Имеется сервер HPE ProLiant DL360p Gen8 с Debian 8.1 Jessie, с 6 HDD в RAID 1+0 (+ загрузочный RAID 1 на SSD). На этом RAID 1+0 одна партиция на которую сваливаются логи некого приложения, их очень много и становится всё больше и больше. В общем места не хватает и потому надо переделать RAID 1+0 в JBOD, а файловую систему в BTRFS со сжатием (логи текстовые, сжиматься должны очень хорошо). Отказоустойчивость не очень важна, но всё же желательно если выйдет из строя один HDD, то данные на остальных HDD чтоб выжили и можно было без проблем заменить HDD.

Если я правильно понял, то JBOD у HPE называется "HBA Mode" и он поддерживается моим контроллером P420i. Мигрировать RAID10 -> JBOD не планирую, т.к. на сколько я понял миграция идёт "15 minutes per gigabyte", т.е. свои терабайты я буду больше месяца мигрировать - проще снести всё и пересоздать, пусть даже потеряются логи - опять насобираются.

Сжатие вроде не должно влиять на производительность: ""Btrfs включена в основную ветвь ядра Linux начиная с версии 2.6.29-rc в статусе экспериментальной. Проведённая ресурсом Phoronix оценка производительности показала, что Btrfs с включённым режимом сжатия иногда опережает по производительности Ext4"". Правда тут https://wiki.debian.org/Btrfs пишут в рекомендациях: "Do not use compression. That said if one wants to test this functionality then zlib seems to have fewer issues than lzo. There is insufficient data on the new zstd mode to either recommend it or caution against its use.". Надеюсь всё будет нормально.

Вопросы:
1. Почему при apt-get install btrfs-tools ставится старая версия v3.17, хотя на packages.debian.org лежит и 4.15.1-2? Можно ли поставить с помощью apt-get install последнюю версию? Она поддерживает сжатие ZSTD https://github.com/kilobyte/compsize Или только вручную с помощью dpkg -i?

2. Хочу для начала ничего не убивать, а попробовать сконвертировать ext4 на RAID 1+0 в BTRFS со сжатием ZSTD. Проблем быть не должно? В том числе с этим RAID 1+0? С каким опциями лучше всего подключать? Постоянно заливаются файлы с логами, магабайт по 15 (без сжатия), которые со временем (через сколько-то дней) перезаписываются. В логах часто надо что-то искать.

3. Если буду переразбивать дисковый массив в JBOD - его нужно собирать средствами контроллера HPE P420i в HBA Mode? Или делать как-то всё средствами Debian, BTRFS?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


4. "BTRFS на JBOD (Debian)"  –1 +/
Сообщение от Pofigist (?), 22-Май-18, 18:00 
Использовал я как-то http://rockstor.com - это СХД на основе btrfs... Ну кратко - месяца не продержался, умер с потерей всех данных. Ну там ничего ценного не было, так что я даже заморачиваться с восстановлением не стал, хотя может и можно было вытянуть что-то...

Вообщем я с тех пор яснил что если хочешь полноценное СХД на опенсорце - альтернатив ZFS просто нет.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "BTRFS на JBOD (Debian)"  +/
Сообщение от Seryoga2014 (ok), 06-Авг-18, 17:32 
Если кому-то когда-то станет интересно. В общем собрал я 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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "BTRFS на JBOD (Debian)"  +/
Сообщение от Seryoga2014 (ok), 06-Авг-18, 17:53 
В результате: был у меня RAID1+0, собранный средствами контроллера HPE P420i, теперь у меня JBOD, собранный средствами BTRFS с вдвое большим объёмом без учёта сжатия средствами BTRFS. BTRFS дополнительно более чем удваивает доступный объём с помощью сжатия ZSTD.

BTRFS --version
BTRFS-progs v4.16.1
Как я понял, надо подгонять версию ядра к версии BTRFS, если версии отличаются в ту или другую строну, то какой-нибудь функционал может быть недоступен. В более свежих версиях шире функционал, пофиксили баги - стабильней работать должно.


Если какой-нибудь физический диск в JBOD сломается, то потеряются только данные (логи), которые лежат на нём, остальные должны остаться в живых.


Остались вопросы:
btrfs subvolume create /mnt/<path>/<subvol>
btrfs property set /mnt/<path>/<subvol> compression zstd - создаваемые файлы не жмутся всё равно, судя по compsize
chattr -R +c /mnt/<path>/<subvol> - создаваемые файлы не жмутся всё равно, судя по compsize
Почему не работает сжатие для subvol для создаваемых там файлов?

btrfs filesystem defrag -v -r -f -czstd /mnt/<path>/<subvol> - сжимаются только те файлы, что уже были, новые не будут сжиматься. Это работает, но новые файлы там опять остаются несжатыми. Пришлось весь диск указывать как принудительно сжимаемый в fstab (compress-force=zstd), а хотелось сжимать лишь одну папку (ну subvolume).

btrfs property get /mnt/<path>/<subvol> - видно было, что атрибут сжатия и нужного типа установился.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру