MDADM Superblock Recovery

Dopo un ciclo di spegnimento, ho scoperto che la mia matrice RAID 5 non funziona più. Ho provato vari metodi per rimontare l’array ma nulla ha funzionato finora. Credo di aver bisogno di ricreare i superblocchi e gli UUID in qualche modo , ma ero riluttante a cedere in qualcosa per non perdere un sacco di dati. Grazie per aver letto.

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 

Che è normale Dovrebbe avere unità 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:  

Questo è un problema. Mostra solo un’unità nell’array ed è anche intriggers. L’array dovrebbe avere anche sda, sdc e sde. Quando faccio un mdadm --examine /dev/sdd tutto sembra a posto. Sulle altre unità esamina dice no superblocco RAID su / dev / sdX .

mdadm --examine --scan :

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

Nessun aiuto lì.

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. 

Da questo sembra che non abbia UUID e nessun Superblock per sda, sdc e 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 

Quindi da questo sembra che nessuno dei miei dischi RAID abbia una tabella delle partizioni o UUID. La cosa più vicina che ho trovato nel mio problema era questa discussione , che suggeriva di eseguire mdadm --create /dev/md0 -v -l 5 -n 4 /dev/sda /dev/sdc /dev/sde /dev/sdd e controllare un filesystem valido con fsck -fn /dev/md0 . Tuttavia, il primo comando sputa mdadm: no raid-devices specified. Ho ritentato il comando usando sda1, sdc1, ecc, ma poi ho capito:

 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 

Se faccio un creare e lasciare sda1 come variabile “mancante” nel comando, allora dice solo la stessa cosa per sdc1.

Sono certo che lo sto rendendo più complicato di quanto debba essere. Qualcuno con esperienza può aiutarmi? Grazie per il tuo tempo in anticipo.

* edit * Quando dumpe2fs /dev/sda ottengo:

 dumpe2fs 1.41.14 (22-Dec-2010) Filesystem volume name:  Last mounted on:  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! 

Quindi roba è ancora lì. Ancora alla ricerca …

Yikes! Che sottaceto. vediamo se riusciamo a farti ordinare. A partire da un riepilogo dei dischi e delle tabelle di partizione:

 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. Nessuno di questi è contrassegnato con fd Linux raid autodetect , che è l’impostazione predefinita
  2. Non stai usando le partizioni per organizzare il tuo spazio su disco [0]
  3. Sembra che l’intero disco sia formattato per ext2 / 3 e utilizzi l’intero disco come parte del raidset

L’ultimo punto è dove penso che tu sia stato annullato. Probabilmente gli initscripts pensavano che fosse necessario per un fsck, la sanità mentale controllava i volumi e cancellava il superblocco MD nel processo. dumpe2fs dovrebbe restituire nulla per i volumi parte del set RAID .

Prendi il mio RAID per esempio:

 [email protected]:/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 [email protected]:/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. 

Che tu sia stato in grado di ricreare il set RAID è estremamente fortunato, ma ciò non cambia i difetti fondamentali della tua implementazione. Questo accadrà di nuovo .

Quello che vorrei raccomandare è:

  1. Fai il backup di tutto su quel set RAID
  2. Distruggi la matrice e cancella il superblocco MD da ciascun dispositivo (man mdadm)
  3. Azzerare quei dischi: dd if=/dev/zero of=/dev/sdX bs=1M count=100
  4. Crea partizioni su sda, sdc, sdd e sdf che coprono il 99% del disco [0]
  5. Tagga quelle partizioni come type fd linux-raid wiki
  6. mai e poi mai formattare queste partizioni con alcun tipo di filesystem
  7. Crea un nuovo RAID 5: mdadm –create / dev / md0 -v -f -l 5 -n 4 / dev / sda1 / dev / sdc1 / dev / sdd1 / dev / sde1
  8. Aggiorna il nuovo UUID in /etc/mdadm.conf
  9. Vivere felici e contenti

Presumo dalla tua descrizione che sdb è il tuo disco di sistema, e va bene. Assicurati di non includerlo accidentalmente nella creazione del tuo set raid. Dopo questo, dovresti essere sulla strada giusta e non incontrerai mai più questo problema.

[0] Ho riscontrato un errore molto brutto una volta nei dischi SATA che aveva molti blocchi danneggiati. Dopo aver utilizzato lo strumento fornitore per ricostituire il disco. Il mio insieme di dischi, un tempo identico, era ora unico, il disco cattivo ora aveva pochi blocchi in meno rispetto a prima che iniziasse il formato di basso livello, il che ovviamente rovinò la mia tabella delle partizioni e impedì all’unità di rientrare nel set di MD RAID.

I dischi rigidi di solito hanno una “lista gratuita” di blocchi di backup utilizzati solo per un’occasione. La mia teoria è che tale elenco deve essere stato esaurito e, poiché non si trattava di un disco aziendale, invece di non essere sicuro e di darmi l’opportunità di inviarlo per il recupero dei dati, ha deciso di troncare i miei dati e ridimensionare l’intero disco in.

Pertanto, non utilizzo mai l’intero disco più durante la creazione di un set RAID, e invece utilizzo ovunque dal 95-99% dello spazio disponibile disponibile durante la creazione di una partizione che normalmente si estende su tutto il disco. Questo ti dà anche una maggiore flessibilità quando sostituisci i membri falliti. Ad esempio, non tutti i dischi da 250 GB hanno la stessa quantità di blocchi liberi, quindi se si supera il massimo con un margine comodo, è ansible utilizzare quasi tutte le marche di dischi per sostituire un membro non riuscito.

Ho avuto lo stesso problema prima, e non l’ho documentato (e sono stato un po ‘di tempo fa).

Ricordo qualcosa sull’uso di e2fsck -b /dev/sdX e nel provare i settori di superblocco di backup

potresti anche dare un’occhiata a TestDisk

È passato un po ‘di tempo dal tuo post, ma scriverò questo:

“mdadm: imansible aprire il dispositivo / dev / sdb1: dispositivo o risorsa occupato”

è buono da controllare

cat / proc / mdstat

Immagino che il tuo disco sia collegato ad alcuni raid ex. / Dev / md126

Se è così, ferma il raid

mdadm –stop / dev / md125

e quindi prova a riassemblare raid / dev / md0

mdadm –assemble –verbose –update riepiloghi / dev / md0 / dev / sda3 / dev / sdb3 / dev / sdc3 / dev / sdd3

MA: problema più importante:

NON USARE RAID 5 CON DISCO SUPERIORE A 1,5 TB !!!

Tasso di errore bit irrecuperabile

Questa è la velocità con cui un’unità non sarà in grado di ripristinare i dati dopo l’applicazione di codici CRC (Cyclic Redundancy Check) e ripetizioni multiple. La velocità UBE (Errore bit non recuperabile) viene in genere specificata a 1 bit in 10 ^ 15 per le unità di class enterprise (SCSI, FC, SAS) e 1 bit in 10 ^ 14 per le unità di class desktop (IDE / ATA / PATA, SATA) . (quindi ogni ~ 1,7 TB)

Quindi, se una delle tue unità fallisce, c’è una probabilità del ~ 55% che NON si ricostruirà (per UBE 10 ^ -14) Buona fortuna …

più qui: http://www.raidtips.com/raid5-ure.aspx