Eu tenho um Btrfs raid1 com 3 discos em um Ubuntu 16.04. No entanto, parece que apenas 2 discos estão sendo usados em vez de todos os 3. Como devo corrigir isso?
root@one:~# btrfs fi sh
Label: none uuid: 3880b9fa-0824-4ffe-8f61-893a104f3567
Total devices 3 FS bytes used 54.77GiB
devid 1 size 2.73TiB used 56.03GiB path /dev/sda2
devid 2 size 2.73TiB used 56.03GiB path /dev/sdc2
devid 3 size 2.59TiB used 0.00B path /dev/sdb3
Tentei executar um filtro de conversão, mas ainda assim o /dev/sdb3 não está sendo usado.
root@one:~# btrfs balance start -dconvert=raid1 -mconvert=raid1 /top/raid/
Done, had to relocate 112 out of 112 chunks
root@one:~# btrfs fi df /top/raid/
Data, RAID1: total=55.00GiB, used=54.40GiB
System, RAID1: total=32.00MiB, used=16.00KiB
Metadata, RAID1: total=1.00GiB, used=373.06MiB
GlobalReserve, single: total=128.00MiB, used=0.00B
A princípio, há apenas 1 disco durante a instalação do servidor Ubuntu. Então adicionei um disco e converti para raid1. Então adicionei um terceiro disco /dev/sdb3 e tentei equilibrar novamente. O terceiro disco não está sendo usado.
root@one:~# btrfs --version
btrfs-progs v4.4
Posso montar /dev/sdb3 perfeitamente.
root@one:~# mount /dev/sdb3 /mnt
root@one:~# ll /mnt
total 16
drwxr-xr-x 1 root root 74 Apr 13 09:37 ./
drwxr-xr-x 1 root root 200 Apr 12 21:19 ../
drwxr-xr-x 1 root root 200 Apr 12 21:19 @/
drwxr-xr-x 1 root root 152 Apr 12 15:31 @home/
drwxrwx--t 1 root root 36 Apr 13 09:38 @samba/
root@one:~# btr fi sh
Label: none uuid: 3880b9fa-0824-4ffe-8f61-893a104f3567
Total devices 3 FS bytes used 54.82GiB
devid 1 size 2.73TiB used 56.03GiB path /dev/sda2
devid 2 size 2.73TiB used 56.03GiB path /dev/sdc2
devid 3 size 2.59TiB used 0.00B path /dev/sdb3
Responder1
EDITAR:
Note oPerguntas frequentes sobre btrfsafirma o seguinte, conforme comentado por @ jeff-schaller (ênfase minha):
btrfs suporta RAID-0, RAID-1 e RAID-10. A partir do Linux 3.9, o btrfs também suporta RAID-5 e RAID-6, embora esse código ainda seja experimental.
O btrfs combina primeiro todos os dispositivos em um pool de armazenamento e depois duplica os pedaços à medida que os dados do arquivo são criados. RAID-1 é definido atualmente como "2 cópias de todos os dados em dispositivos diferentes". Isso difere de MD-RAID e dmraid, pois eles fazem exatamente n cópias para n dispositivos. Em um btrfs RAID-1 emtrês dispositivos de 1 TB, obtemos 1,5 TB de dados utilizáveis. Porquecada bloco é copiado apenas para 2 dispositivos, escrever um determinado bloco requer apenas a gravação de exatamente 2 dispositivos; a leitura pode ser feita a partir de apenas um.
O RAID-0 é definido de forma semelhante, com a faixa dividida em tantos dispositivos quanto possível. Dispositivos 3 × 1 TB rendem 3 TB de espaço utilizável, mas não oferecem nenhuma redundância.
O RAID-10 é construído com base nessas definições. Cada faixa é dividida em exatamente 2 conjuntos RAID-1 e esses conjuntos RAID-1 são gravados em exatamente 2 dispositivos (portanto, no mínimo 4 dispositivos). Um volume RAID-10 btrfs com dispositivos 6 × 1 TB produzirá 3 TB de espaço utilizável com 2 cópias de todos os dados.
Não tenho unidades grandes o suficiente para testar isso no momento, mas minha especulação é simplesmente que, como você tem unidades relativamente grandes, o btrfs simplesmente optou por gravar os dados nas duas primeiras unidades até o momento. Eu esperaria que isso mudasse no futuro, à medida que mais dados fossem gravados nas unidades.
Caso você esteja interessado em meus testes com drives menores:
Instalei o Ubuntu Server 16.04 LTS em uma VM com uma única unidade SATA, instalei o sistema operacional em uma única partição btrfs.
Então adicionei outra unidade SATA, particionei-a, executei btrfs device add /dev/sdb1 /
e balanceei-a enquanto convertia para raid1 combtrfs balance start -dconvert=raid1 -mconvert=raid1 /
Repeti para o dispositivo /dev/sdc1. O resultado para mim é o mesmo - tenho um btrfs abrangendo três unidades. Também localizei um arquivo de 2GiB e ele estava realmente acessível a partir de todos os três discos. Meu btrfs fi sh
mostra o seguinte:
Label: none uuid: cdfe192c-36da-4a3c-bc1a-74137abbb190
Total devices 3 FS bytes used 3.07GiB
devid 1 size 10.00GiB used 5.25GiB path /dev/sda1
devid 2 size 10.00GiB used 5.03GiB path /dev/sdb1
devid 3 size 8.00GiB used 2.28GiB path /dev/sdc1
Como você ligou para mkfs.btrfs? Qual é a sua versão do btrfs-progs?
# btrfs --version
btrfs-progs v4.4
Não consigo reproduzir sua situação. O que acontece se você tentar montar /dev/sdb3?
Se você tiver uma máquina virtual ou um disco sobressalente para brincar com o particionamento, crie 3 partições e tente o seguinte.
Criei uma VM Ubuntu 16.04 e particionei/dev/vda em três partições de 2GiB cada.
# mkfs.btrfs -d raid1 -m raid1 /dev/vda{1..3}
Label: (null)
UUID: 0d6278f7-8830-4a73-a72f-0069cc560aaf
Node size: 16384
Sector size: 4096
Filesystem size: 6.00GiB
Block group profiles:
Data: RAID1 315.12MiB
Metadata: RAID1 315.12MiB
System: RAID1 12.00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Number of devices: 3
Devices:
ID SIZE PATH
1 2.00GiB /dev/vda1
2 2.00GiB /dev/vda2
3 2.00GiB /dev/vda3
# btrfs fi sh
Label: none uuid: 0d6278f7-8830-4a73-a72f-0069cc560aaf
Total devices 3 FS bytes used 112.00KiB
devid 1 size 2.00GiB used 614.25MiB path /dev/vda1
devid 2 size 2.00GiB used 315.12MiB path /dev/vda2
devid 3 size 2.00GiB used 315.12MiB path /dev/vda3
Tente montar /dev/vda1, gravar um arquivo nele e, em seguida, montar /dev/vda2 ou /dev/vda3 e verificar se o arquivo está lá (definitivamente deveria estar).
PS: Eu tentei isso pela primeira vez no Arch com btrfs-progs versão 4.10.2 com os mesmos resultados, mas pensei que provavelmente o Ubuntu 16.04 vem com uma versão mais antiga que pode se comportar de maneira diferente. Acontece que ele vem com a v4.4, mas parece se comportar da mesma forma em relação à criação e espelhamento do sistema de arquivos, etc.
Responder2
O volume agora está usando todos os discos. Acho que a especulação de Rabban deveria estar correta. Como os dois primeiros discos são maiores que o terceiro, "o btrfs simplesmente optou por gravar os dados nas duas primeiras unidades até agora".
root@one:~# btrfs fi sh
Label: none uuid: 3880b9fa-0824-4ffe-8f61-893a104f3567
Total devices 3 FS bytes used 151.00GiB
devid 1 size 2.73TiB used 148.03GiB path /dev/sda2
devid 2 size 2.73TiB used 148.03GiB path /dev/sdc2
devid 3 size 2.59TiB used 8.00GiB path /dev/sdb3
root@one:~# btrfs dev usage /
/dev/sda2, ID: 1
Device size: 2.73TiB
Data,RAID1: 147.00GiB
Metadata,RAID1: 1.00GiB
System,RAID1: 32.00MiB
Unallocated: 2.58TiB
/dev/sdb3, ID: 3
Device size: 2.59TiB
Data,RAID1: 8.00GiB
Unallocated: 2.58TiB
/dev/sdc2, ID: 2
Device size: 2.73TiB
Data,RAID1: 147.00GiB
Metadata,RAID1: 1.00GiB
System,RAID1: 32.00MiB
Unallocated: 2.58TiB