
Eu tenho três discos que costumavam conter uma matriz MD RAID5. Desde então, removi (ou assim pensei) esse array e criei partições para btrfs e espaço de troca. Ao reiniciar a máquina, o MD ainda vincula os dispositivos que costumavam conter o array antigo, fazendo com que o novo sistema de arquivos não fosse montado.
Foi-me sugerido que os antigos superblocos dos arrays raid poderiam ser deixados para trás, fazendo com que o MD pensasse que era um array real e, portanto, vinculava os discos. A solução sugerida foi usar mdadm --zero-superblock para limpar o superbloco nos discos afetados. No entanto, não sei realmente o que isso faz com o disco. Como este disco contém partições, eu realmente não quero começar a zerar partes dele às cegas.
Então, qual procedimento devo seguir para limpar com segurança os superblocos MD sem danificar as outras partições e sistemas de arquivos nas unidades?
Esta pergunta essencialmente pergunta a mesma coisa, mas não há uma resposta clara sobre se fazer mdadm --zero-superblock em um dispositivo reparticionado é realmente seguro:mdadm superbloco ocultando / sombreando partição
Responder1
https://raid.wiki.kernel.org/index.php/RAID_superblock_formats
O superbloco tem 4K de comprimento e é escrito em um bloco alinhado de 64K que começa a pelo menos 64K e menos de 128K do final do dispositivo (ou seja, para obter o endereço do superbloco arredondado do tamanho do dispositivo para um múltiplo de 64K e depois subtraia 64K). O tamanho disponível de cada dispositivo é a quantidade de espaço antes do superbloco, portanto, entre 64K e 128K são perdidos quando um dispositivo é incorporado a um array MD.
Então, já é tarde demaise pode ser inseguropara usar --zero-superblock
, porque não sabemos se existem dados ou não - você deve redimensionar/diminuir sua partição atual até -128K
o final da partição x-RAID e, em seguida, limpar essa parte e aumentar a partição novamente.
Outra opção 1: gravar arquivos grandes para preencher todo o disco, isso substituirá os superblocos RAID e não será reconhecido pelo mdadm.
Outra opção 2: semelhante a 1:https://unix.stackexchange.com/questions/44234/clear-unused-space-with-zeros-ext3-ext4
Responder2
wipefs --all /dev/sd[4ppropr14t3][123]
(é claro que configure o globo para suas unidades/partições!)
Responder3
Foi assim que descobri (pode ser bem específico para o meu caso, mas tentarei mantê-lo geral sempre que puder).
(Quando falo sobre dispositivos, quero dizer os dispositivos dos quais o volume raid é composto, não o array raid em si)
Eu costumava mdadm -E $DEVICE
descobrir qual formato de metadados o array estava usando. Eu então fui pararaid.wiki.kernel.orgpara encontrar algumas informações sobre o formato superbloco. No meu caso, esta era a versão 0.90.
Este formato possui o superbloco armazenado no final do dispositivo. É aqui que entra a minha situação. Meu array antigo foi feito diretamente nas unidades, sem particionamento. Por causa disso, eu sabia que o superbloco deveria estar bem no final do aparelho. Meu novo particionamento incluiu uma partição swap no final. Portanto, não havia muitos dados a perder onde o superbloco estava localizado.
Fiz algumas leituras, a conclusão que cheguei foi que mdadm --zero-superblock
apenas zera o próprio superbloco e portanto deve ser seguro no meu caso. Fui em frente e removi os superblocos em todos os três dispositivos:
mdadm --stop $ONE_OF_THE_DEVICES
Repita esta linha conforme necessário
mdadm --zero-superblock $DEVICE
Alguns comentários/especulações adicionais:
Geralmente, se o espaço for necessário para os novos particionamentos/sistemas de arquivos, ele já deverá ter sido sobrescrito. Assim, se o superbloco ainda estiver lá, zerá-lo não deve prejudicar o particionamento/sistema de arquivos. No entanto, não tenho certeza de como o MD lida com o caso em que o superbloco já foi substituído em um ou mais dispositivos, mas não em todos. A página de manual diz que -f é necessário para zerar o superblock se for inválido, mas tenha isso em mente.