Não encontrei nenhuma maneira de remover um mdraid de um servidor com um comando.
Eu posso pará-lo atravésmdadm --stop /dev/md0
Mas o superbloco ainda está nos aparelhos.
mdadm --zero-superblock DEVICE
precisa de todos os dispositivos (como /dev/sdb1)
Eu sei que posso fazer mdadm --detail /dev/md0
e então vejo os dispositivos.
Eu poderia escrever um script frágil para buscar as strings /dev/sd... da saída de mdadm --detail /dev/md0
, mas gostaria de evitar isso.
Existe uma linha única para remover o superbloco de todos os dispositivos de um mdraid?
Gostaria de evitar analisar a saída de mdadm --detail
, pois parece frágil.
Se você conhece os dispositivos componentes da matriz, pode simplesmente emitir algo como
mdadm --zero-superblock /dev/sd[abcd]
para remover o superbloco de vários dispositivos com um único comando.
Observe que
mdadm
verifica o superbloco antes de zerar qualquer coisa, portanto, especificarsd*
no comando acima deve tocar apenas nos discos componentes, sem gravar nada nos demais. No entanto, sugiro fortemente que você não faça isso: quaisquer problemas no roteamento de detecção de superbloco, ou no uso--force
, substituirão dados válidos em discos não componentes (causando perda de dados). Na página de manual :Pelo motivo acima, se você não conhece os dispositivos componentes do array, sugiro listá-los via
blkid -t TYPE="linux_raid_member" -o device
e depois zerar os discos específicos com
mdadm --zero-superblock
. Isso pode ser programado com um comando bash de linha única:Como sempre, verifique três vezes esses comandos para evitar perda de dados.
EDIT: para descobrir os dispositivos componentes da matriz sem recorrer à análise da
mdadm --detail
saída, você pode usarlsblk
. Por exemplo, em uma matriz de teste criada por meio deloop
dispositivos:Não existe um único comando (
mdadm …
) que irá remover o superbloco de todos os dispositivos de um mdraid. No entanto, é bastante simples escrever um script que se torne uma linha única:Exemplo de uso, assumindo que o script é chamado
mdzero
e está no PATH, etc. e o dispositivo RAID indesejado é/dev/md1
:A menos que você insira um "Y" (maiúsculo) em resposta à pergunta "Parar e apagar?" pergunta - ou o comando está sendo executado de forma não interativa - a ferramenta será encerrada nesse ponto. Essencialmente, você tem mais de 20 linhas de verificação de integridade para garantir que o
mdadm --zero-superblock
comando ativo só seja executado se e onde for absolutamente pretendidoVocê pode usar
blkid
para fazer isso com um pouco de manipulação.Primeiro, obtenha o array de ataque que você deseja.
Converta o UUID em um formato UUID adequado e você poderá usá-lo
blkid
para extrair todos os membros do disco.Se você deseja apenas destruir todos os arrays de ataque mdadm, não precisa coletar nenhum outro identificador:
Para explodir tudo usando esse método você pode até usar
wipefs
. Isso poderia ser algo como ..Obviamente, isso zerará todos os arrays raid de todos os discos, sem se preocupar com o array raid específico em questão. Eu adicionei um
-n
para evitar que as pessoas sejam descuidadas ao copiar/colar!