Я очень взволнован новыми функциями btrfs и хотел бы начать его тестировать. Прежде чем начать, я хотел бы спросить, поддерживает ли btrfs увеличение емкости рейдов. путем замены дисков на более крупные (и не добавляя дополнительные диски). Пример: RAID10, состоящий из 8 дисков по 2 ТБ, дает емкость 8 ТБ. Затем каждый диск емкостью 2 ТБ заменяется диском на 6 ТБ. После каждой замены диска выполняется восстановление / балансировка. Интересно, а если после последней замены диска и ребалансировки емкость скачет с 8ТБ до 24ТБ?
В Интернете есть лекция об этом, но нет стопроцентного утверждения типа «да, после ребалансировки емкость увеличивается!». 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 создали ее специально для своей операционной системы дисковых станций.
Он должен работать так, как вы это описали. Однако может потребоваться дополнительный шаг.
Например, если вы поместите 4 диска по 3 ГБ каждый в конфигурацию raid1, вы получите емкость 6 ГБ. Замена двух из этих дисков на диски 4 ГБ должен даст вам 7 ГБ емкости (калькулятор использования диска btrfs).
# 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
# 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 ГБ.
До добавления команды замены единственным обходным путем для замены дисков было добавление нового диска и удаление старого. Однако это может занять больше времени. И у него есть недостаток, заключающийся в том, что он оставит у вас отверстие для девида, то есть идентификатор удаленного устройства больше не будет использоваться, а идентификаторы устройств больше не будут соответствовать их соответствующей позиции в массиве рейдов.
# 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. Будущие версии могут вести себя иначе.
Да, емкость увеличится в btrfs при замене дисков на более крупные. Но убедитесь, что у вас всегда есть резервные копии! Хотя код RAID0 / 1 и близко не так глючит, как код RAID5 / 6 в btrfs (по состоянию на 07/2016), замена вашего устройства не будет первой ошибкой.