Em um sistema de arquivos BTRFS de vários dispositivos ou RAID BTRFS, dependendo da configuração do sistema de arquivos, pode haver várias cópias dos blocos de dados/metadados armazenados em diferentes locais dos dispositivos de armazenamento adicionados ao BTRFS FileSystem. Quando a ferramenta BTRFS Scrub encontra um bloco de dados/metadados corrompido, ele pesquisa todos os dispositivos de armazenamento adicionados ao sistema de arquivos BTRFS para cópias duplicadas desse bloco de dados/metadados. Depois que uma cópia duplicada desse bloco de dados/metadados é encontrada, o bloco de dados/metadados corrompido é substituído com o bloco de dados/metadados correto. É assim que o BTRFS Scrub Tool repara blocos de dados/metadados corrompidos em um sistema de arquivos BTRFS de vários dispositivos ou BTRFS RAID.
Neste artigo, vou mostrar como usar a ferramenta BTRFS Scrub para encontrar e reparar blocos de dados/metadados corrompidos em um sistema de arquivos BTRFS de vários dispositivos ou RAID BTRFS. Então vamos começar.
Abreviações
ATAQUE - Variedade redundante de discos baratos/independentes
GB - Gigabyte
Pré -requisitos
Para seguir este artigo, você precisa ter um sistema de arquivos BTRFS de vários dispositivos ou um RAID BTRFS.
Eu criei um ataque BTRFS em RAID-1 configuração (montada no /dados diretório) usando 4 dispositivos de armazenamento sdb, sdc, sdd, e SDE, Como você pode ver na captura de tela abaixo. Eu estarei usando este ataque BTRFS para a demonstração do BTRFS Scrub neste artigo.
$ sudo btrfs arquivos sistema /dados
Se você precisar de assistência na instalação do sistema de arquivos BTRFS no Ubuntu, verifique meu artigo instalar e use o BTRFS no Ubuntu 20.04 LTS.
Se você precisar de assistência na instalação do sistema de arquivos BTRFS no Fedora, verifique o artigo Instale e use o BTRFS no Fedora 33.
Se você precisar de assistência na criação de um ataque BTRFS, verifique meu artigo Como configurar o ataque BTRFS.
Gerando arquivos fictícios no sistema de arquivos BTRFS
Para mostrar como funciona a ferramenta BTRFS Scrub, 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 script de shell Genfiles.sh no /usr/local/bin/ diretório da seguinte maneira:
$ 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 será 256 MB no 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:
s
O Genfiles.sh O script de shell agora deve estar acessível como quaisquer outros comandos.
$ que genfiles.sh
Vamos gerar alguns arquivos aleatórios no 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
Eu gerei cerca de 13 GB de arquivos aleatórios no ataque BTRFS montado no /dados diretório, como você pode ver na captura de tela abaixo.
$ sudo du -sh /dados
Trabalhando com a ferramenta BTRFS Scrub
Nesta seção, vou mostrar como usar a ferramenta BTRFS Scrub. Vamos começar.
Você pode iniciar o processo de limpeza no sistema de arquivos BTRFS montado no /dados Diretório com o seguinte comando:
$ sudo btrfs Scrub Start /Data
Um processo de limpeza BTRFS deve ser iniciado no sistema de arquivos BTRFS montado no /dados diretório.
Você pode ver o status do processo de limpeza BTRFS em execução no sistema de arquivos BTRFS montado no /dados diretório da seguinte maneira:
$ sudo btrfs Scrub Status /dados
Como você pode ver, o processo de limpeza BTRFS ainda está correndo.
Limpando um sistema de arquivos BTRFS ou RAID BTRFS que possui muitos arquivos levará muito tempo para concluir.
Uma vez concluído o processo de limpeza do BTRFS, o status deve ser alterado para finalizado, Como você pode ver na captura de tela abaixo.
$ sudo btrfs Scrub Status /dados
Você também pode ver o status BTRFS Scrub para cada um dos dispositivos de armazenamento adicionados ao sistema de arquivos BTRFS (montado no /dados diretório) separadamente da seguinte forma:
$ sudo btrfs Scrub Status -d /dados
Eu lhe disse que o processo BTRFS Scrub leva muito tempo para ser concluído em um grande sistema de arquivos BTRFS. Uma grande vantagem da ferramenta BTRFS Scrub é que seu processo pode ser pausado e retomado a qualquer momento.
Vamos ver como pausar e retomar um processo de limpeza BTRFS.
Primeiro, inicie um novo processo de limpeza BTRFS no sistema de arquivos BTRFS montado no diretório /dados da seguinte maneira:
$ sudo btrfs Scrub Start /Data
Para cancelar ou pausar o processo de lavagem do BTRFS que está atualmente em execução no sistema de arquivos BTRFS montado no /dados Diretório, execute o seguinte comando:
$ sudo btrfs Scrub Cancelar /dados
O processo de limpeza BTRFS em execução deve ser cancelado ou pausado.
Como você pode ver, o status BTRFS Scrub é abortado. Então, o processo de limpeza do BTRFS não está mais funcionando.
$ sudo btrfs Scrub Status /dados
Para retomar o processo BTRFS Scrub que você cancelou ou fez uma pausa, execute o seguinte comando:
$ sudo btrfs Scrub Currume /Data
O processo de limpeza do BTRFS deve ser retomado.
Como você pode ver, o status BTRFS Scrub é agora correndo. Então, o processo de limpeza do BTRFS é retomado.
$ sudo btrfs Scrub Status /dados
Após a conclusão do processo de limpeza do BTRFS, o status de limpe finalizado.
$ sudo btrfs Scrub Status /dados
Conclusão
Neste artigo, mostrei como trabalhar com a ferramenta BTRFS Scrub para encontrar e corrigir blocos de dados/metadados corrompidos de um sistema de arquivos de vários dispositivos BTRFS ou RAID. Eu mostrei como cancelar/pausar e retomar um processo de limpe.