web-dev-qa-db-fra.com

MDADM Superblock Recovery

Après un cycle d'alimentation, j'ai constaté que mon RAID 5 ne fonctionnait plus. J'ai essayé diverses méthodes pour réassembler le tableau, mais rien n'a fonctionné jusqu'à présent. Je crois que j'ai besoin de recréer les superblocs et les UUID d'une manière ou d'une autre , mais j'ai été réticent à l'idée de créer quelque chose qui ne perd pas beaucoup de données. Merci d'avoir lu.

cat /etc/mdadm/mdadm.conf:

DEVICE partitions
ARRAY /dev/md0 level=raid5 num-devices=4 metadata=0.90 UUID=fd522a0f:2de72d76:f2afdfe9:5e3c9df1
MAILADDR root

Ce qui est normal Il devrait avoir des disques 4x2000GB (sda, sdc, sde, sdd).

cat /proc/mdstat:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : inactive sdd[1](S)
  1953514496 blocks

unused devices: <none>

C'est un problème. Il ne montre qu'un seul lecteur dans la matrice et il est également inactif. Le tableau devrait également contenir sda, sdc et sde. Quand je fais un mdadm --examine /dev/sdd tout va bien. Sur les autres lecteurs, examinez aucun superbloc RAID sur/dev/sdX .

mdadm --examine --scan:

ARRAY /dev/md0 level=raid5 num-devices=4 metadata=0.90 UUID=fd522a0f:2de72d76:f2afdfe9:5e3c9df1

Aucune aide là-bas.

mdadm --assemble --scan -v:

mdadm: looking for devices for /dev/md0
mdadm: no RAID superblock on /dev/sde
mdadm: /dev/sde has wrong uuid.
mdadm: cannot open device /dev/sdd: Device or resource busy
mdadm: /dev/sdd has wrong uuid.
mdadm: no RAID superblock on /dev/sdc
mdadm: /dev/sdc has wrong uuid.
mdadm: cannot open device /dev/sdb5: Device or resource busy
mdadm: /dev/sdb5 has wrong uuid.
mdadm: no RAID superblock on /dev/sdb2
mdadm: /dev/sdb2 has wrong uuid.
mdadm: cannot open device /dev/sdb1: Device or resource busy
mdadm: /dev/sdb1 has wrong uuid.
mdadm: cannot open device /dev/sdb: Device or resource busy
mdadm: /dev/sdb has wrong uuid.
mdadm: no RAID superblock on /dev/sda
mdadm: /dev/sda has wrong uuid.

À partir de cela, il semble que je n’ai pas d’UUID ni de superblocs pour sda, sdc et sde.

Sudo fdisk -l

Disk /dev/sda: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

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

Disk /dev/sdb: 250.1 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488395055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x353cf669

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63   476327249   238163593+  83  Linux
/dev/sdb2       476327250   488392064     6032407+   5  Extended
/dev/sdb5       476327313   488392064     6032376   82  Linux swap / Solaris

Disk /dev/sdc: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

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

Disk /dev/sdd: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

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

Disk /dev/sde: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

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

Il semble donc qu'aucun de mes disques RAID ne possède de table de partition ou d'UUID. La chose la plus proche de mon problème était this thread , qui suggérait d'exécuter mdadm --create /dev/md0 -v -l 5 -n 4 /dev/sda /dev/sdc /dev/sde /dev/sdd et de rechercher un système de fichiers valide avec fsck -fn /dev/md0. Cependant, la première commande spit out mdadm: no raid-devices specified. J'ai réessayé la commande en utilisant sda1, sdc1, etc., mais j'ai alors ceci:

mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: super1.x cannot open /dev/sda1: No such file or directory
mdadm: ddf: Cannot open /dev/sda1: No such file or directory
mdadm: Cannot open /dev/sda1: No such file or directory
mdadm: device /dev/sda1 not suitable for any style of array

Si je crée et laisse sda1 en tant que variable "manquante" dans la commande, elle indique simplement la même chose pour sdc1.

Je suis sûr de rendre cela plus compliqué que nécessaire. Est-ce que quelqu'un d'expérience peut m'aider s'il vous plaît? Merci pour votre temps d'avance.

* modifier * Quand j'exécute dumpe2fs /dev/sda j'obtiens:

dumpe2fs 1.41.14 (22-Dec-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          bbe6fb91-d37c-414a-8c2b-c76a30b9b5c5
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype     needs_recovery sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              366288896
Block count:              1465135872
Reserved block count:     73256793
Free blocks:              568552005
Free inodes:              366066972
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      674
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Filesystem created:       Wed Oct 28 12:23:09 2009
Last mount time:          Tue Oct 18 13:59:36 2011
Last write time:          Tue Oct 18 13:59:36 2011
Mount count:              17
Maximum mount count:      26
Last checked:             Fri Oct 14 17:04:16 2011
Check interval:           15552000 (6 months)
Next check after:         Wed Apr 11 17:04:16 2012
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      17e784d8-012e-4a29-9bbd-c312de282588
Journal backup:           inode blocks
Journal superblock magic number invalid!

Donc, les choses sont toujours là. Toujours à la recherche ...

6
Teque5

Beurk! Quel cornichon. Voyons si nous pouvons vous aider à faire le tri. Commençons par un récapitulatif de vos disques et de vos tables de partition:

sda - no partition table
sdb - sdb1 [Linux] sdb2 [Linux extended] sdb5 [swap]
sdc - no partition table
sdd - no partition table
sde - no partition table
  1. Aucun d’entre eux n’est marqué . Fd Linux RAID autodetect , valeur par défaut.
  2. Vous n'utilisez pas de partitions pour organiser votre espace disque [0]
  3. Vous semblez avoir la totalité du disque formaté pour ext2/3 et utilisez la totalité du disque dans le raidset

Le dernier point est l'endroit où je pense que vous avez été défait. Les initscripts pensaient probablement que vous deviez un fsck, sanity a vérifié les volumes et a effacé le superbloc MD au cours du processus. dumpe2fs ne doit rien renvoyer pour les volumes faisant partie de l'ensemble RAID .

Prenons mon RAID par exemple:

root@mark21:/tmp/etc/udev# fdisk -l /dev/sda

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000ffc4

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048  1240233983   620115968   fd  Linux raid autodetect

root@mark21:/tmp/etc/udev# dumpe2fs /dev/sda1
dumpe2fs 1.41.14 (22-Dec-2010)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sda
Couldn't find valid filesystem superblock.

Le fait que vous ayez pu recréer l'ensemble RAID est extrêmement chanceux, mais cela ne change en rien les défauts fondamentaux de votre déploiement. Cela se reproduira .

Ce que je recommanderais, c'est:

  1. Tout sauvegarder sur cet ensemble de raid
  2. Détruire le tableau et effacer le superbloc md de chaque périphérique (man mdadm)
  3. Mettez ces disques à zéro: dd if=/dev/zero of=/dev/sdX bs=1M count=100
  4. Créez des partitions sur sda, sdc, sdd et sdf couvrant 99% du disque [0]
  5. Marquez ces partitions avec type fdwiki de linux-raid
  6. ne jamais formater ces partitions avec aucun système de fichiers
  7. Créez un nouveau RAID 5: mdadm --create/dev/md0 -v -f -l 5 -n 4/dev/sda1/dev/sdc1/dev/sdd1/dev/sde1
  8. Mettre à jour le nouvel UUID dans /etc/mdadm.conf
  9. Vivre heureux pour toujours

Je suppose que d'après votre description, sdb est votre disque système, et c'est bien. Assurez-vous simplement de ne pas inclure accidentellement cela dans la création de votre ensemble de raids. Après cela, vous devriez être sur la bonne voie et vous ne rencontrerez plus jamais ce problème.

[0] J'ai rencontré une très mauvaise erreur une fois sur des disques SATA contenant beaucoup de blocs défectueux. Après avoir utilisé l'outil du fournisseur pour reconstituer le disque. Mon jeu de disques autrefois identique était maintenant unique, le disque défectueux avait maintenant quelques blocs de moins qu'avant le début du formatage de bas niveau, ce qui a bien sûr ruiné ma table de partitions et empêché le lecteur de rejoindre le jeu MD RAID.

Les disques durs ont généralement une "liste libre" de blocs de sauvegarde utilisés uniquement pour une occasion. Ma théorie est que cette liste doit avoir été épuisée, et comme il ne s'agit pas d'un disque d'entreprise, au lieu d'échouer en toute sécurité et de me permettre de l'envoyer pour récupération de données, il a été décidé de tronquer mes données et de redimensionner l'ensemble. disque dans.

Par conséquent, je n'utilise plus l'intégralité du disque lors de la création d'un ensemble RAID, mais plutôt entre 95 et 99% de l'espace disponible lors de la création d'une partition couvrant normalement l'intégralité du disque. Cela vous donne également une flexibilité supplémentaire lors du remplacement de membres en échec. Par exemple, tous les disques de 250 Go ne disposent pas du même nombre de blocs libres. Par conséquent, si vous dépassez le maximum avec une marge confortable, vous pouvez utiliser presque toutes les marques de disques pour remplacer un membre défaillant.

4
ppetraki

J'ai eu le même problème avant, et je ne l'ai pas documenté (et c'était il y a un moment).

Je me souviens de quelque chose sur l'utilisation de e2fsck -b <superblockSector> /dev/sdX et d'essayer secteurs de superbloc de sauvegarde

vous pouvez également jeter un oeil à TestDisk

1
Thermionix

Cela fait un moment depuis votre post, mais je vais écrire ceci:

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

c'est bien de vérifier

cat/proc/mdstat

Je suppose que votre lecteur est attaché à un ex raid./dev/md126

Si oui, arrêtez le raid

mdadm --stop/dev/md125

et ensuite essayez de vous rassembler raid/dev/md0

mdadm --assemble --verbose - résumés de mises à jour/dev/md0/dev/sda3/dev/sdb3/dev/sdc3/dev/sdd3

MAIS: question plus importante:

N'UTILISEZ PAS RAID 5 AVEC UN DISQUE SUPÉRIEUR À 1.5 TB !!!

Taux d'erreur sur les bits irrécupérable

Il s'agit de la vitesse à laquelle un lecteur sera incapable de récupérer des données après l'application de codes de contrôle de redondance cyclique (CRC) et de nouvelles tentatives. Le taux UBE (Unrecoverable Bit Error) est généralement spécifié à 1 bit sur 10 ^ 15 pour les lecteurs de classe entreprise (SCSI, FC, SAS) et 1 bit sur 10 ^ 14 pour les lecteurs de bureau (IDE/ATA/PATA, SATA). . (donc tous les ~ 1,7 To)

Donc, si l'un de vos lecteurs tombe en panne, il y a environ 55% de chances qu'il ne reconstruise pas (pour UBE 10 ^ -14) Bonne chance .. .

plus ici: http://www.raidtips.com/raid5-ure.aspx

0
sirkubax