btrfs увеличивают емкость рейда, заменяя диски (а не добавляя диски!)

Я очень взволнован новыми функциями btrfs и хотел бы начать его тестировать. Прежде чем начать, я хотел бы спросить, поддерживает ли btrfs увеличение емкости рейдов путем замены дисков на диски большего размера без добавления дополнительных дисков). Пример: RAID10, состоящий из 8 дисков по 2 ТБ, обеспечивает емкость 8 ТБ. Затем каждый диск емкостью 2 ТБ заменяется диском на 6 ТБ. После каждой замены диска выполняется восстановление / балансировка. Мне интересно, если после последней замены диска и перебалансировки емкость подскочит с 8 ТБ до 24 ТБ?

В Интернете есть лекция об этом, но нет 100% утверждения типа «да, после перебалансировки емкость увеличивается! ». https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices#Adding_new_devices

Устройства NAS от Synology поддерживают именно ту функцию, о которой я спрашиваю: https: //www.synology .com / en-global / knowledgebase / DSM / help / DSM / StorageManager / volume_diskgroup_expand_replace_disk Но я не уверен, является ли эта функция встроенной функцией btrfs или разработчики из Synology создали ее специально для своей операционной системы дисковых станций.

3
задан 5 June 2016 в 16:51
2 ответа

Да, при замене дисков на диски большего размера емкость увеличится в btrfs. Но убедитесь, что у вас всегда есть резервные копии! Хотя код RAID0 / 1 и близко не так ошибочен, как код RAID5 / 6 в btrfs (по состоянию на 07/2016), замена вашего устройства не будет первой ошибкой.

1
ответ дан 3 December 2019 в 06:29

Он должен работать, как вы описали. Однако может потребоваться дополнительный шаг.

Например, если вы поместите 4 диска по 3 ГБ каждый в конфигурацию raid1, вы получите емкость 6 ГБ. Замена двух из этих дисков дисками 4 ГБ должна дать вам 7 ГБ емкости ( калькулятор использования диска btrfs ).

Шаг 1. Создайте том BTRFS RAID1 с 4x 3G = 6G емкость:

# mkfs.btrfs -f -draid1 -mraid1 /dev/sdb /dev/sdc /dev/sdd /dev/sde >/dev/null 
# mount /dev/sdb BTRFS/
# btrfs fi show BTRFS/
Label: none  uuid: e6dc6a95-ae5e-49c4-bded-77001b445ac7
    Total devices 4 FS bytes used 192.00KiB
    devid    1 size 3.00GiB used 331.12MiB path /dev/sdb
    devid    2 size 3.00GiB used 0.00B path /dev/sdc
    devid    3 size 3.00GiB used 0.00B path /dev/sdd
    devid    4 size 3.00GiB used 0.00B path /dev/sde

# parted -s /dev/sdb print | grep Disk
Disk /dev/sdb: 3221MB
Disk Flags: 
# parted -s /dev/sdc print | grep Disk
Disk /dev/sdc: 3221MB
Disk Flags: 
# parted -s /dev/sdd print | grep Disk
Disk /dev/sdd: 3221MB
Disk Flags: 
# parted -s /dev/sde print | grep Disk
Disk /dev/sde: 3221MB
Disk Flags: 
# df -h BTRFS/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        6.0G   17M  5.3G   1% /mnt/BTRFS
# btrfs fi df BTRFS/
Data, RAID1: total=1.00GiB, used=320.00KiB
Data, single: total=1.00GiB, used=0.00B
System, RAID1: total=32.00MiB, used=16.00KiB
Metadata, RAID1: total=256.00MiB, used=112.00KiB
GlobalReserve, single: total=16.00MiB, used=0.00B

Шаг 2: Замените 2 диска 3G (3-й и 4-й диск) на диски 4G:

# parted -s /dev/sdf print | grep Disk
Disk /dev/sdf: 4295MB
Disk Flags: 
# parted -s /dev/sdg print | grep Disk
Disk /dev/sdg: 4295MB
Disk Flags: 
# btrfs replace start -f 3 /dev/sdf BTRFS/
# btrfs replace start -f 4 /dev/sdg BTRFS/
# btrfs fi show BTRFS/
Label: none  uuid: e6dc6a95-ae5e-49c4-bded-77001b445ac7
    Total devices 4 FS bytes used 512.00KiB
    devid    1 size 3.00GiB used 1.28GiB path /dev/sdb
    devid    2 size 3.00GiB used 1.25GiB path /dev/sdc
    devid    3 size 3.00GiB used 1.06GiB path /dev/sdf
    devid    4 size 3.00GiB used 544.00MiB path /dev/sdg

# df -h BTRFS/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        6.0G   17M  5.2G   1% /mnt/BTRFS

Файловая система RAID1 должна иметь емкость 7 ГБ, но она имеет только 6 ГБ.

Решение

Необходимо изменить размер, чтобы использовать все доступное пространство (баланс не поможет). Его размер необходимо изменить на каждом устройстве, которое было заменено, например на устройствах №3 и №4.

# df -h BTRFS/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        6.0G   17M  5.8G   1% /mnt/BTRFS
# btrfs fi show BTRFS/
Label: none  uuid: e71b4996-5f7c-4b08-b8d8-87163430b643
    Total devices 4 FS bytes used 448.00KiB
    devid    1 size 3.00GiB used 1.00GiB path /dev/sdb
    devid    2 size 3.00GiB used 1.00GiB path /dev/sdc
    devid    3 size 3.00GiB used 288.00MiB path /dev/sdf
    devid    4 size 3.00GiB used 288.00MiB path /dev/sdg

# btrfs fi resize 3:max BTRFS/
Resize 'BTRFS/' of '3:max'
# btrfs fi resize 4:max BTRFS/
Resize 'BTRFS/' of '4:max'
# df -h BTRFS/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        7.0G   17M  6.8G   1% /mnt/BTRFS

Теперь файловая система имеет ожидаемую емкость 7 ГБ.

Шаг 2 (альтернативный): Удалите диски (старые Кстати, не рекомендуется)

До добавления команды замены единственным обходным решением для замены дисков было добавление нового диска и удаление старого. Однако это может занять больше времени. И у него есть недостаток, заключающийся в том, что он оставит вас с дырой для devid, т.е. идентификатор удаленного устройства больше не будет использоваться, а идентификаторы устройств больше не будут соответствовать их соответствующей позиции в массиве raid.

# df -h BTRFS/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        6.0G   17M  5.3G   1% /mnt/BTRFS
# btrfs dev add -f /dev/sdf BTRFS/
# btrfs dev add -f /dev/sdg BTRFS/
# btrfs fi show BTRFS/
Label: none  uuid: ac40a98a-ac3b-4563-9ec9-6135332e5cdc
    Total devices 6 FS bytes used 448.00KiB
    devid    1 size 3.00GiB used 1.03GiB path /dev/sdb
    devid    2 size 3.00GiB used 1.25GiB path /dev/sdc
    devid    3 size 3.00GiB used 1.03GiB path /dev/sdd
    devid    4 size 3.00GiB used 256.00MiB path /dev/sde
    devid    5 size 4.00GiB used 0.00B path /dev/sdf
    devid    6 size 4.00GiB used 0.00B path /dev/sdg

# btrfs dev rem /dev/sdd BTRFS/
# btrfs dev rem /dev/sde BTRFS/
# df -h BTRFS/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        7.0G   17M  6.8G   1% /mnt/BTRFS
# btrfs fi show BTRFS/
Label: none  uuid: efc5d80a-54c6-4bb9-ba8f-f9d392415d3f
    Total devices 4 FS bytes used 640.00KiB
    devid    1 size 3.00GiB used 1.00GiB path /dev/sdb
    devid    2 size 3.00GiB used 1.00GiB path /dev/sdc
    devid    5 size 4.00GiB used 1.03GiB path /dev/sdf
    devid    6 size 4.00GiB used 1.03GiB path /dev/sdg

При использовании добавления / удаления , нет необходимости увеличивать том вручную.

Обратите внимание, что при использовании добавления / удаления третий диск в массиве raid имеет индекс 5 вместо 3, что может сбивать с толку, когда вам нужно идентифицировать диск на основе его слот в стойке.


Это BTRFS версии 4.4. Будущие версии могут вести себя иначе.

2
ответ дан 3 December 2019 в 06:29

Теги

Похожие вопросы