btrfs aumenta a capacidade de raid substituindo discos (e não adicionando discos!)

3

Estou muito animado com os novos recursos do btrfs e gostaria de começar a testá-lo. Antes de começar, gostaria de perguntar se o btrfs suporta o aumento da capacidade de ataque substituindo discos por discos maiores (e não adicionando discos adicionais). Exemplo: Um RAID10 que consiste em unidades 8x 2TB resulta em uma capacidade de 8 TB. Em seguida, cada unidade de 2 TB é substituída por uma unidade de 6 TB. Após cada substituição de disco, é executada uma reconstrução / reequilíbrio. Eu estou querendo saber, se após a última substituição de disco e rebalancear a capacidade salta de 8TB para 24TB?

Há alguma palestra sobre isso na internet, mas não há declaração de 100% como "sim, depois de rebalancear, a capacidade aumenta!". link

Os dispositivos NAS da Synology suportam exatamente o recurso sobre o qual estou perguntando: link Mas, não tenho certeza se esse recurso é um recurso nativo do btrfs ou se os desenvolvedores da Synology o criaram especialmente para o sistema operacional da estação de disco.

    
por Chris 05.06.2016 / 11:24

2 respostas

1

Sim, a capacidade aumentará em btrfs quando você substituir as unidades por unidades maiores. Mas certifique-se de sempre ter backups! Enquanto o código RAID0 / 1 não é tão buggy quanto o código RAID5 / 6 no btrfs (a partir de 07/2016), a substituição do seu dispositivo não seria a primeira a dar errado.

    
por 24.07.2016 / 18:42
2

Deve funcionar como você descreveu. No entanto, um passo adicional pode ser necessário.

Por exemplo, se você colocar 4 unidades com 3 GB cada em uma configuração de raid1, você terá uma capacidade de 6 GB. Substituindo duas dessas unidades por unidades de 4 GB, deve dar a você 7 GB de capacidade ( calculadora de uso de disco btrfs ).

Etapa 1: crie um volume BTRFS RAID1 com 4x 3G = 6G de capacidade:

# 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

Passo 2: Substitua 2 unidades 3G (3ª e 4ª unidade) por unidades 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

O sistema de arquivos RAID1 deve ter uma capacidade de 7 GB, mas ele tem apenas 6 GB.

Solução

Ele precisa ser redimensionado para usar todo o espaço disponível (o saldo não ajuda). Ele precisa ser redimensionado em todos os dispositivos que foram substituídos, portanto, nos dispositivos 3 e 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

O sistema de arquivos agora tem sua capacidade esperada de 7 GB.

Passo 2 (alternativa): Remover unidades (o caminho antigo, não recomendado)

Antes de o comando replace ser adicionado, a única solução alternativa para substituir as unidades era adicionar uma nova unidade e remover a antiga. No entanto, isso pode levar mais tempo. E tem a desvantagem de que ele deixará você com um buraco vazio, ou seja, o ID do dispositivo removido não será mais usado e os IDs do dispositivo não corresponderão mais a sua respectiva posição na matriz de ataque.

# 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

Ao usar adicionar / remover, não é necessário aumentar o volume manualmente.

Observe que, ao usar adicionar / remover, a terceira unidade na matriz de ataque tem índice 5 em vez de 3, o que pode ser confuso quando você precisa identificar uma unidade com base em seu slot no rack.

Esta é a versão 4.4 do BTRFS. Versões futuras podem se comportar de maneira diferente.

    
por 19.01.2017 / 12:25