Como recupero arquivos de uma única unidade raid1 mdadm degradada? “Não o suficiente para iniciar o array”

7

Dado um único drive raid1 no estado degradado / reconstruído, ele pode ser montado à força? Gostaria de recuperar todos os arquivos antes de executar a operação perigosa de emparelhamento e reconstrução. Tanto quanto eu posso dizer a unidade está em perfeita forma, totalmente intacta. O par drive está parcialmente errado.

Se a unidade não estivesse em estado de reconstrução, saberia exatamente o que fazer. Aqui está o que eu tentei:

# mdadm --verbose --assemble /dev/md8 /dev/sdb1  --force
mdadm: looking for devices for /dev/md8
mdadm: /dev/sdb1 is identified as a member of /dev/md8, slot 1.
mdadm: no uptodate device for slot 0 of /dev/md8
mdadm: added /dev/sdb1 to /dev/md8 as 1
mdadm: /dev/md8 assembled from 0 drives and  1 rebuilding - not enough to start the array.

# cat /proc/mdstat                       
md8 : inactive sdb1[1](S)
      976759808 blocks super 1.2          
md0 : active raid1 sdc1[0]
      976759672 blocks super 1.2 [2/1] [U_]

# mdadm --stop /dev/md8
mdadm: stopped /dev/md8

# mount /dev/sdb1 /mnt/temp2
mount: unknown filesystem type 'linux_raid_member'

# mount -o ro -t ext3 -b 2048 /dev/sdb1 /mnt/temp1
mount: wrong fs type, bad option, bad superblock on /dev/sdb1.

# foremost -i /dev/sdb -o /tmp/foo    (this results in perfectly good files)

Neste caso em particular, o comando foremost recupera arquivos, então algo está definitivamente na unidade, se eu conseguisse apenas corrigir o offset do superbloco.

E neste caso particular, montar as duas metades do array trava o kernel (!), então essa não é uma opção real de qualquer maneira (além dos problemas de segurança).

UPDATE: saída adicionada do mdadm

# mdadm --examine /dev/sdb1
/dev/sdb1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x2
     Array UUID : e00a291e:016bbe47:09526c90:3be48df3
           Name : ubuntu:0
  Creation Time : Wed May 11 12:26:39 2011
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 1953519616 (931.51 GiB 1000.20 GB)
     Array Size : 1953519344 (931.51 GiB 1000.20 GB)
  Used Dev Size : 1953519344 (931.51 GiB 1000.20 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
Recovery Offset : 0 sectors
          State : clean
    Device UUID : 41346f44:ccacbbf7:0c17c133:eb7b341f

    Update Time : Sat Apr 13 00:02:08 2013
       Checksum : 483a0a44 - correct
         Events : 402833


   Device Role : Active device 1
   Array State : AA ('A' == active, '.' == missing)
    
por Bryce 13.04.2013 / 10:16

2 respostas

8

Se for RAID 1, e se você souber o deslocamento de dados (por exemplo, 2048 setores, normalmente você pode descobrir o deslocamento de dados exato por mdadm --examine /dev/sdb1 ), você pode criar um dispositivo de loop somente leitura (para ser seguro) assim:

# losetup --find --show --read-only --offset $((2048*512)) /dev/sdb1

/dev/loop7

E tente verificar e montar o dispositivo de loop impresso:

# fsck.ext3 -n -v /dev/loop7
# mount -o ro /dev/loop7 /mnt/recovery

mount pode fazer isso diretamente com as opções -o ro,loop,offset= , mas eu prefiro criar o dispositivo de loop manualmente, apenas para ter certeza de que ele é realmente somente leitura.

Se o próprio sistema de arquivos estiver danificado, você deve criar uma imagem usando dd e executar experimentos como fsck na imagem. Alternativamente, você pode usar o dispositivo de bloqueio de rede do Linux para colocar uma camada de cópia sobre gravação no topo do disco, para que você possa fsck dessa camada sem escrever nada no próprio disco ( nbd-server -c / nbd-client , criará um dispositivo /dev/nbdX para você brincar). Pode ser possível fazer o mesmo com o mapeador de dispositivos - mas nunca tentei isso.

    
por 13.04.2013 / 13:12
0

Você deve ser capaz de definir o número de dispositivos de ataque em sua matriz para um usando:

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

Depois disso, procure em /proc/mdstat para ver se md8 está ativo. Você provavelmente deve montá-lo somente leitura até ter copiado os dados.

    
por 13.04.2013 / 14:41