Configurazione RAID 1 su UBUNTU server 8 con LVM2

Stranamente su ubuntu server 8 64bit (non ho verificato sulle altre versioni), la macchina configurata in raid 1 software, dopo l’estrazione di un disco non riesce a fare il boot, nonostante il grub sia correttamente installato su entrambi i dischi.

Nella sezione help relativa di Ubuntu ho trovato temporaneamente questa soluzione che consisite nel modificare il file

/usr/share/initramfs-tools/scripts/local

aggiungendo subito dopo la riga

# We’ve given up, but we’ll let the user fix matters if they can”.

il seguente blocco:

# The following code was added to allow degraded RAID arrays to start
if [ ! -e “${ROOT}” ] || ! /lib/udev/vol_id “${ROOT}” >/dev/null 2>&1; then
# Try mdadm and allow degraded arrays to start in case a drive has failed
log_begin_msg “Attempting to start RAID arrays and allow degraded arrays”
/sbin/mdadm –assemble –scan
log_end_msg
fi

Utilizzando però il Logical Volume Manager (LVM) apoggiato su una partizione RAID, il workaround comunque non funziona. Facendo qualche test ho avuto ottimi risultati SOLO facendo qualche modifica rispetto a quanto suggerito nell’articolo:

# The following code was added to allow degraded RAID arrays to start
if [ ! -e “${ROOT}” ] || ! /lib/udev/vol_id “${ROOT}” >/dev/null 2>&1; then
# Try mdadm and allow degraded arrays to start in case a drive has failed
log_begin_msg “Attempting to start RAID arrays and allow degraded arrays”
/sbin/mdadm –assemble -f –scan
log_end_msg
echo ” ATTENZIONE è stato forzato un assemble del raid, verificare dischi ”
sleep 10
fi

NOTA del 17-10-2008: ho effettuato questa correzione anche nell’articolo originale… non so se poi verrà mantenuta (?!).


Ho cioè aggiunto una semplice pausa di 10 secondi.

Successivamente biogna aggiornare l’initramfs (anche qui l’articolo da un suggerimento leggermente diverso dal mio):

update-initramfs -u -k $(uname -r)

per aggiornare solo l’initramfs del kernel attivo oppure

update-initramfs -u -k all

per aggiornare tutti quelli che trova.

Al primo reboot con disco mancante può metterci qualche minuto prima di paritire (180 secondi).

Per ovviare a questo tempo, si può modificare anche il seguente blocco (la terza riga in origine aveva slumber impostato a 180 come si legge nel commento):

# Default delay is 180s
if [ -z “${ROOTDELAY}” ]; then
slumber=30
else
slumber=${ROOTDELAY}
fi

Se alcuni array device non vengono avviati automaticamente, basta lanciare dopo il boot mdadm –assemble /dev/md….

Leave a Reply

Your email address will not be published. Required fields are marked *