Como alterar o nome de um dispositivo MD (mdadm)

25

Aqui está a saída do mdadm -Esv :

ARRAY / dev / md127 nível = raid0 num-devices = 2 UUID = d89d9d45: 9a420812: c44c77eb: 7ee19756 devices = / dev / sdb8, / dev / sda8

Esta é uma matriz v0.90. A questão é a seguinte: como o mdadm atribui o nome para um dispositivo correspondente, onde ele o armazena e como é que ele é alterado?

O que eu quero realizar é renomear md127 para algo diferente do meu gosto.

XXL
fonte

Respostas:

31

Aviso : faça um backup antes de seguir qualquer aviso dado aqui :-)

Opção 1:

Editar /etc/mdadm.conf:

ARRAY / dev / md1 level = raid0 num-devices = 2 UUID = d89d9d45: 9a420812: c44c77eb: 7ee19756 devices = / dev / sdb8, / dev / sda8

Acabei de inserir sua própria saída e alterei 127 para 1. Reinicialize e deve ser md1 agora.

Opção 2:

Se você não possui mdadm.confe deseja que ele seja montado automaticamente no md1 , é possível:

O mdadm tem o conceito de "menor preferido". Por exemplo, uma vez que um número menor seja atribuído a uma matriz e armazenado no superbloco, ele será usado sempre que essa matriz for montada automaticamente. Verifique isto:

mdadm --detail / dev / md127

Se aparecer "Preferred Minor: 127", este é o seu problema. Você precisa atualizar o menor preferido. Como fazer isso:

Você não pode simplesmente mudar o menor preferido. Você precisa inicializar na recuperação ou no modo de usuário único, se este for seu dispositivo raiz, desmonte o sistema de arquivos e depois:

mdadm --stop / dev / md127
mdadm --assemble --update = super menor / dev / md1 / dev / sdb8 / dev / sda8

Então você terá seu md127 montado como md1. E deve permanecer assim também no futuro.

Com matrizes 1.x:

As matrizes mais recentes não armazenam um número 'Menor preferido' e não suportam "--update = super menor". Em vez disso, eles armazenam um nome que pode ser alterado com:

mdadm --stop / dev / md127
mdadm --assemble --update = name --name = 2 / dev / md1 / dev / sdb8 / dev / sda8

Ou você pode especificar 'hostname: 2' para manter tudo consistente com outras matrizes (procure o nome atual com --detail).

haimg
fonte
muito bom! É mesmo o que eu procurava. então o truque era também atualizar o super menor .. obrigado!
XXL
Você é um salva-vidas! Usei isso para desmarcar um dispositivo WD NAS que usa md.
23412 Vlad
Esta solução é teoricamente correta, mas foi difícil para mim implementar no sistema vivo. Também a opção 1 não funcionou para mim. Eu fui com superuser.com/questions/287462/…
gorn
+1 na última parte da solução, o que foi muito útil ao mover a matriz de ataque de uma máquina para outra. 'hostname: 2' e mudar md127 para md1 era exatamente o que eu precisava para manter os nomes consistentes
yahol 01/01
13

Apenas para adicionar à excelente resposta de haimg. Pode acontecer que, mesmo com um mdadm.conf, o sistema (pelo menos para o Ubuntu) ainda possa montar automaticamente as matrizes antes de ler o mdadm.conf. Portanto, quando encontra, ignora as matrizes que acabaram de ser montadas de qualquer maneira.

Para explicar isso, execute sudo update-initramfs -upara regenerar o initrd apropriado.

Links relevantes: http://ubuntuforums.org/showthread.php?t=1764861%29%3a

Wtower
fonte
2
Isso corrigiu o problema para mim (após outra reinicialização) no Ubuntu 16.04. No meu caso, foi porque eu recriei a matriz e ela tinha um novo UUID. Após atualizá-lo mdadm.conf, a reinicialização sozinha não era suficiente; atualizar o initramfs fez o truque.
NH2
2

Os superblocos da versão 0.9 não têm um nome, eles foram introduzidos na versão 1. /dev/md127não é o nome da matriz, é o nome do arquivo de dispositivo da matriz, que é uma conseqüência direta do número menor do dispositivo de bloco raid. Esse número menor é escolhido arbitrariamente quando a matriz é montada.

O UUID fornece um identificador exclusivo para a matriz, se você precisar de um. Se você preferir um nome legível por humanos ou estruturado, coloque um volume físico LVM na matriz.

Gilles 'SO- parar de ser mau'
fonte
Estou ciente da possibilidade de --homehost da versão posterior, por isso afirmei deliberadamente que essa é uma matriz de metadados v0.90. No entanto, essa não é a minha intenção nem é compatível. Observando minhas postagens, também não consigo perceber onde mencionei que / dev / md127 era o nome da matriz . Acho que forneci os detalhes exatos do que quero fazer. Portanto, a questão ainda permanece: como eu a altero e onde esse "número menor" é armazenado? Presumo que seja parte do superbloco? Isso arruinará a soma de verificação dos superblocos, quando editada em hexadecimal?
XXL
@XXL Esse número não é armazenado em nenhum lugar, é escolhido arbitrariamente quando a matriz é montada.
Gilles 'SO- stop be evil'
hmm .. eu não entendo. Então, por que eu sempre obtenho o / dev / md127 quando eu mdadm -Esv ? Não devo obter outra coisa, aleatória, que não seja um nome estático? Isto é, se ele é realmente "arbitrária" ..
XXL