mdadm um disco às vezes está faltando após a reinicialização

1

Em um sistema debian, meu diretório home está em uma matriz raid1 md. Após a criação, funcionou bem por algum tempo, mas uma vez que a segunda unidade desapareceu da matriz.

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda3[1]
      1843414335 blocks super 1.2 [2/1] [U_]

Quando adiciono manualmente o disco ausente, ele é detectado como sobressalente e a matriz é reconstruída. Até a próxima reinicialização ...

Consegui consertar recriando o array (com as mesmas partições). Ele dura várias reinicializações e agora, novamente, o mesmo problema.

Ambos os discos são novos, as verificações da SMART são aceitáveis.

Eu verifiquei dmesg e aqui está a sequência completa "com falha": Bom RAID sincronizado:

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

Na reinicialização (mais dmesg aqui: link ):

[ 8.175247] sda: sda1 sda2 sda3 sda4
...
[ 8.644777] md: md0 stopped.
[ 8.645248] md: bind<sda3>
[ 8.646198] md: raid1 personality registered for level 1
[ 8.646377] md/raid1:md0: active with 1 out of 2 mirrors
[ 8.646391] md0: detected capacity change from 0 to 42916118528
[ 8.646407] RAID1 conf printout:
[ 8.646409] --- wd:1 rd:2
[ 8.646411] disk 0, wo:0, o:1, dev:sda3
[ 8.648749] md0: unknown partition table
[ 8.753331] usb 4-3: new full-speed USB device number 7 using ohci-pci
[ 8.840857] sdb: sdb1 sdb2 sdb3 sdb4
[ 8.841175] sd 1:0:0:0: [sdb] Attached SCSI disk

Depois disso:

Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
2 0 0 2 removed

mdadm -E result: link

    
por Artiom 28.08.2014 / 10:11

2 respostas

0

No Linux, não é garantido que os nomes de / dev / sdXY sejam persistentes. Ou seja, para um determinado conjunto de discos físicos, não é garantido que os nós do dispositivo apareçam na mesma ordem de uma inicialização para a próxima.

Se você tiver um único disco, poderá ter quase 100% de certeza de que ele sempre aparecerá como o mesmo nó de dispositivo (por exemplo, / dev / sda).

Se você tiver dois discos, pode ter certeza de que eles sempre aparecerão na mesma ordem (de modo que "/ dev / sda no boot 1" é o mesmo dispositivo físico que "/ dev / sda no boot 2" "por quaisquer duas botas consecutivas).

Se você tiver uma centena de discos, a probabilidade de dois discos serem trocados subitamente aumenta bastante. Isso pode ser o resultado de qualquer número de irregularidades, mas no final, tudo se resume a que os nós de dispositivos / dev / sdX são criados em ordem de detecção de disco e que a ordem de detecção não é garantida. / p>

Se você quiser garantir que o mesmo disco sempre será mencionado por um determinado nome, use um identificador persistente. O daemon com o qual todos têm uma relação de amor e ódio, o udev, torna isso fácil, normalmente sendo configurado para criar links simbólicos nos diretórios / dev / disk / by- * que apontam vários aspectos dos discos (barramento / fabricante / modelo / quadrupleto serial, localização de topologia de barramento, WWN , ...) para o nó do dispositivo, conforme detectado pelo kernel. Você também pode adicionar regras personalizadas para criar qualquer esquema de nomenclatura de sua preferência. Eu acertei algo similar (mas não exatamente o mesmo) eu mesmo , que foi resolvido migrando para nomes WWN.

Em grandes arrays de armazenamento, esse é realmente um problema muito real, e é o motivo de uma strong defesa por sempre usar nomes de dispositivos persistentes ao se referir ao armazenamento.

Seu problema deve desaparecer (ou pelo menos ser bastante reduzido, exceto problemas reais de disco) se você adicionar novamente os discos à sua matriz, como por exemplo / dev / disk / by-id / wwn - * - parte * em vez de / dev / sdXY. Fazer isso não deve ter nenhum impacto negativo em qualquer outra coisa.

    
por 28.08.2014 / 10:24
0

Eu tive o mesmo problema. O que eu achei estranho foi a numeração dos dispositivos que foi 0 e 2. Acabei de recriar toda a configuração do ataque.

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Agora os números são 0 e 1 novamente. (de acordo com o mdadm --detail / dev / md0)

Depois disso, eu modifiquei um pouco o arquivo /etc/mdadm/mdadm.conf.

ARRAY /dev/md0 level=raid1 num-devices=2 devices=/dev/sda1,/dev/sdb1 UUID=<uuid of your raid setup>

Eu também adicionei um pequeno atraso no /boot/cmdline.txt com rootdelay = 5

Tudo isso parece ter resolvido meu problema.

    
por 22.06.2016 / 19:13