mdadm --zero-superblock em discos com outras partições neles

5

Eu tenho três discos que costumavam armazenar um array MD RAID5. Eu já removi (ou assim eu pensei) este array e criei partions para btrfs e swap de espaço. Ao reinicializar a máquina, o MD ainda vincula os dispositivos usados para manter a matriz antiga, fazendo com que o novo sistema de arquivos falhe em montar.

Foi-me sugerido que os superblocos antigos dos arrays de ataque poderiam ser deixados para trás fazendo com que o MD pensasse que é um array real e, assim, ligando os discos. A solução sugerida era usar mdadm --zero-superblock para limpar o superbloco nos discos afetados. No entanto, eu realmente não sei o que isso faz com o disco. Como esse disco contém partições, não quero começar a zerar partes dele cegamente.

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 questão essencialmente pede a mesma coisa, mas não há uma resposta clara sobre se fazer mdadm --zero-superblock em um dispositivo reparticionado é, na verdade, supostamente seguro: partição de sombreamento / ocultação de superblocos mdadm

    
por Simon Lindgren 30.08.2013 / 21:20

3 respostas

4

link

The superblock is 4K long and is written into a 64K aligned block that starts at least 64K and less than 128K from the end of the device (i.e. to get the address of the superblock round the size of the device down to a multiple of 64K and then subtract 64K). The available size of each device is the amount of space before the super block, so between 64K and 128K is lost when a device in incorporated into an MD array.

Então, já é tarde demais e pode ser inseguro usar --zero-superblock , porque não sabemos se há dados ou não - você deve redimensionar / reduzir sua partição atual para -128K do final da partição x-RAID, então, limpe essa parte e aumente a partição de volta.

Outra opção 1: gravar arquivos grandes para preencher todo o disco, ele sobrescreverá superquadros RAID e não será reconhecido pelo mdadm.

Outra opção 2: semelhante a 1: link

    
por 31.08.2013 / 01:35
2

Foi assim que eu percebi isso (pode ser bem específico para o meu caso, mas vou tentar mantê-lo em geral onde eu puder).

(Quando eu falo sobre dispositivos, o que quero dizer são os dispositivos dos quais o volume RAID é composto, e não o próprio RAID)

Eu usei mdadm -E $DEVICE para descobrir qual formato de metadados o array estava usando. Fui então a [0] para encontrar algumas informações sobre o formato do superbloco. No meu caso, foi a versão 0.90.

Este formato tem o superbloco armazenado no final do dispositivo. É aí que entra minha situação. Meu antigo array foi feito diretamente nas unidades, sem particionamento. Por causa disso, eu sabia que o superbloco deveria estar no final do dispositivo. Meu novo particionamento incluiu uma partição swap no final. Portanto, não havia muitos dados a perder onde o superbloco estava localizado.

Eu fiz algumas leituras, a conclusão a que cheguei foi que mdadm --zero-superblock apenas zera o próprio superbloco e, portanto, deve ser seguro no meu caso. Eu 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 o novo particionamento / sistema de arquivos, ele já deveria 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 sobrescrito em um ou muitos dos dispositivos, mas não em todos. A página man diz que -f é necessário para zerar o superbloco se ele for inválido, mas tenha isso em mente.

0: link

    
por 31.08.2013 / 01:29
1

wipefs --all /dev/sd[4ppropr14t3][123] (claro, configure o glob para suas unidades / partições!)

    
por 03.03.2016 / 13:24