Depois de criar um RAID Btrfs, você pode adicionar mais dispositivos de armazenamento ao RAID para expandir o RAID. Mas, depois de adicionar mais dispositivos de armazenamento ao RAID, o Btrfs não distribuirá os dados / metadados / dados do sistema existentes para os novos dispositivos de armazenamento automaticamente. Portanto, você pode não obter a taxa de transferência desejada (velocidade de leitura / gravação) do RAID e pode não ser capaz de preencher os novos dispositivos de armazenamento com os dados redundantes necessários. Portanto, a matriz RAID pode não sobreviver ao número desejado de falhas de unidade.
Para resolver esses problemas, o sistema de arquivos Btrfs fornece uma ferramenta de balanceamento embutida. O utilitário Btrfs balance irá espalhar os dados / metadados / dados do sistema dos dispositivos de armazenamento existentes do RAID para os dispositivos de armazenamento recém-adicionados.
Neste artigo, vou mostrar como usar o utilitário Btrfs balance para espalhar os dados / metadados / dados do sistema dos dispositivos de armazenamento existentes do RAID para os dispositivos de armazenamento recém-adicionados. Então vamos começar!
Abreviações
ATAQUE - Matriz redundante de discos baratos / independentes
MB - Megabyte
GB - Gigabyte
Pré-requisitos
Para seguir este artigo, você precisa ter um Btrfs RAID ou configuração de vários dispositivos funcionando.
Eu criei um RAID Btrfs em RAID-0 configuração usando 4 dispositivos de armazenamento sdb, sdc, sdd, e sde.
Como você pode ver, o sistema de arquivos Btrfs alocado 1 GB de espaço em disco para dados1 256 MB de espaço em disco para metadata2, e 4 MB de espaço em disco para system-data3 de cada um dos dispositivos de armazenamento no RAID.
Cerca de 18.75 GB fora de 20 GB ainda não está alocado4 de cada um dos dispositivos de armazenamento do RAID.
Uso / dados do sistema de arquivos $ sudo btrfs
Escrevendo um script para gerar arquivos aleatórios
Para mostrar como o utilitário de equilíbrio do Btrfs funciona, precisamos gerar alguns arquivos aleatórios para preencher o sistema de arquivos Btrfs. Vamos criar um script de shell que faz exatamente isso.
Crie um novo genfiles de script de shell.sh no diretório / usr / local / bin / da seguinte maneira:
$ sudo nano / usr / local / bin / genfiles.sh
Digite as seguintes linhas de códigos no genfiles.sh script de shell.
#!/ bin / bashenquanto verdadeiro
Faz
FILENAME = $ (uuidgen)
echo "[Criando] $ FILENAME"
dd if = / dev / random of = $ FILENAME bs = 1M contagem = 256 status = progresso
echo "[Criado] $ FILENAME"
feito
Assim que terminar, pressione
O genfiles.sh script de shell executa um infinito enquanto ciclo.
enquanto verdadeiroFaz
# outros códigos
feito
A linha a seguir gera um UUID usando o uuidgen comando e armazena o UUID no NOME DO ARQUIVO variável.
A linha a seguir imprime uma mensagem no console antes do arquivo NOME DO ARQUIVO é gerado.
A linha a seguir gera um novo arquivo aleatório NOME DO ARQUIVO usando o dd comando. O arquivo terá 256 MB de tamanho.
A linha a seguir imprime uma mensagem no console após o arquivo NOME DO ARQUIVO é gerado.
Adicione permissão de execução ao genfiles.sh script de shell da seguinte maneira:
$ sudo chmod + x / usr / local / bin / genfiles.sh
O genfiles.sh o script de shell agora deve estar acessível como qualquer outro comando.
$ which genfiles.sh
Gerando arquivos aleatórios no sistema de arquivos Btrfs
Queremos gerar arquivos aleatórios no RAID Btrfs. Digamos que o Btrfs RAID seja montado no /dados diretório.
Navegue até o /dados diretório onde o Btrfs RAID é montado da seguinte maneira:
$ cd / data
Como você pode ver, não há arquivos disponíveis no meu RAID Btrfs no momento.
$ ls -lh
Para gerar alguns arquivos aleatórios no diretório de trabalho atual (/dados neste caso), execute o genfiles.sh script de shell da seguinte maneira:
$ sudo genfiles.sh
O genfiles.sh o script de shell deve começar a gerar arquivos aleatórios no /dados diretório.
O genfiles.sh script está gerando arquivos aleatórios. Deixe o script ser executado por alguns minutos, de modo que ele preencha cerca de 2-3 GB de espaço em disco do RAID Btrfs.
Quando você quiser parar o genfiles.sh script de shell, pressione
Como você pode ver, alguns arquivos aleatórios são gerados no Btrfs RAID.
$ ls -lh
Como você pode ver, o Btrfs RAID alocou 2 GB de cada um dos dispositivos de armazenamento adicionados ao RAID. Anteriormente, o RAID Btrfs alocava 1 GB de cada um dos dispositivos de armazenamento adicionados ao RAID.
O espaço em disco não alocado foi reduzido de 18.75 GB para 17.75 GB em todos os dispositivos de armazenamento do RAID.
Uso / dados do sistema de arquivos $ sudo btrfs
Adicionando outro dispositivo de armazenamento ao RAID Btrfs
Para mostrar como equilibrar um RAID Btrfs após adicionar um novo dispositivo de armazenamento, você deve adicionar um novo dispositivo de armazenamento a ele.
Eu adicionei um novo HDD sdf ao meu computador, que desejo adicionar ao RAID Btrfs montado no /dados diretório. Vamos ver como fazer.
$ sudo lsblk -e7
Navegue para um diretório diferente (i.e., CASA diretório) do /dados diretório da seguinte forma:
$ cd
Para adicionar o dispositivo de armazenamento sdf para o RAID Btrfs montado no /dados diretório, execute o seguinte comando:
$ sudo btrfs dispositivo add / dev / sdf / data
Como você pode ver, o dispositivo de armazenamento sdf é adicionado ao RAID Btrfs. O tamanho do RAID aumentou de 80 GB para 100 GB.
Uso / dados do sistema de arquivos $ sudo btrfs
Equilibrando o RAID Btrfs
Como você pode ver, o dispositivo de armazenamento recém-adicionado (sdf) do RAID (montado no /dados diretório) tem 20 GB não alocados, e os outros dispositivos de armazenamento (sdb, sdc, sdd, sde, etc.) ter 17.75 GB não alocado.
Uso / dados do sistema de arquivos $ sudo btrfs
Os dados1, metadados2, e dados do sistema3 estão disponíveis apenas nos dispositivos de armazenamento existentes do RAID, não no dispositivo de armazenamento recém-adicionado.
Para espalhar os dados, metadados e dados do sistema em todos os dispositivos de armazenamento do RAID (incluindo o dispositivo de armazenamento recém-adicionado) montado no /dados diretório, execute o seguinte comando:
$ sudo btrfs balance start --full-balance / data
Pode demorar um pouco para espalhar os dados, metadados e dados do sistema em todos os dispositivos de armazenamento do RAID se contiver muitos dados.
Assim que os dispositivos de armazenamento do RAID estiverem devidamente balanceados, você deverá ver a seguinte mensagem.
Como você pode ver, após a operação de equilíbrio ser concluída, o dispositivo de armazenamento recém-adicionado tem uma quantidade igual de espaço em disco não alocado que os outros dispositivos de armazenamento do RAID.
Após a operação de equilíbrio, uma quantidade igual de espaço em disco como os outros dispositivos de armazenamento do RAID é alocada para os dados, metadados e dados do sistema do dispositivo de armazenamento recém-adicionado (sdf) do RAID.
Conclusão
Neste artigo, discuti o propósito do utilitário de equilíbrio do Btrfs, bem como como equilibrar um RAID Btrfs ou sistema de arquivos com vários dispositivos após adicionar novos dispositivos de armazenamento ao RAID ou sistema de arquivos com vários dispositivos.