Como usar o BTRFS Scrub?

Como usar o BTRFS Scrub?
O sistema de arquivos BTRFS é um sistema de arquivos com vários dispositivos que possui suporte interno para RAID. Em um sistema de arquivos BTRFS de vários dispositivos ou RAID, os blocos de dados/metadados podem ser armazenados em um ou mais dispositivos de armazenamento. A ferramenta BTRFS Scrub lerá todos os blocos de dados/metadados de todos os dispositivos de armazenamento adicionados a um sistema de arquivos BTRFS ou RAID e encontrará todos os blocos de dados/metadados corrompidos. Depois que os blocos de dados/metadados corrompidos forem encontrados, a ferramenta BTRFS Scrub reparará automaticamente os blocos de dados/metadados corrompidos, se possível.

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.