[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RiminiLUG-General] grub2 RAID1



On 13/11/2010 16:21, Ivan Tarozzi wrote:
grub-install /dev/sda
grub-install /dev/sdb
[...]
Se mi si rompe hd 2 (già successo) il sistema reagisce bene, parte in
degraded mode e posso poi sostituire l'hd rotto;
se provo a scollegare il primo invece  non riesco a fare il boot.

Lessi qualche tempo fa che il grub2 interpreta anche l'ordine degli HD
impostato nel BIOS, ma non sono ancora riuscito a far quadrare il
cerchio. Quindi in parte mi unisco alla richiesta di Giuseppe, e in
parte mi prendo l'impegno di riprendere a mano la cosa entro i prossimi
giorni :)

premetto... è sempre mattina.. difficile mattina!

Quando dici al sistema grub-install stai implicitamente dando una serie di comandi, infatti è un wrapper a comandi diretti su grub.

prova a vedere il path di grub-install (`which grub-install`) e edita il file...

in ogni caso, il problema è che grub storicamente utilizza un sistema abbastanza barbaro (lilo da questo punto di vista funzionava meglio, motivo per cui ho migrato quando sono stato costretto :) ).
hd -> hard disk
0->N 0->primo disco RICONOSCIUTO (sda), 1-> secondo disco RICONOSCIUTO (sdb), ...
(ricordarsi *RICONOSCIUTO*)
, separatore tra disco e partizione
0->N 0->prima partizione (sda1), 1-> seconda partizione (sda2), ...

già il solo fatto che riconosce i dischi con una notazione diversa rispetto al so fa un po' di casino, ma è anche vero che grub non è utilizzato solo per linux, quindi ci sta...

in ogni caso, supponiamo che nel mio file di configurazione ci sia scritto, dato per assunto che abbiate letto l'altra mail e che quindi sappiate che la configurazione *non* è scritta nell'mbr ma è nel file di conf:
--
label pippo
root (hd0,0)
...
--
e che pippo è quello che carichiamo di default.
prenderò ad esempio il caricamento di grub sull'MBR e non sulla partizione, scelta comunemente utilizzata per poter fare il dual boot (non è oggetto di discussione, ma windows carica il suo boot loader nell'mbr che è la prima cosa che il bios va a leggere)

il sistema ha i primi 2 dischi configurati in mirror software, e quindi diciamo che sda1 e sdb1 siano le due partizioni di boot (ma poteva anche essere quella di root comprensiva di boot).

installiamo con grub-install /dev/sda1, e grub-install /dev/sdb1
in automatico (almeno grub1, ma a vedere dai tutorial anche grub2), si installa grub utilizzando come root il disco locale, quindi al di la del file di configurazione le operazioni minime equivalenti sono:
/dev/sda:
---
grub> root (hd0,0) [uso come root /dev/sda1]
grub> setup (hd0) [installo grub nell'mbr di sda]
---
/dev/sdb:
---
grub> root (hd1,0) [uso come root /dev/sdb1]
grub> setup (hd1) [installo grub nell'mbr di sdb]
---

Ora, immaginiamo di togliere il secondo disco e fare il boot.
il bios vede il primo disco, carica il file di configurazione (tipicamente /boot/grub/grub.conf) da (hd0,0), lo legge, vede che la riga di root per pippo è (hd0,0) riesce a leggere la partizione e funziona tutto.

rimettiamo il secondo disco, facciamo un reboot, funziona tutto, si risincronizzano i dischi etc etc (inutile, ma visto che lo sto scrivendo molto "for dummies" meglio specificare la cosa per evitare un doppio degraded!)

ora spegniamo, e togliamo il PRIMO disco.

il bios, e quindi di conseguenza grub, vedranno quello che per noi era sdb1 come (hd0,0), perché si basano su quello che riconoscono in quel momento. ma dentro sdb1 c'era scritto di andare a prendere la configurazione in (hd1,0), che non è più il nostro sdb1 ma è un altro disco (quello che era sdc, se c'era).

quindi il boot loader carica l'MBR, cerca hd1,0, non lo trova e si incarta...

detto questo, premesso che non lo conosco ancora direttamente... in grub2 esistono soluzioni a questo problema (in grub1 erano più "manuali"), come ad esempio utilizzare l'UUID invece della "partizione numero del disco numero" es: http://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-system-incl-grub2-configuration-ubuntu-10.04-p2

buona lettura ;)

bye
d.