Como se livrar de um dispositivo 'removido' teimoso no mdadm

4

Uma das unidades do meu servidor falhou e, por isso, removi a unidade com falha de todas as três matrizes relevantes, a unidade foi desativada e, em seguida, a nova unidade foi adicionada às matrizes. Duas das matrizes funcionaram perfeitamente. O terceiro adicionou a unidade de volta como sobressalente e há uma entrada estranha "removida" nos detalhes mdadm .

Eu tentei os dois

mdadm /dev/md2 --remove failed

e

mdadm /dev/md2 --remove detached

como sugerido aqui e aqui , nenhum dos quais reclamou, mas nenhum dos quais teve algum efeito, também.

Alguém sabe como posso me livrar dessa entrada e recuperar a unidade corretamente? (Idealmente sem ressincronizar uma terceira vez, eu já tive que fazer isso duas vezes e isso leva horas. Mas se é o que é preciso, é o que é necessário.) A nova unidade é /dev/sda , a partição relevante é /dev/sda3 .

Veja os detalhes da matriz:

# mdadm --detail /dev/md2
/dev/md2:
        Version : 0.90
  Creation Time : Wed Oct 26 12:27:49 2011
     Raid Level : raid1
     Array Size : 729952192 (696.14 GiB 747.47 GB)
  Used Dev Size : 729952192 (696.14 GiB 747.47 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 2
    Persistence : Superblock is persistent

    Update Time : Tue Nov 12 17:48:53 2013
          State : clean, degraded 
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

           UUID : 2fdbf68c:d572d905:776c2c25:004bd7b2 (local to host blah)
         Events : 0.34665

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       19        1      active sync   /dev/sdb3

       2       8        3        -      spare   /dev/sda3

Se for relevante, é um servidor de 64 bits. Ele normalmente roda o Ubuntu, mas agora eu estou no sistema operacional de "resgate" do data center, que é o Debian 7 (wheezy). A entrada "removida" estava lá na última vez que eu estava no Ubuntu (ela não irá, atualmente, inicializar a partir do disco), então eu não acho que isso seja algum conflito Ubuntu / Debian (e eles estão, é claro, próximos relacionado).

Atualizar :

Tendo feito testes extensivos com dispositivos de teste em uma máquina local, estou simplesmente obtendo um comportamento anormal de mdadm com essa matriz. Por exemplo, com /dev/sda3 removido da matriz novamente, fiz isso:

mdadm /dev/md2 --grow --force --raid-devices=1

E isso livrou-se do dispositivo "removido", deixando-me apenas com /dev/sdb3 . Então eu nuked /dev/sda3 (escrevi um sistema de arquivos para ele, então ele não tinha mais o raid fs), então:

mdadm /dev/md2 --grow --raid-devices=2

... que me deu uma matriz com /dev/sdb3 no slot 0 e "removido" no slot 1 como seria de esperar. Então

mdadm /dev/md2 --add /dev/sda3

... adicionou-o novamente como novamente . (Mais 3,5 horas pelo ralo.)

Então, com o sobressalente recriado na matriz, dado que a página do manual mdadm diz

RAID-DEVICES CHANGES

...

When the number of devices is increased, any hot spares that are present will be activated immediately.

... Eu cresci o array para três dispositivos, para tentar ativar o "spare":

mdadm /dev/md2 --grow --raid-devices=3

O que eu recebi? Dois dispositivos "removidos" e o sobressalente. E, no entanto, quando faço isso com uma matriz de teste, não obtenho esse comportamento.

Por isso, eu derrubei /dev/sda3 novamente, usei-o para criar uma matriz totalmente nova e copiei os dados da matriz antiga para a nova:

rsync -r -t -v --exclude 'lost+found' --progress /mnt/oldarray/* /mnt/newarray

Isso, é claro, levará horas. Espero que quando eu terminar, eu possa parar completamente a matriz antiga, nuke /dev/sdb3 , e adicioná-la à nova matriz. Espero que não seja adicionado como sobressalente!

    
por T.J. Crowder 12.11.2013 / 18:23

1 resposta

1

Bem, todas as opções usuais (listadas na minha pergunta) falharam, não tive escolha senão:

  1. Remova /dev/sda3 da matriz

  2. Nuke

  3. Crie uma matriz degradada nova contendo a mesma e um espaço vazio

  4. rsync os arquivos da matriz antiga para a nova

  5. Pare a matriz antiga

  6. Nuke /dev/sdb3

  7. Adicione /dev/sdb3 ao novo array

Começou dizendo "sobressalente, reconstrução", mas uma vez que foi reconstruído, ele foi adicionado à matriz como uma unidade ativa.

Claro, isso significava lidar com os efeitos colaterais do array ter mudado (e como esse era o sistema de arquivos raiz, eles eram uma dor real).

Tanto quanto eu posso dizer, algo tinha sido corrompido na definição da matriz anterior, porque:

A) A adição do drive deve ter Just Worked (tm) como aconteceu com os outros dois,

e

B) Se não, diminuir e crescer a matriz deveria ter funcionado.

    
por 14.11.2013 / 23:12

Tags