Che cosa dice initramfs o il process di avvio di Ubuntu Server come assemblare arrays RAID?

La semplice domanda: come initramfs sapere come assemblare arrays mdadm RAID all'avvio?

Il mio problema: avvio il mio server e ottieni:

Gave up waiting for root device. ALERT! /dev/disk/by-uuid/[UUID] does not exist. Dropping to a shell! 

Ciò accade perché / dev / md0 (che è / boot, RAID 1) e / dev / md1 (che è /, RAID 5) non vengono assemblati correttamente. Quello che ottengo è / dev / md0 non è affatto assemblato. / dev / sd2, / dev / sdb2, / dev / sdc2 e / dev / sdd2 utilizza / dev / sda, / dev / sdb, / dev / sdc, / dev / md1, dev / sdd.

Per risolvere questo problema e avviare il mio server, faccio:

 $(initramfs) mdadm --stop /dev/md1 $(initramfs) mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 $(initramfs) mdadm --assemble /dev/md1 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2 $(initramfs) exit 

E funziona correttamente e tutto funziona. Ora ho solo bisogno delle matrici RAID per assemblare correttamente al boot quindi non dovrei assemblare manualmente. Ho verificato /etc/mdadm/mdadm.conf e gli UUID dei due arrays elencati in quel file corrispondono agli UUID da $ mdadm --detail /dev/md[0,1] .

Altri dettagli: Ubuntu 10.10, GRUB2, mdadm 2.6.7.1

UPDATE: Ho una sensazione che ha a che fare con superblocks. $ mdadm --examine /dev/sda esegue la stessa cosa di $ mdadm --examine /dev/sda2 . $ mdadm --examine /dev/sda1 sembra benissimo perché emette informazioni su /dev/md0 . Non so se questo è il problema o no, ma sembra che sia compatibile con /dev/md1 assemblato con /dev/sd[abcd] anziché /dev/sd[abcd]2 .

Ho tentato di azzerare il superblock su /dev/sd[abcd] . Questo ha rimosso il superblock da /dev/sd[abcd]2 e mi ha impedito di poter assemblare /dev/md1 affatto. Ho dovuto $ mdadm --create per riprenderlo. Questo ha anche messo i blocchi super al modo in cui sono stati.

  • Due tipi di Ubuntu VM su AWS - qual è la differenza?
  • Ripristino del kernel nel server Ubuntu 9.10 con apt-get?
  • File di controllo su una casella Debian
  • Soluzione per l'installazione di pip installare -E
  • Come rimuovere un disco difettoso da LVM2 con la minore perdita di dati in altri PV?
  • Docker compone i volumi di caratteri non validi
  • Forzare l'indirizzo email cron viene inviato da
  • Cerca pacchetti non disponibili (backports e terze parti)
  • 7 Solutions collect form web for “Che cosa dice initramfs o il process di avvio di Ubuntu Server come assemblare arrays RAID?”

    Ben guardando gli script usati per assemblare gli initramfs, penso che il problema è probabilmente solo che il tuo /etc/mdadm/mdadm.conf è scaduto.

    Quando il sistema è in su con gli arrays si assemblano, eseguire il seguente command per aggiornare la configuration di mdadm. Potresti voler duplicarlo anche nel caso in cui.

     mdadm --detail --scan > /etc/mdadm/mdadm.conf 

    Una volta fatto, aggiorna i tuoi initramf con:

     update-initramfs 

    Se ciò non riesce, i tuoi superblock (i metadati utilizzati per assemblare gli arrays) possono essere sparati. Potrebbe essere utile esaminare ciascuna unità e le partizioni da verificare. Peggio caso, zero out superblocks via mdadm e ricreare.

    Sembra che i tuoi initramfs siano stati creati quando l'installazione RAID era errata (o solo diversa da adesso) e non è stata aggiornata.

    Potresti eseguire update-initramfs (normalmente eseguito dopo gli aggiornamenti del kernel) e speriamo che questo ricostruirà il tuo file initramfs, incluso la creazione dei file di configuration dei raid giusti.

    Ecco una soluzione che ho scoperto:

    Aggiungere questo script a /etc/initramfs-tools/scripts/local-top :

      #!/bin/sh sleep 6 mdadm --stop /dev/md1 mdadm --stop /dev/md0 sleep 6 mdadm --assemble --scan 

    Questo corregge gli arrays RAID prima che il sistema tenta di montare md1 in /root . Ho dovuto aggiungere le pause in modo da get i comandi a lavorare in modo coerente.

    Questo in realtà non risolve il problema, ma è la soluzione migliore che ho scoperto che non richiede la modifica degli arrays RAID o il software di aggiornamento.

    Ho lo stesso problema e ho trovato questo collegamento che spiega perché succede: https://bugs.launchpad.net/ubuntu/+source/debian-installer/+bug/599515 sembra che la tua partizione sda2 va fino al fine del disco e sovrascrive il superblock del disco, in modo che sda ​​e sda2 siano le stesse cose per mdadm e finisce per assemblare md1 con sda invece che sda2

    Per rispondere alla domanda: sì, ha a che fare con superblocks. La documentazione tecnica è qui: https://raid.wiki.kernel.org/index.php/RAID_superblock_formats

    Sono / dev / sd [abcd] 2 impostati come tipo "fd" (rilevamento automatico RAID) nella tabella delle partizioni? Eseguire fdisk -l | less fdisk -l | less per vedere le tabelle delle partizioni. Sembra che l'initrd non rileva le partizioni, ma poi sul dispositivo crudo sta vedendo il superblock. O potrebbe essere che ci sia un errore mdadm.conf sull'initrd, ma mi aspetterei che l' update-initramfs lo risolveresti.

    È ansible estrarre l'initrd creando una directory, cd in esso e quindi eseguire:

     gunzip </path/to/initrd | cpio -ivd 

    Quindi puoi vedere tutti i file che compongono l'initrd e tutti gli script in esecuzione. L'esame di questi può aiutare a individuare ciò che esattamente sta causando.

    Ma prima controllare le tabelle delle partizioni …

    Problema simile con RAID + LVM su una casella Debian Lenny. Prima di uscire dalla shell initramfs fare:

     $(initramfs) vgchange MyLvmVol -ay $(initramfs) exit 

    poi

     update-initramfs -u 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.