Como usar o equilíbrio btrfs?

Como usar o equilíbrio btrfs?
O sistema de arquivos BTRFS possui suporte interno de vários dispositivos, para que você possa criar diferentes níveis de RAID usando-o.

Depois de criar um ataque BTRFS, você pode adicionar mais dispositivos de armazenamento ao ataque para expandir o ataque. Mas, depois de adicionar mais dispositivos de armazenamento ao ataque, os BTRFs não espalharão os dados/metadados/dados 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 ataque, e pode não ser capaz de preencher os novos dispositivos de armazenamento com os dados redundantes necessários. Portanto, a matriz de ataque pode não sobreviver ao número desejado de falhas de acionamento.

Para resolver esses problemas, o sistema de arquivos BTRFS fornece uma ferramenta de equilíbrio interno. O utilitário BTRFS Balance espalhará os dados/metadados/dados do sistema dos dispositivos de armazenamento existentes do ataque aos dispositivos de armazenamento recém-adicionados.

Neste artigo, vou mostrar como usar o utilitário de equilíbrio btrfs 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 - Variedade redundante de discos baratos/independentes
Mb - Megabyte
GB - Gigabyte

Pré -requisitos

Para seguir este artigo, você precisa ter um ataque BTRFS em funcionamento ou uma configuração de vários dispositivos.

Eu criei um ataque 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 ataque.

Sobre 18.75 GB fora de 20 GB ainda não é alocado4 de cada um dos dispositivos de armazenamento do ataque.

$ sudo btrfs arquivos sistema /dados

Escrevendo um script para gerar arquivos aleatórios

Para mostrar como funciona o utilitário de equilíbrio do BTRFS, precisamos gerar alguns arquivos aleatórios para preencher o sistema de arquivos BTRFS. Vamos criar um script de shell que faça exatamente isso.

Crie um novo shell script genfiles.SH no diretório/usr/local/bin/da seguinte forma:

$ sudo nano/usr/local/bin/genfiles.sh

Digite as seguintes linhas de códigos no Genfiles.sh script de shell.

#!/BIN/BASH
enquanto é verdade
fazer
Nome do arquivo = $ (uuidgen)
eco "[criando] $ filename"
dd if =/dev/aleatório de = $ filename bs = 1m contagem = 256 status = progresso
eco "[criado] $ filename"
feito

Depois de terminar, pressione + X seguido pela Y e Para salvar o Genfiles.sh script de shell.

O Genfiles.sh script de shell executa um infinito enquanto laço.

enquanto é verdade
fazer
# 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.

Adicionar permissão de execução ao Genfiles.sh script da shell da seguinte forma:

$ sudo chmod +x/usr/local/bin/genfiles.sh

O Genfiles.sh O script de shell agora deve estar acessível como quaisquer outros comandos.

$ que genfiles.sh

Gerando arquivos aleatórios no sistema de arquivos BTRFS

Queremos gerar arquivos aleatórios no ataque BTRFS. Digamos que o ataque BTRFS é montado no /dados diretório.

Navegue até o /dados Diretório onde o ataque BTRFS é montado da seguinte forma:

$ cd /dados

Como você pode ver, não há arquivos disponíveis no meu ataque BTRFS no momento.

$ ls -lh

Para gerar alguns arquivos aleatórios no diretório de trabalho atual (/dados diretório neste caso), execute o Genfiles.sh script da shell da seguinte forma:

$ sudo genfiles.sh

O Genfiles.sh O script shell deve começar a gerar arquivos aleatórios no /dados diretório.

O Genfiles.sh O script está gerando arquivos aleatórios. Deixe o script funcionar por alguns minutos, para que preencha cerca de 2-3 GB de espaço em disco do BTRFS RAID.

Quando você quer parar o Genfiles.sh script de shell, pressione + C.

Como você pode ver, alguns arquivos aleatórios são gerados no ataque BTRFS.

$ ls -lh


Como você pode ver, o RAID BTRFS alocou 2 GB de cada um dos dispositivos de armazenamento adicionados ao RAID. Anteriormente, o RAID BTRFS alocou 1 GB de cada um dos dispositivos de armazenamento adicionados ao RAID.

O espaço não alocado no disco foi reduzido de 18.75 GB para 17.75 GB em todos os dispositivos de armazenamento do ataque.

$ sudo btrfs arquivos sistema /dados

Adicionando outro dispositivo de armazenamento ao ataque BTRFS

Para mostrar como equilibrar um ataque 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 para o meu computador, que eu quero adicionar ao ataque BTRFS montado no /dados diretório. Vamos ver como fazer isso.

$ sudo lsblk -e7

Navegue para um diretório diferente (i.e., LAR diretório) do /dados diretório da seguinte maneira:

$ CD

Para adicionar o dispositivo de armazenamento sdf para o ataque BTRFS montado no /dados Diretório, execute o seguinte comando:

$ sudo btrfs dispositivo add /dev /sdf /dados

Como você pode ver, o dispositivo de armazenamento sdf é adicionado ao ataque BTRFS. O tamanho do ataque aumentou de 80 GB para 100 GB.

$ sudo btrfs arquivos sistema /dados

Equilibrando o ataque BTRFS

Como você pode ver, o dispositivo de armazenamento recém -adicionado (sdf) do ataque (montado no /dados diretório) tem 20 GB não alocado e os outros dispositivos de armazenamento (sdb, sdc, sdd, SDE, etc.) ter 17.75 GB não alocado.

$ sudo btrfs arquivos sistema /dados

Os dados1, Metadados2, e dados do sistema3 estão disponíveis apenas nos dispositivos de armazenamento existentes do RAID, não o dispositivo de armazenamento recém -adicionado.

Para espalhar os dados, os metadados e os 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 /dados

Pode demorar um pouco para espalhar os dados, metadados e dados do sistema em todos os dispositivos de armazenamento do ataque, contém muitos dados.

Uma vez que os dispositivos de armazenamento do ataque estiverem adequadamente equilibrados, você deve ver a seguinte mensagem.

Como você pode ver, após a conclusão da operação de equilíbrio, o dispositivo de armazenamento recém -adicionado possui uma quantidade igual de espaço em disco não alocado, pois 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 ataque é alocada para os dados, metadados e dados do sistema do dispositivo de armazenamento recém-adicionado (sdf) do ataque.

Conclusão

Neste artigo, discuti o objetivo do utilitário de equilíbrio do BTRFS, bem como como equilibrar um sistema de arquivos BTRFS RAID ou de vários dispositivos depois de adicionar novos dispositivos de armazenamento ao sistema de arquivos RAID ou de vários dispositivos.