Comment monter un disque à partir d'un système de raid détruit?

16

J'ai une situation horrible où je dois restaurer les données d'un système de raid endommagé dans un Debian Linux de secours. Je veux juste les monter tous dans / mnt / rescue en mode lecture seule pour pouvoir copier des images VMWare GSX sur une autre machine et les migrer vers ESXi plus tard. La sortie des commandes pertinentes est la suivante.

fdisk -l

Disk /dev/sda: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005e687

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         523     4200997   fd  Linux raid autodetect
/dev/sda2             524         785     2104515   fd  Linux raid autodetect
/dev/sda3             786      182401  1458830520   fd  Linux raid autodetect

Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00014fc7

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         523     4200997   fd  Linux raid autodetect
/dev/sdb2             524         785     2104515   fd  Linux raid autodetect
/dev/sdb3             786      182401  1458830520   fd  Linux raid autodetect

Disk /dev/md0: 4301 MB, 4301717504 bytes
2 heads, 4 sectors/track, 1050224 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table

Disk /dev/md1: 2154 MB, 2154954752 bytes
2 heads, 4 sectors/track, 526112 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/md1 doesn't contain a valid partition table

J'essayais de monter les disques comme suit.

mount -o ro /dev/sda1 /mnt/rescue

Ensuite, j'obtiens l'erreur suivante.

mount: unknown filesystem type 'linux_raid_member'

Deviner que le système de fichiers ne va pas bien non plus.

mount -o ro -t ext3 /dev/sda1 /mnt/rescue/
mount: /dev/sda1 already mounted or /mnt/rescue/ busy

J'ai donc essayé de créer un périphérique virtuel comme suit.

mdadm -A -R /dev/md9 /dev/sda1

Il en résulte le message suivant.

mdadm: cannot open device /dev/sda1: Device or resource busy
mdadm: /dev/sda1 has no superblock - assembly aborted

Maintenant que je suis perdu, je ne sais pas comment récupérer les disques et récupérer les données. Ce qui suit est la sortie de mda --examine pour les 3 disques (je pense que ce devrait être 3x disques raid1).

/ dev / sda1:

          Magic : a92b4efc
        Version : 0.90.00
           UUID : 6708215c:6bfe075b:776c2c25:004bd7b2 (local to host rescue)
  Creation Time : Mon Aug 31 17:18:11 2009
     Raid Level : raid1
  Used Dev Size : 4200896 (4.01 GiB 4.30 GB)
     Array Size : 4200896 (4.01 GiB 4.30 GB)
   Raid Devices : 3
  Total Devices : 2
Preferred Minor : 0

    Update Time : Sun Jun  2 00:58:05 2013
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 9070963e - correct
         Events : 19720


      Number   Major   Minor   RaidDevice State
this     1       8        1        1      active sync   /dev/sda1

   0     0       0        0        0      removed
   1     1       8        1        1      active sync   /dev/sda1
   2     2       8       17        2      active sync   /dev/sdb1

/ dev / sda2:

          Magic : a92b4efc
        Version : 0.90.00
           UUID : e8f7960f:6bbea0c7:776c2c25:004bd7b2 (local to host rescue)
  Creation Time : Mon Aug 31 17:18:11 2009
     Raid Level : raid1
  Used Dev Size : 2104448 (2.01 GiB 2.15 GB)
     Array Size : 2104448 (2.01 GiB 2.15 GB)
   Raid Devices : 3
  Total Devices : 2
Preferred Minor : 1

    Update Time : Sat Jun  8 07:14:24 2013
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 120869e1 - correct
         Events : 3534


      Number   Major   Minor   RaidDevice State
this     1       8        2        1      active sync   /dev/sda2

   0     0       0        0        0      removed
   1     1       8        2        1      active sync   /dev/sda2
   2     2       8       18        2      active sync   /dev/sdb2

/ dev / sda3:

          Magic : a92b4efc
        Version : 0.90.00
           UUID : 4f2b3b67:c3837044:776c2c25:004bd7b2 (local to host rescue)
  Creation Time : Mon Aug 31 17:18:11 2009
     Raid Level : raid5
  Used Dev Size : 1458830400 (1391.25 GiB 1493.84 GB)
     Array Size : 2917660800 (2782.50 GiB 2987.68 GB)
   Raid Devices : 3
  Total Devices : 2
Preferred Minor : 2

    Update Time : Sat Jun  8 14:47:00 2013
          State : clean
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0
       Checksum : 2b2b2dad - correct
         Events : 36343894

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     1       8        3        1      active sync   /dev/sda3

   0     0       0        0        0      removed
   1     1       8        3        1      active sync   /dev/sda3
   2     2       0        0        2      faulty removed

cat /proc/mdstat
Personalities : [raid1]
md2 : inactive sda3[1](S) sdb3[2](S)
      2917660800 blocks

md1 : active raid1 sda2[1] sdb2[2]
      2104448 blocks [3/2] [_UU]

md0 : active raid1 sda1[1] sdb1[2]
      4200896 blocks [3/2] [_UU]

md2 semble être endommagé et c'est probablement le raid avec mes images VMWare.

Je voudrais accéder aux données de md2 (les données sur le disque actif et non endommagé, c'est-à-dire / dev / sda3) en le montant en dehors du raid.

Est-ce une bonne idée de simplement exécuter

mdadm --manage /dev/md2 --remove /dev/sda3 

(cela fonctionnerait-il même car md2 n'est pas vu par fdisk)?

Dois-je réassembler les autres raids md0 et md1 en exécutant

mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1

?

MISE À JOUR 0: Je ne peux pas assembler md0 et md2.

root@rescue ~ # mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1
mdadm: cannot open device /dev/sda1: Device or resource busy
mdadm: /dev/sda1 has no superblock - assembly aborted
root@rescue ~ # mdadm --assemble /dev/md2 /dev/sda3 /dev/sdb3
mdadm: cannot open device /dev/sda3: Device or resource busy
mdadm: /dev/sda3 has no superblock - assembly aborted

Le montage avec le montage -t auto n'est pas possible.

root@rescue ~ # mount -t auto -o ro /dev/md0 /mnt/rescue/
/dev/md0 looks like swapspace - not mounted
mount: you must specify the filesystem type
root@rescue ~ # mount -t auto -o ro /dev/md2 /mnt/rescue/
mount: you must specify the filesystem type

Le montage / dev / md1 fonctionne mais pas de données VMWare dessus.

root@rescue /mnt/rescue # ll
total 139M
-rw-r--r-- 1 root root 513K May 27  2010 abi-2.6.28-19-server
-rw-r--r-- 1 root root 631K Sep 16  2010 abi-2.6.32-24-server
-rw-r--r-- 1 root root 632K Oct 16  2010 abi-2.6.32-25-server
-rw-r--r-- 1 root root 632K Nov 24  2010 abi-2.6.32-26-server
-rw-r--r-- 1 root root 632K Dec  2  2010 abi-2.6.32-27-server
-rw-r--r-- 1 root root 632K Jan 11  2011 abi-2.6.32-28-server
-rw-r--r-- 1 root root 632K Feb 11  2011 abi-2.6.32-29-server
-rw-r--r-- 1 root root 632K Mar  2  2011 abi-2.6.32-30-server
-rw-r--r-- 1 root root 632K Jul 30  2011 abi-2.6.32-33-server
lrwxrwxrwx 1 root root    1 Aug 31  2009 boot -> .
-rw-r--r-- 1 root root 302K Aug  4  2010 coffee.bmp
-rw-r--r-- 1 root root  89K May 27  2010 config-2.6.28-19-server
...

MISE À JOUR 1:

J'ai essayé d'arrêter md2 et md0 et de réassembler.

mdadm -S /dev/md0

root@rescue ~ # mount -t auto -o ro /dev/md0 /mnt/rescue/
/dev/md0 looks like swapspace - not mounted
mount: you must specify the filesystem type

mdadm -S /dev/md2

root@rescue ~ # mount -t auto -o ro /dev/md2 /mnt/rescue/
mount: you must specify the filesystem type

Des idées?

MISE À JOUR 2:

L'assemblage à partir d'un disque ne fonctionne pas en raison du message d'erreur suivant.

root@rescue ~ # mdadm -S /dev/md2
root@rescue ~ # mdadm --assemble /dev/md2 /dev/sda3
mdadm: /dev/md2 assembled from 1 drive - not enough to start the array.

root@rescue ~ # mdadm -S /dev/md2
mdadm: stopped /dev/md2
root@rescue ~ # mdadm --assemble /dev/md2 /dev/sdb3
mdadm: /dev/md2 assembled from 1 drive - not enough to start the array.

Même un nouveau raid échoue.

root@rescue ~ # mdadm -S /dev/md9
mdadm: stopped /dev/md9
root@rescue ~ # mdadm --assemble /dev/md9 /dev/sda3
mdadm: /dev/md9 assembled from 1 drive - not enough to start the array.

root@rescue ~ # mdadm -S /dev/md9
mdadm: stopped /dev/md9
root@rescue ~ # mdadm --assemble /dev/md9 /dev/sdb3
mdadm: /dev/md9 assembled from 1 drive - not enough to start the array.

La création d'un nouveau disque md échoue également.

root@rescue ~ # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[1] sdb1[2]
      4200896 blocks [3/2] [_UU]

md1 : active raid1 sda2[1] sdb2[2]
      2104448 blocks [3/2] [_UU]

unused devices: <none>
root@rescue ~ # mdadm -A -R /dev/md9 /dev/sda3
mdadm: failed to RUN_ARRAY /dev/md9: Input/output error
mdadm: Not enough devices to start the array.
root@rescue ~ # cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md9 : inactive sda3[1]
      1458830400 blocks

md0 : active raid1 sda1[1] sdb1[2]
      4200896 blocks [3/2] [_UU]

md1 : active raid1 sda2[1] sdb2[2]
      2104448 blocks [3/2] [_UU]

unused devices: <none>
root@rescue ~ # mdadm -S /dev/md9
mdadm: stopped /dev/md9
root@rescue ~ # mdadm -A -R /dev/md9 /dev/sdb3
mdadm: failed to RUN_ARRAY /dev/md9: Input/output error
mdadm: Not enough devices to start the array.

MISE À JOUR 3:

La suppression de disques de md2 ne fonctionne pas.

mdadm --remove /dev/md2 /dev/sda3
mdadm: cannot get array info for /dev/md2

MISE À JOUR 4:

Enfin, courir assembler avec, --forceespérons-le, l'a fait. Je copie maintenant des fichiers sur un autre serveur.

Tony Stark
la source
mdadm --assembleest la voie à suivre. Essayez sans --remove.
Hauke ​​Laging du
mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 mdadm: /dev/md0 has been started with 2 drives (out of 3). Mais le montage échoue (je ne connais pas le type de système de fichiers). mount -o ro /dev/md0 /mnt/rescue /dev/md0 looks like swapspace - not mounted mount: you must specify the filesystem type
Tony Stark
Peut sd?1- être est swapspace. Essayez de monter md1et md2et à monter avec mount -t auto ....
Hauke ​​Laging
@HaukeLaging: J'ai essayé d'assembler md0, md1 et md2 (voir l'article mis à jour). Seul md1 s'assemble et se monte avec succès. Les deux autres ne parviennent pas à assembler et à monter. Des idées?
Tony Stark
1
Avez-vous pu résoudre ce problème? Veuillez envisager de publier une auto-réponse avec la solution qui a fini par fonctionner pour vous (ou d'accepter la réponse existante si cela a aidé) si vous l'avez fait, au profit des futurs visiteurs.
un CVn

Réponses:

3

Dans mon cas, j'ai fait apparaître CentOS 7 et j'ai essayé de suivre les instructions de tout le monde sur cette page. J'ai continué à rencontrer un message de périphérique occupé. À mon avis, la raison pour laquelle vous obtenez le

mdadm: impossible d'ouvrir le périphérique / dev / sda1: périphérique ou ressource occupé

Le message d'erreur est dû au fait que le périphérique est déjà monté comme autre chose.

Je ne voulais pas non plus apporter de modifications au disque car mon cas d'utilisation était d'extraire un très gros fichier de ma matrice RAID1 qui n'a pas pu être extrait de toutes les manières possibles et le moyen le plus rapide était de retirer l'un des disques , Je veux remettre le disque et toujours avoir ma configuration en place.

Voici ce que j'ai fait après avoir effectué des recherches en ligne sur d'autres sites: REMARQUE : NAS: 0 est le nom de mon périphérique NAS, remplacez-le de manière appropriée.

Il a été automatiquement monté bien qu'il dirait que ce n'est pas monté si vous exécutez la commande mount, vous pouvez vérifier qu'il a été monté en exécutant:

[root@localhost Desktop]# cat /proc/mdstat 
Personalities : [raid1] 
md127 : active (auto-read-only) raid1 sdb2[0]
      1952996792 blocks super 1.2 [2/1] [U_]

unused devices: <none>

Remarquez qu'il a été automatiquement monté sous /dev/md127moi.

Alors ok:

[root@localhost Desktop]# mdadm -A -R /dev/md9 /dev/sdb2 
mdadm: /dev/sdb2 is busy - skipping

[root@localhost Desktop]# mdadm --manage --stop /dev/md/NAS\:0 
mdadm: stopped /dev/md/NAS:0

[root@localhost Desktop]# mdadm -A -R /dev/md9 /dev/sdb2
mdadm: /dev/md9 has been started with 1 drive (out of 2).

[root@localhost Desktop]# mount /dev/md9 /mnt/

Ça l'a fait pour moi.

En cas de doute, DD le lecteur pour faire une copie complète et utiliser CentOS ou autre Linux Live CD.

Eugène.
la source
Cette réponse m'a le plus aidé. Merci! Pour moi, il était également monté sous, /dev/md127donc j'ai émis l'arrêt comme ça mdadm --manage --stop /dev/md127.
Ferenc Géczi
4

Si vous le pouvez, vous devriez faire une ddimage de votre disque entier avant de faire quoi que ce soit, au cas où.

Vous devriez pouvoir monter / dev / sda3 directement une fois libéré mdadm:

mdadm --stop / dev / md2

mount / dev / sda3 / mnt / rescue

Si cela ne fonctionne pas, vous testdiskpouvez généralement trouver des systèmes de fichiers sur des périphériques de blocs bruts.

skorgu
la source
1
Ça ne marche pas pour moi. "mount: type de système de fichiers inconnu 'linux_raid_member'"
Cerin
4

Je l'ai fait par la "voie dure": (d'abord si c'est possible de cloner ce disque avant de faire quoi que ce soit!)

dmesgpour le raid-disque ou essayer (exemple: sdc1)

$ fdisk -l

Modifiez le drapeau RAID-DISK sur votre système de fichiers Linux (ext3 ou quelque chose), enregistrez-le et redémarrez.

Après ça

$ mdadm --zero-superblock /dev/sdx 

et voila tu peux monter

$ mount /dev/sdc1 /mnt
client
la source
1
cela désactivera le RAID et créera un lecteur «normal».
CousinCocaine