Tudo bem, resolvi isso com a ajuda de este link do Trello . Caso alguém mais queira fazer isso, aqui está o procedimento.
Procedimento
De um array RAID1 de dois discos, um /dev/sda
com defeito e outro /dev/sdc
known-good:
- Desative a montagem automática desta matriz em
/etc/fstab
, reboot . Basicamente, queremos que o btrfs esqueça que esse array existe, já que há um bug em que ele ainda tentará usar uma das unidades se ela estiver desconectada. -
Agora que sua matriz está desmontada, execute:
echo 1 | sudo tee /sys/block/sda/device/delete
substituindo
sda
pelo nome do dispositivo com defeito. Isso faz com que o disco desacelere (você deve verificar isso no dmesg) e ficar inacessível ao kernel.Alternativamente : apenas retire a unidade do computador antes de inicializar! Eu escolhi não optar por este método, pois o acima funciona bem para mim.
- Monte sua matriz, com o modo
-o degraded
. - Inicie uma operação de rebalanceamento com
sudo btrfs balance start -f -mconvert=single -dconvert=single /mountpoint
. Isso reorganizará as extensões na unidade válida, convertendo-as emsingle
(não-RAID). Isso levará quase um dia para ser concluído, dependendo da velocidade da sua unidade e do tamanho da sua matriz. (a minha tinha ~ 700 GiB e rebalanceada a uma taxa de 1 1GiB por minuto). essa operação pode ser pausada e manterá a matriz on-line enquanto ocorre. - Quando isso estiver concluído, você poderá emitir
sudo btrfs device remove missing /mountpoint
para remover o dispositivo com falha "ausente". - Inicie um segundo rebalanceamento com
sudo btrfs balance start -mconvert=dup /mountpoint
para restaurar a redundância de metadados. Isso leva alguns minutos no meu sistema. - Você está feito! Seu array agora está no modo
single
, com toda a redundância removida. - Pegue o seu carro defeituoso do lado de fora e bata-o com um martelo.
Solução de problemas
-
Ajuda, o btrfs tentou gravar no meu disco defeituoso, errou e forçou-o a ler somente!
- Você seguiu a etapa 1 e reinicializou antes de continuar? É provável que o btrfs ainda ache que a unidade que você girou está presente. A reinicialização fará com que o btrfs esqueça os erros e permitirá que você continue.