A nova matriz RAID não será montada automaticamente, leva a problemas de inicialização

6

Eu tinha acabado de fazer essa pergunta onde não consegui arrancar depois de instalar um novo RAID1 Array. Consegui chegar ao terminal, mas uma vez que resolvi isso, percebi que o meu problema não é tanto um problema de boot fstab quanto um problema de montagem automática do mdadm.

Eu tenho três arrays RAID1 no meu sistema, com /dev/md1 montado em / e /dev/md0 montado como swap , e esses atualmente são executados sem problemas. Eu não criei esses arrays. Eu criei uma nova matriz RAID1, /dev/md2 que eu formatei para ext4 usando este guia , e ao fazê-lo eu criei uma nova partição (a única) como md2p1 (o guia também criou uma partição com nome semelhante, embora o fdisk nunca tenha solicitado explicitamente um nome).

Ao criar este novo array, consegui montar manualmente usando

mount -t ext4 /dev/md2p1 /srv/Waveforms

E isso funcionou bem. Consegui acessar o diretório e adicionei cerca de 700 GB de dados a ele. Depois de fazer isso, recebo

cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md2 : active raid1 sdc1[0] sdd1[1]
      1953423552 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      961136576 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      15624128 blocks [2/2] [UU]

unused devices: <none>

, então o computador reconhece claramente o array. Eu então usei

sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf 

e o arquivo agora contém

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# 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 root

# definitions of existing MD arrays
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=afa7ccee:df4dfa79:a84dbc05:35401226
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=a0c526cc:6de93504:c8b94301:85474c49
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=1ac720e1:192b2c38:f6e0357b:f3e0074f

# This file was auto-generated on Thu, 10 Mar 2011 00:57:55 -0700
# by mkconf $Id$
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=0.90 UUID=afa7ccee:df4dfa79:a84dbc05:35401226
ARRAY /dev/md1 level=raid1 num-devices=2 metadata=0.90 UUID=a0c526cc:6de93504:c8b94301:85474c49
ARRAY /dev/md2 level=raid1 num-devices=2 metadata=0.90 UUID=1ac720e1:192b2c38:f6e0357b:f3e0074f

Duas coisas a serem observadas aqui. O arquivo original tinha metadata=00.90 , mas eu modifiquei isso para ser metadata=0.90 , pois isso solucionou um problema menor, no qual os metadados não eram reconhecidos (uma pesquisa rápida no google explicaria isso).

O segundo pensamento a notar é que auto é definido como sim, o que significa que o sistema deve montar automaticamente todos os arrays na inicialização. Este deve ser o caso, já que o fato de eu poder inicializar deve significar que / dev / md1 foi montado.

De qualquer forma, agora o problema. Ao reiniciar, minha máquina trava e me diz

fsck from util-linux-ng 2.17.2
/dev/md1: clean, 3680768/60071936 files, 208210802/240284144 blocks

Meu fstab atualmente lê

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/md1 during installation
UUID=1d3cb392-f522-485b-8516-a7791fc23c4d /               ext4    errors=remount-ro 0       1
# swap was on /dev/md0 during installation
UUID=6eb8e6f2-3166-4f77-883c-26268d636b0b none            swap    sw              0       0
/dev/md2p1 /srv/Waveforms            ext4    defaults,noauto              0       0

com

blkid
/dev/sda1: UUID="afa7ccee-df4d-fa79-a84d-bc0535401226" TYPE="linux_raid_member" 
/dev/sda2: UUID="a0c526cc-6de9-3504-c8b9-430185474c49" TYPE="linux_raid_member" 
/dev/sdb1: UUID="afa7ccee-df4d-fa79-a84d-bc0535401226" TYPE="linux_raid_member" 
/dev/sdb2: UUID="a0c526cc-6de9-3504-c8b9-430185474c49" TYPE="linux_raid_member" 
/dev/sdc1: UUID="1ac720e1-192b-2c38-f6e0-357bf3e0074f" TYPE="linux_raid_member" 
/dev/sdd1: UUID="1ac720e1-192b-2c38-f6e0-357bf3e0074f" TYPE="linux_raid_member" 
/dev/md0: UUID="6eb8e6f2-3166-4f77-883c-26268d636b0b" TYPE="swap" 
/dev/md1: UUID="1d3cb392-f522-485b-8516-a7791fc23c4d" TYPE="ext4" 
/dev/md2p1: UUID="867ee91e-527e-435b-b6bc-2f6d89d2d8c6" TYPE="ext4" 

Eu já usei UUID=867ee91e-527e-435b-b6bc-2f6d89d2d8c6 em vez de /dev/md2p1 , mas isso não me deu resultados. Eu também tentei opções como padrões, padrões + noatime, erros = remount-ro com este md2p1, mas nenhum funcionou.

Eu sou capaz de inicializar modificando o fstab para excluir minha nova linha md2p1. Depois de inicializar com essa configuração, recebo

cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sda1[0] sdb1[1]
      15624128 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      961136576 blocks [2/2] [UU]

O sistema não montou o md2. Eu posso então correr

sudo mdadm --assemble --scan
[sudo] password for zach: 
mdadm: /dev/md2 has been started with 2 drives.

de onde

cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md2 : active raid1 sdc1[0] sdd1[1]
      1953423552 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      15624128 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      961136576 blocks [2/2] [UU]

e agora posso montar manualmente como acima. Portanto, o problema parece ser que a matriz RAID1 não está montando na inicialização e, portanto, não é reconhecida pelo fstab e, portanto, não consigo inicializar, exceto em um modo de recuperação.

Eu encontrei this post, mas eu não acho que isso se aplica a mim, já que a resposta parece ser set auto para yes, que então monta automaticamente os arrays na inicialização. Minha configuração já está configurada para fazer isso, então estou perdida.

Existe uma resposta nesse post que parece aplicável, mas não entendo qual foi sua solução. Este é o post de Deplicator, que diz

After a reboot I could never see /dev/md0. Running the mdadm --detail --scan again (without putting the result in a file) I would see

ARRAY /dev/md/ubuntu:0 metadata=1.2 name=ubuntu:0 UUID=a8a570c6:96f61865:05abe131:5c2e2f7e

and manually mounting /dev/md/ubuntu:0 would work. In the end, that was what I put in the fstab file too.

O que foi colocado no fstab? O problema parece ser que eu não estou montando o md2 na inicialização e, portanto, vou travar toda vez que o fstab tentar montar a partição md2p1. Na verdade, isso pode estar relacionado ao fato de o md2 ser particionado enquanto os outros não, mas não vejo por que esse deve ser o caso.

Edit: Apenas no caso

uname -a
Linux ccldas2 2.6.32-74-server #142-Ubuntu SMP Tue Apr 28 10:12:19 UTC 2015 x86_64 GNU/Linux
    
por barriboy 18.06.2015 / 00:19

2 respostas

11

Duas questões vêm à mente

  1. Você tem definições de array duplicadas em mdadm.conf . Substitua (ou comente) o bloco de três linhas seguindo # definitions of existing MD arrays para que cada matriz seja declarada por sua varredura mais recente.

  2. Um cenário típico para matrizes RAID que não são criadas na inicialização é que elas não foram atualizadas no initramfs ou não estão definidas para serem executadas no momento da inicialização. Uma verificação realmente rápida do guia que você mencionou não menciona essas etapas, mas posso estar errado. Nos sistemas Debian, os comandos são:

    dpkg-reconfigure mdadm    # Choose "all" disks to start at boot
    update-initramfs -u       # Updates the existing initramfs
    
por 18.06.2015 / 01:20
1

No mdadm.conf você só precisa do UUID, assim

ARRAY /dev/md0 UUID=d8b8b4e5:e47b2e45:2093cd36:f654020d

Todas as outras condições podem impedir que o RAID seja montado.

Para a montagem automática (descontinuada), você precisa:

  • tipo de partição fd
  • metadados 0.90
  • não tem nenhum initramfs ou certifica-se de que o initramfs raidautorun /dev/disk

Se a montagem automática falhar, dmesg deve conter alguns indicadores sobre o que deu errado.

Em geral, se possível (e se o initramfs estiver envolvido de qualquer forma), você deve se ater ao formato de metadados 1.2 padrão mais recente e ter um initramfs com mdadm , mdadm.conf configurado.

    
por 18.06.2015 / 01:22

Tags