A história de um HD defeituoso + BTRFS RAID1, um final feliz

Motivação do post

Decidi deixar esse relato + procedimentos dessa vez do que aconteceu essa semana, para qualquer um que venha a ter um setup similar ou vai fazer um setup similar.

A morte do HDD

No início desta semana eu comecei a experienciar boots lentos e lentidão em programas especificamente ligados a minha segunda partição onde ficam meus projetos e dados pessoais, um RAID1 no momento de 2 HDDs.

Não foi a primeira vez que esta partição me deu problemas, já perdi 2 HDDs nos últimos 6 anos, desde o fim de 2020 o terceiro HDD “origina” estava dando sinais de falha. Como os anteriores, viveram ~1 ano apesar dos sinais.

No domingo fui observar e o HDD defeituoso pulou de seu constantes 20 setores defeituosos para 70 setores defeituosos, decidi fazer um scrub da partição:

$ sudo btrfs scrub start /partição

Na manhã da segunda feira, já estava em 70% o processo, permaneceu nessa durante todo o dia, no fim da noite veio a certeza de que o HDD já era:

Retornando a normalidade

Dei início a recuperação temporária da partição, desativei a montagem automática da partição, desliguei, desconectei o HD defeituoso e reiniciei para fazer um último backup e reverter a partição para single mode, pelo menos enquanto não chegam 2 HDDs novos que encomendei.

# montei a partição em modo degradado e apenas leitura
$ sudo mount -o degraded,ro /dev/sdx /partição

# fiz o backup
$ sudo btrfs su sn -r /partição /partição/@partição_backup
$ sudo btrfs send /partição/@partição_backup | pv -trab | sudo btrfs receive /partição3/backups/@partição_backup
# ....
$ sudo umount /partição

# rebalanceei a partição e ao fim do rebalanceamento, 
# removi a referência do dispositivo faltante
$ sudo mount -o degraded /dev/sdx /partição
$ sudo btrfs balance start -f -mconvert=single -dconvert=single /partição
# ....
$ sudo btrfs device remove missing /partição
$ sudo btrfs balance start -f -mconvert=dup /partição
# ....

E pronto, reativei a montagem automática da partição… O rebalanceamento pode demorar várias horas, para nossa felicidade é possível pausar e até mesmo utilizar a partição enquanto o processo segue.

Graças a esse RAID1 em BTRFS, já vão 6 anos sem grandes problemas a despeito de tantos HDDs defeituosos, mais importante, nenhum arquivo corrompido ou perdido. Agora é só esperar os HDDs novos para voltar a ter a partição configurada em RAID1C3 agora.

7 curtidas

Instalando e testando os novos HDDs

Ontem os HDDs chegaram, no caso do meu gabinete, é peculiarmente complicado instalar HDDs:

Eu sempre faço uma bateria de testes com HDDs novos antes de particionar, para ter certeza que o HDD está ok e pode ser usado, costumo usar badblocks para isso:

# escreve e valida 4 padrões (0xaa, 0x55,  0xff, 0x00) 
# no dispositivo, em blocos de 4096 bytes:

$ sudo badblocks -wvsb 4096 /dev/sdX

É um exercício de paciência mas vale a pena, é um bom teste de stress e um bom indicativo da longevidade de um HDD para uso doméstico.

Integrando os HDDs ao sistema

o meu RAID de dados é o único encriptado por questões de sigilo de projetos privados, no caso de a máquina ir para a manutenção por algum problema que eu não possa resolver eu mesmo em casa. Seguimos para a encriptação:

$ sudo cryptsetup -y -v luksFormat /dev/sdX

# adicionando uma chave de pendrive para 
# liberar os HDs via inserção ou retirada

$ sudo cryptsetup -v luksAddKey /dev/sdX /pen/keyfile 

#Adicionando os dispositivos ao RAID e rebalanceando

$ sudo cryptsetup --key-file /pen/keyfile luksOpen /dev/sdX cryptHDDX
$ sudo btrfs device add -f /dev/mapper/cryptHDDX /partição
$ sudo btrfs balance start -f -mconvert=raid1 -dconvert=raid1 /partição

Como vocês podem ver, decidi optar por RAID1 em vez de RAID1C3. Segue uma lista de prós e contras do modo RAID1 do BTRFS com 3 dispositivos:

prós contras
Funciona normalmente caso um dispositivo seja removido (sem necessidade de montar em modo degradado). Apenas resiste a perda de 1 dispositivo, se 2 dispositivos se forem haverá perda de dados.
você terá 3/2 do espaço total. 3X1TB = 1.5TB Performance menor em alguns casos peculiares de leitura distribuida entre PIDs, mas ainda sim superior ao de modo single.

Considerando que eu já faço backups, disponibilidade com um extra de espaço se torna uma característica mais interessante mesmo existindo a possibilidade de 2 dispositivos falharem ao mesmo tempo.

2 curtidas