A matriz raid5 do mdadm ausente é reagrupada como raid0 após a desativação

2

Eu tinha RAID5 array de três discos sem peças sobressalentes. Houve uma queda de energia e, na reinicialização, a matriz não retornou. Na verdade, o dispositivo / dev / md127 desapareceu completamente e foi substituído por um / dev / md0 incorreto. Foi o único array na máquina. Eu tentei remontá-lo a partir dos dispositivos de três componentes, mas o conjunto continua criando um array raid0 em vez de um raid5.

Os detalhes dos três discos são

root@bragi ~ # mdadm -E /dev/sdc1
/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 002fa352:9968adbd:b0efdfea:c60ce290
           Name : bragi:0  (local to host bragi)
  Creation Time : Sun Oct 30 00:10:47 2011
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 2930269954 (1397.26 GiB 1500.30 GB)
     Array Size : 2930269184 (2794.52 GiB 3000.60 GB)
  Used Dev Size : 2930269184 (1397.26 GiB 1500.30 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=770 sectors
          State : clean
    Device UUID : a8a1b48a:ec28a09c:7aec4559:b839365e

    Update Time : Sat Oct 11 09:20:36 2014
       Checksum : 7b1ad793 - correct
         Events : 15084

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)

root@bragi ~ # mdadm -E /dev/sdd1
/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 002fa352:9968adbd:b0efdfea:c60ce290
           Name : bragi:0  (local to host bragi)
  Creation Time : Sun Oct 30 00:10:47 2011
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 2930269954 (1397.26 GiB 1500.30 GB)
     Array Size : 2930269184 (2794.52 GiB 3000.60 GB)
  Used Dev Size : 2930269184 (1397.26 GiB 1500.30 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=770 sectors
          State : clean
    Device UUID : 36c08006:d5442799:b028db7c:4d4d33c5

    Update Time : Wed Oct 15 08:09:37 2014
       Checksum : 7e05979e - correct
         Events : 15196

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : .A. ('A' == active, '.' == missing, 'R' == replacing)

root@bragi ~ # mdadm -E /dev/sde1
/dev/sde1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x8
     Array UUID : 002fa352:9968adbd:b0efdfea:c60ce290
           Name : bragi:0  (local to host bragi)
  Creation Time : Sun Oct 30 00:10:47 2011
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 2930275057 (1397.26 GiB 1500.30 GB)
     Array Size : 2930269184 (2794.52 GiB 3000.60 GB)
  Used Dev Size : 2930269184 (1397.26 GiB 1500.30 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1960 sectors, after=5873 sectors
          State : clean
    Device UUID : b048994d:ffbbd710:8eb365d2:b0868ef0

    Update Time : Wed Oct 15 08:09:37 2014
  Bad Block Log : 512 entries available at offset 72 sectors - bad blocks present.
       Checksum : bdbc6fc4 - correct
         Events : 15196

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : spare
   Array State : .A. ('A' == active, '.' == missing, 'R' == replacing)

Eu parei o array antigo e remontei da seguinte forma (linhas em branco inseridas para maior clareza)

root@bragi ~ # mdadm -S /dev/md0
mdadm: stopped /dev/md0

root@bragi ~ # mdadm -A /dev/md0 /dev/sdd1 /dev/sdc1 /dev/sde1
mdadm: /dev/md0 assembled from 1 drive and 1 spare - not enough to start the array.

root@bragi ~ # cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : inactive sdd1[1](S) sde1[3](S) sdc1[2](S)
      4395407482 blocks super 1.2

unused devices: <none>
root@bragi ~ # mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
     Raid Level : raid0
  Total Devices : 3
    Persistence : Superblock is persistent

          State : inactive

           Name : bragi:0  (local to host bragi)
           UUID : 002fa352:9968adbd:b0efdfea:c60ce290
         Events : 15084

    Number   Major   Minor   RaidDevice

       -       8       33        -        /dev/sdc1
       -       8       49        -        /dev/sdd1
       -       8       65        -        /dev/sde1

root@bragi ~ # mdadm -Q /dev/md0
/dev/md0: is an md device which is not active

Por que essa montagem é um dispositivo raid0 e não um dispositivo raid5, como indicam os super-blocos dos componentes? É porque / dev / sde1 está marcado como sobressalente?

EDIT: Eu tentei o seguinte (de acordo com a sugestão do @ wurtel), com os seguintes resultados

# mdadm --create -o --assume-clean --level=5 --layout=ls --chunk=512 --raid-devices=3 /dev/md0 missing /dev/sdd1 /dev/sde1
mdadm: /dev/sdd1 appears to contain an ext2fs file system
       size=1465135936K  mtime=Sun Oct 23 13:06:11 2011
mdadm: /dev/sdd1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Sun Oct 30 00:10:47 2011
mdadm: /dev/sde1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Sun Oct 30 00:10:47 2011
mdadm: partition table exists on /dev/sde1 but will be lost or
       meaningless after creating array
Continue creating array? no
mdadm: create aborted.
#

Portanto, parece que / dev / sde1 está causando o problema novamente. Eu suspeito que isso é porque foi marcado como sobressalente. Existe alguma maneira que eu possa forçar a mudar seu papel de volta para ativo? Nesse caso, suspeito que a montagem do array pode até funcionar.

    
por sirlark 22.10.2014 / 21:37

2 respostas

0

Você tem um sistema com aparência um pouco embaralhada. Os principais elementos da sua mdadm --examine output:

/dev/sdc1:
    Update Time : Sat Oct 11 09:20:36 2014
         Events : 15084

   Device Role : Active device 2

/dev/sdd1:
    Update Time : Wed Oct 15 08:09:37 2014
         Events : 15196

   Device Role : Active device 1

/dev/sde1:
    Update Time : Wed Oct 15 08:09:37 2014
  Bad Block Log : 512 entries available at offset 72 sectors - bad blocks present.
         Events : 15196

   Device Role : spare

Você não conseguiu reunir o array porque /dev/sdc1 tem uma contagem de eventos menor que os outros dois (os dados estão desatualizados), enquanto /dev/sde1 está marcado como sobressalente (os dados em não tem relação com o estado da matriz). Isso fornece apenas uma unidade contendo dados, enquanto um RAID 5 de três discos precisa de no mínimo dois para iniciar a execução. Eu não tenho ideia de como você chegou aqui, já que isso não parece uma falha típica de duas unidades.

Como o evento conta /dev/sdc1 e /dev/sdd1 não diferem muito, você pode recuperar a maioria ou todos os dados forçando mdadm a montar novamente a matriz nesses dois volumes. Você provavelmente vai querer seguir o procedimento de o Linux RAID Wiki , mas se você não se importa a possibilidade de perder tudo, o passo-chave é mdadm --assemble --force --run /dev/sdc1 /dev/sdd1 , seguido por fsck - isso funcionará ou destruirá o array inteiramente, e o objetivo do procedimento estendido é descobrir qual será, na verdade, sem prejudicando os dados.

Como /dev/sdd1 e /dev/sde1 têm contagens de eventos idênticas, você pode recuperar tudo alterando os metadados em /dev/sde para marcá-los como tendo uma função de dispositivo de " Dispositivo ativo 0 ", mas esse é o tipo de coisa que requer conhecimento especializado e edição hexadecimal direta do conteúdo do disco.

    
por 13.05.2015 / 02:20
0

Se um dispositivo estiver ausente de um mdadm RAID5, eu "crie" o dispositivo RAID novamente com as configurações antigas e missing como o dispositivo ausente, por exemplo, na sua situação, deve ser:

mdadm --create --level=5 --layout=ls --chunk=512 --raid-devices=3 /dev/md0 missing /dev/sdd1 /dev/sdc1

Nota: Estou assumindo que a "função de dispositivo" é baseada em 0, estou acostumado a um formato de saída mdadm -E um pouco mais antigo. Ou seja que o primeiro dispositivo está faltando. Se for baseado em 1, aparentemente o terceiro dispositivo está ausente, então coloque missing no final, em vez do início da lista de dispositivos.

    
por 24.10.2014 / 13:07