Como obter um dispositivo RAID inativo funcionando novamente?

29

Após a inicialização, meu dispositivo RAID1 ( /dev/md_d0 *) às vezes fica em um estado engraçado e não consigo montá-lo.

* Originalmente eu criei /dev/md0 , mas de alguma forma ele se transformou em /dev/md_d0 .

# mount /opt
mount: wrong fs type, bad option, bad superblock on /dev/md_d0,
       missing codepage or helper program, or other error
       (could this be the IDE device where you in fact use
       ide-scsi so that sr0 or sda or so is needed?)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

O dispositivo RAID parece estar inativo de alguma forma:

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] 
                [raid4] [raid10] 
md_d0 : inactive sda4[0](S)
      241095104 blocks

# mdadm --detail /dev/md_d0
mdadm: md device /dev/md_d0 does not appear to be active.

A pergunta é, como tornar o dispositivo ativo novamente (usando mdmadm , eu presumo)?

(Outras vezes está tudo bem (ativo) após a inicialização, e eu posso montá-lo manualmente sem problemas. Mas ele ainda não será montado automaticamente, mesmo que eu tenha em /etc/fstab :

/dev/md_d0        /opt           ext4    defaults        0       0

Então, uma pergunta bônus: o que devo fazer para que o dispositivo RAID seja montado automaticamente em /opt no momento da inicialização? )

Esta é uma estação de trabalho Ubuntu 9.10. Informações em segundo plano sobre minha configuração RAID nesta questão .

Editar : Meu /etc/mdadm/mdadm.conf é assim. Eu nunca toquei neste arquivo, pelo menos à mão.

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR <my mail address>

# definitions of existing MD arrays

# This file was auto-generated on Wed, 27 Jan 2010 17:14:36 +0200

Em /proc/partitions , a última entrada é md_d0 agora, após a reinicialização, quando o dispositivo estiver ativo novamente. (Não tenho certeza se seria o mesmo quando estiver inativo.)

Resolução : como Jimmy Hedman sugeriu , peguei a saída de mdadm --examine --scan :

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=de8fbd92[...]

e adicionou em /etc/mdadm/mdadm.conf , o que parece ter resolvido o problema principal. Depois de alterar /etc/fstab para usar /dev/md0 novamente (em vez de /dev/md_d0 ), o dispositivo RAID também será montado automaticamente.

    
por Jonik 09.03.2010 / 10:55

9 respostas

24

Para sua pergunta de bônus:

mdadm --examine --scan >> /etc/mdadm/mdadm.conf
    
por 10.03.2010 / 13:34
10

Eu descobri que tenho que adicionar o array manualmente em /etc/mdadm/mdadm.conf para fazer o Linux montá-lo na reinicialização. Caso contrário, recebo exatamente o que você tem aqui - md_d1 -dispositivos que estão inativos, etc.

O arquivo conf deve ser semelhante ao abaixo - isto é, um ARRAY -line para cada dispositivo-md. No meu caso, os novos arrays estavam faltando nesse arquivo, mas se você os listou, isso provavelmente não é uma correção para o seu problema.

# definitions of existing MD arrays
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

Adicione uma matriz por dispositivo-m e adicione-os após o comentário incluído acima ou, se não houver tal comentário, no final do arquivo. Você obtém os UUIDs fazendo sudo mdadm -E --scan :

$ sudo mdadm -E --scan
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

Como você pode ver, você pode simplesmente copiar a saída do resultado da varredura para o arquivo.

Eu executo o desktop Ubuntu 10.04 LTS e, tanto quanto eu me lembro, este comportamento difere da versão do servidor do Ubuntu, no entanto, foi há muito tempo que eu criei meus dispositivos md no servidor eu posso estar errado. Também pode ser que eu tenha perdido alguma opção.

De qualquer forma, adicionando a matriz no arquivo conf parece fazer o truque. Eu executei o ataque 1 e o ataque 5 acima por anos sem problemas.

    
por 01.08.2011 / 04:41
7

Atenção: Primeiro de tudo, deixe-me dizer que o abaixo (devido ao uso de "--force") parece arriscado para mim, e se você tiver dados irrecuperáveis, eu recomendaria fazer cópias das partições envolvidas antes de começar a tentar qualquer uma das coisas abaixo. No entanto, isso funcionou para mim.

Eu tive o mesmo problema, com uma matriz aparecendo como inativa, e nada que eu fiz incluindo o "mdadm --examine --scan > /etc/mdadm.conf", como sugerido por outros aqui, ajudou em tudo .

No meu caso, quando tentou iniciar o array RAID-5 depois de uma substituição de unidade, estava dizendo que estava sujo (via dmesg ):

md/raid:md2: not clean -- starting background reconstruction
md/raid:md2: device sda4 operational as raid disk 0
md/raid:md2: device sdd4 operational as raid disk 3
md/raid:md2: device sdc4 operational as raid disk 2
md/raid:md2: device sde4 operational as raid disk 4
md/raid:md2: allocated 5334kB
md/raid:md2: cannot start dirty degraded array.

Faz com que ele apareça como inativo em /proc/mdstat :

md2 : inactive sda4[0] sdd4[3] sdc4[2] sde4[5]
      3888504544 blocks super 1.2

Eu descobri que todos os dispositivos tinham os mesmos eventos, exceto pela unidade que eu havia substituído ( /dev/sdb4 ):

[root@nfs1 sr]# mdadm -E /dev/sd*4 | grep Event
mdadm: No md superblock detected on /dev/sdb4.
         Events : 8448
         Events : 8448
         Events : 8448
         Events : 8448

No entanto, os detalhes da matriz mostraram que ele tinha 4 de 5 dispositivos disponíveis:

[root@nfs1 sr]# mdadm --detail /dev/md2
/dev/md2:
[...]
   Raid Devices : 5
  Total Devices : 4
[...]
 Active Devices : 4
Working Devices : 4
[...]
    Number   Major   Minor   RaidDevice State
       0       8        4        0      inactive dirty  /dev/sda4
       2       8       36        2      inactive dirty  /dev/sdc4
       3       8       52        3      inactive dirty  /dev/sdd4
       5       8       68        4      inactive dirty  /dev/sde4

(O acima é da memória na coluna "Estado", não consigo encontrá-lo no meu buffer de rolagem para trás).

Consegui resolver isso parando o array e, em seguida, remontando-o:

mdadm --stop /dev/md2
mdadm -A --force /dev/md2 /dev/sd[acde]4

Nesse ponto, a matriz estava funcionando com 4 dos 5 dispositivos, e eu consegui adicionar o dispositivo de substituição e estou reconstruindo. Eu consigo acessar o sistema de arquivos sem nenhum problema.

    
por 21.03.2012 / 23:21
4

Eu estava tendo problemas com o Ubuntu 10.04, onde um erro no FStab impedia o servidor de inicializar.

Eu executei este comando conforme mencionado nas soluções acima:

mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Isto irá acrescentar os resultados de "mdadm --examine --scan" para "/etc/mdadm/mdadm.conf"

No meu caso, isso foi:

ARRAY /dev/md/0 metadata=1.2 UUID=2660925e:6d2c43a7:4b95519e:b6d110e7 name=localhost:0

Este é um fakeraid 0. Meu comando em / etc / fstab para montagem automática é:

/dev/md0 /home/shared/BigDrive ext3 defaults,nobootwait,nofail 0 0

O importante aqui é que você tem "nobootwait" e "nofail". Nobootwait irá pular todas as mensagens do sistema que estão impedindo você de inicializar. No meu caso, isso foi em um servidor remoto, por isso era essencial.

Espero que isso ajude algumas pessoas.

    
por 24.04.2012 / 03:29
2

Você pode ativar seu dispositivo md com

mdadm -A /dev/md_d0

Suponho que algum script de inicialização seja iniciado cedo demais, antes que um membro do RAID seja descoberto ou algum problema semelhante. Como uma solução rápida e suja, você deve poder adicionar esta linha ao /etc/rc.local:

mdadm -A /dev/md_d0 && mount /dev/md_d0

Edit: aparentemente seu /etc/mdadm/mdadm.conf ainda contém o nome da configuração antiga. Edite esse arquivo e substitua as ocorrências de md0 por md_d0.

    
por 09.03.2010 / 11:46
2

Eu tive um problema semelhante ... meu servidor não montaria md2 depois que eu crescesse as partições de dispositivos associados. Ao ler este tópico descobri que o dispositivo RAID md2 tinha um novo UUID e a máquina estava tentando usar o antigo.

Como sugerido ... usando a saída 'md2' de

mdadm --examine --scan

Eu editei /etc/mdadm/mdadm.conf e substituí a antiga linha UUID pela uma saída do comando acima e meu problema desapareceu.

    
por 15.08.2011 / 03:56
2

Quando você finge fazer algo com /dev/md[012346789} , vai para /dev/md{126,127...} . /dev/md0 continua montado em /dev/md126 ou /dev/md127 você precisa:

umount /dev/md127 ou umount /dev/md126 .

Isso é temporário para permitir que você execute comandos e alguns aplicativos sem parar o sistema.

    
por 26.11.2012 / 22:43
1

Uma maneira simples de executar o array, supondo que não há nenhum problema de hardware e de ter unidades / partições suficientes para iniciar o array, é a seguinte:

md20 : inactive sdf1[2](S)
      732442488 blocks super 1.2

 sudo mdadm --manage /dev/md20  --run

Pode ser que, por qualquer motivo, a matriz esteja bem, mas algo impediu que ela fosse iniciada ou construída. No meu caso, isso foi porque o mdadm não sabia que o nome da matriz original era md127 e todas as unidades foram desconectadas para essa matriz. Ao fazer a replicação eu tive que montar manualmente (provavelmente um bug onde o mdadm achava que o array já estava ativo por causa do antigo nome do array offline).

    
por 15.02.2017 / 00:24
0

md_d0 : inactive sda4[0](S) parece errado para uma matriz RAID1. Parece sugerir que o array não tem dispositivos ativos e um dispositivo sobressalente (indicado pelo (S), você veria (F) lá por um dispositivo com falha e nada por um dispositivo OK / ativo) - para uma matriz RAID1 que não está sendo degradada, deve haver pelo menos dois dispositivos OK / ativos (e, para uma matriz degradada, pelo menos um dispositivo OK / ativo) e você não pode ativar uma matriz RAID1 sem nenhum dispositivo não sobressalente (as peças de reposição não contêm uma cópia dos dados até que sejam ativadas quando outra unidade falhar). Se eu estiver lendo que /proc/mdstat output, você não poderá ativar o array em seu estado atual.

Você tem alguma unidade física na máquina que não conseguiu girar? O ls /dev/sd* lista todas as unidades e partições que você normalmente esperaria ver nessa máquina?

    
por 10.03.2010 / 14:14