it-swarm.dev

Como alterar o nome de um dispositivo MD (mdadm)

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

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

Este é um array v0.90. A questão é a seguinte: como o mdadm designa o nome para um dispositivo, onde ele é armazenado e como é modificado?

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

22
XXL

Aviso: Por favor, faça um backup antes de seguir qualquer conselho dado aqui :-)

Opção 1:

Editar /etc/mdadm.conf:

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

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

Opção 2:

Se você não tem mdadm.conf, e quer que ele seja montado em md1 automagicamente , você pode fazer isto:

o mdadm tem um conceito de "menor de preferência". Por exemplo. uma vez que um certo número menor seja atribuído a um array e armazenado no superbloco, ele será usado toda vez que esse array for montado automaticamente. Verifique isso:

mdadm --detail/dev/md127

Se ele diz "Preferred Minor: 127" isto é problema seu. Você precisa atualizar o menor preferido. Como fazer isso:

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

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 continuar assim no futuro também.

Com matrizes 1.x:

Matrizes mais recentes não armazenam um número 'Preferred Minor' e não suportam "--update = super-minor". Em vez disso, eles armazenam um nome que pode ser alterado com:

mdadm --stop/dev/md127
mdadm --assemble --update = nome - nome = 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).

28
haimg

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 os arrays antes de ler o mdadm.conf. Então, quando ele o encontra, simplesmente ignora os arrays que acabaram de ser montados.

Para dar conta disso, execute Sudo update-initramfs -u para regenerar o initrd apropriado.

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

11
Wtower

Nenhuma das outras respostas funcionou para mim, mas em Centos eu usei o seguinte guia. O problema é que o /etc/mdadm.conf não é realmente usado no momento da inicialização e só é atualizado quando um novo kernel é instalado ou o initramfs é recriado manualmente. Então, basicamente você só precisa:

dracut --force

fonte: http://realtechtalk.com/mdadm_change_wrong_device_name_md127_fix_and_solution_in_Linux-1783-articles

3
Areeb Soo Yasir

Superblocos da versão 0.9 não têm nome, eles foram introduzidos na versão 1. /dev/md127 nã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 bloqueio de ataque. Este número menor é escolhido de forma arbitrária quando o array é montado.

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

2
Gilles

haimg respondeu isso perfeitamente e funcionou para mim também.

A única coisa que gostaria de acrescentar é que em Centos 7, você tem que executar 'dracut -f' para atualizar o initrd. (alguns outros usuários também apontaram isso, mas eu achei que é sábio compartilhar o comando com vocês.

1
Karan Bhalla