Eu tenho um sistema de arquivos BTRFS existente composto por um disco de 500 GB e acabei de comprar um disco de 2 TB para aumentar a capacidade de armazenamento do meu servidor doméstico e quero adicionar o novo disco ao sistema de arquivos existente. Pelo que li, parece que nenhuma configuração de BTRFS pode lidar com discos de tamanhos diferentes sem desperdiçar a diferença de tamanho entre o disco maior e o menor, mas eu sou novo no BTRFS e posso ter perdido alguma coisa, então existe uma configuração que pode me permitir combinar dois discos em um sistema de arquivos sem desperdiçar espaço?
14
Respostas:
O Btrfs pode usar diferentes níveis de invasão para dados e metadados:
o padrão (mesmo para um disco) é raid1 para os metadados (diretórios etc) e raid0 para os dados.
Se você não alterou isso, provavelmente não terá problemas para adicionar o segundo disco e executar o reequilíbrio. porque apenas os metadados serão copiados para os dois discos (você pode ver o tamanho dos metadados
btrfs filesystem df /
). Lembre-se de que, se um dos seus discos falhar, você perderá dados.porque o disco de 2 TB é muuuito mais alto do que os 500 g, talvez lhe daria melhores chances se você adicionar o novo e remover o antigo (as chances de uma unidade específica falhar são muito menores que as chances de qualquer uma das unidades falhando).
se você planeja ter uma matriz de incursões mais tarde (com unidades de tamanho semelhante), recrie o sistema de arquivos na nova unidade com raid1 para dados e metadados e, em seguida, copie tudo. depois, quando você tiver mais dinheiro, compre o segundo drive de 2 TB.
ps: usar raid1 em uma unidade única significa que os dados serão armazenados em dois locais nessa unidade (para proteger contra corrupção) e reduzirão seu espaço de armazenamento (é realmente uma boa ideia para os metadados).
pss: sério, não fique tentado a não usar o raid1 para metadados. psss: há uma chance muito boa de que o btrfs ganhe a capacidade de alterar os níveis de raide dinamicamente.
fonte
Depende de qual perfil você usa para os blocos de dados do sistema de arquivos Btrfs para vários dispositivos.
Quando você usa RAID0 (o padrão para blocos de dados), cada disco pode ser preenchido apenas com a capacidade do menor disco da matriz.
Quando você usa o perfil "único" para os blocos de dados, cada disco será preenchido até sua capacidade total. por exemplo
mkfs.btrfs -d single /dev/sda /dev/sdb
Eu tenho um servidor de arquivos com um disco de 2 TB e 3 TB. Ele inicializa o Ubuntu 12.10 a partir de uma unidade flash USB. Primeiro, criei o sistema de arquivos Btrfs sem a
-d single
opção:O resultado foi que eu só consegui armazenar cerca de 4 TB (dados de arquivos binários de 3,45 TB).
Observe o
used 1.82TB
da unidade de 3 TB.Então eu usei o comando "balance" para converter os blocos de dados de RAID0 para o perfil "single":
Demorou muito tempo (cerca de 30 horas) para equilibrar os dados de 4 TB. Mas, após a conclusão, eu poderia usar os 5 TB completos (dados binários do arquivo de TB de 4,36).
fonte
Eu usei vários dispositivos com btrfs no Ubuntu, e funcionou muito bem. Lembre-se de que o btrfs não implementa realmente os níveis padrão de RAID. Implementa distribuição e espelhamento opcionais, mas não RAID verdadeiro.
fonte
É possível combinar unidades com tamanhos diferentes em btrfs.
Mas atualmente o btrfs não suporta muito bem o ENOSPC (não há espaço no dispositivo).
Por exemplo, eu instalei 3 unidades em uma matriz RAID0 (listrada). 1x500GB, 1x250GB, 1x160GB.
Você supõe que terá um espaço em disco entre 800 e 900 GB.
Isto é o que
df -h
mostra:/ dev / sdf 848G 615G 234G 73% / media / btrfs
Mas não consigo armazenar mais dados na matriz. (Não há espaço disponível)
btrfs filesystem df /media/btrfs
mostra-me isto:Dados: total = 612,51GB, usado = 612,51GB
Metadados: total = 1,62GB, usado = 990,73MB
Sistema: total = 12,00MB, usado = 48,00KB
Até o reequilíbrio não ajudou.
Em uma lista de discussão, vi esta citação:
tamanho da menor unidade * número de unidades na matriz
(embora eu tenha mais espaço: 612GB em vez de 160GB * 3 = 480GB)
Portanto, no estado atual de desenvolvimento, as chances são de que você não poderá usar todo o espaço disponível, embora o btrfs suporte tamanhos diferentes em uma matriz.
Estou usando o Ubuntu 10.10 com o kernel 2.6.35-22-genérico.
fonte
update: a resposta abaixo foi escrita antes do lançamento do Linux 3.0. O Linux 3.0 inclui o patch quase-round-robin.
Quando você faz o espelhamento ou distribuição de dados, o segundo pedaço de espelho ou faixa precisa ser alocado em outro dispositivo com espaço livre. O BTRFS aloca pedaços para dispositivos de maneira round-robin, o que pode causar perda de espaço se você tiver dispositivos de tamanhos diferentes.
Há um patch quase-round-robin no pipeline para melhorar isso. Obviamente, ainda é impossível emparelhar todos os pedaços em dispositivos diferentes se você tiver um disco de 500 GB e 2 TB. O patch destina-se mais a situações como 1 x 1 TB + 2 x 500 GB, em que cada disco pequeno deve preferir espelhar / distribuir o disco grande em vez do outro disco pequeno.
Na sua situação, eu usaria apenas o modo "único" para seus dados (
mkfs.btrfs -d single
). Os pedaços não são pareados nesse modo, então acho que não haveria problema com dispositivos de tamanhos diferentes. Eu ainda não testei.fonte
Esse problema se aplica apenas às configurações do btrfs-raid1, na página Gotchas :
fonte