Installare Debian Sarge direttamente su un RAID software
VERSIONE 3.0 per ETCH e GRUB
Il problema di avere il boot sul raid1 e` che se il primo disco muore, sarebbe bello poter fare il boot dal secondo. Premesso che non tutti i BIOS permettono il boot dal secondo disco, e che non e` cosi` detto che poi GRUB riesca a bootare dal secondo disco (cioe` a caricare il kernel correttamente), il miglior tentativo che si possa fare per prevenire tutti i problemi e` il seguente.
Dopo aver installato GRUB nell' MBR del primo disco (da dentro all'installer di Debian) e aver fatto il primo reboot, occorre prima di tutto installare GRUB correttamente anche sul secondo disco, dicendogli pero` che il kernel va cercato sul secondo disco (altrimenti il grub del secondo disco cerca il kernel sul primo disco, e se il primo disco e` rotto...)
I comandi che seguono vanno dati da root: il primo comando (grub) lancia grub, i seguenti fino a quit sono dati dentro la console di grub stesso.
grub root (hd0,0) setup (hd0) root (hd1,0) setup (hd1) quit
Poi e` opportuno (ma non fondamentale) modificare /boot/grub/menu.lst aggiungendo una copia della configurazione del kernel utile per bootare dal secondo disco se il primo e` rotto. Se non si fa questo passo, in caso di boot dal secondo disco occorre modificare al volo le righe di configurazione durante il boot mettendo (hd1,0) al posto di (hd0,0). La modifica consiste nel duplicare la configurazione del kernel che si vuole usare modificando solo la definizione del disco nel quale Grub deve cercare il kernel.
Se la configurazione prima era:
title Debian GNU/Linux, kernel 2.6.18-5-amd64 root (hd0,0) kernel /boot/vmlinuz-2.6.18-5-amd64 root=/dev/md0 ro initrd /boot/initrd.img-2.6.18-5-amd64 savedefault
La nuova configurazione sara`:
title Debian GNU/Linux, kernel 2.6.18-5-amd64 (disco primario) root (hd0,0) kernel /boot/vmlinuz-2.6.18-5-amd64 root=/dev/md0 ro initrd /boot/initrd.img-2.6.18-5-amd64 savedefault title Debian GNU/Linux, kernel 2.6.18-5-amd64 (disco secondario) root (hd1,0) kernel /boot/vmlinuz-2.6.18-5-amd64 root=/dev/md0 ro initrd /boot/initrd.img-2.6.18-5-amd64 savedefault
La seconda sezione e` copiata pari dalla prima, sono stati cambiati solo i titoli delle sezioni allo scopo di rendere piu` chiaro a cosa servono, e nella seconda sezione la riga "root" e` modificata da hd0 a hd1.
VERSIONE 2.0 per SARGE
Questa versione e` totalmente rifatta, basandomi su un paio di installazioni che ho fatto in seguito. In fondo trovate la vecchia versione, noterete che e` totalmente diversa.
- Lanciare l'installazione
- fra i moduli per l'installer, scegliere quello dei dischi raid (md qualcosa)
Arrivati al momento di fare le partizioni sul disco, scegliere la procedura manuale
- E` importante creare partition tables nuove sui dischi, rasando qualsiasi rimasuglio di roba che ci fosse prima. Per farlo, nell'installer, occorre scegliere la riga che presenta il disco intero e dire di crearci una nuova partizione, non cercare di cancellare singolarmente eventuali partizioni che fossero gia` sul disco prima.
- creare sul disco 1 una partizione di tipo "raid autodetect" per ognuna delle partizioni che si vorranno avere alla fine (per dire, una per root e una per lo swap come minimo, se si vuole mettere anche lo swap in RAID)
- creare sul disco 2 partizioni di tipo "raid autodetect" identiche al disco 1 (ovviamente puo` restare spazio vuoto alla fine, che puo` essere usato non dentro il raid)
- ora, creare i volumi MD (uno per root e uno per swap, nel nostro esempio)
- Configurare ognuno dei volumi MD per l'uso che vogliamo (ext3 e swap)
Ora, disponiamo di un device RAID1 (o 5) per installare "/" e uno per installare lo swap (se stiamo facendo il setup con root e swap tutti e due in raid).
Se i dischi erano usati, e` probabile che dentro ci sia della robaccia che potrebbe non andare giu` all'installer, quindi sulla seconda console diamo un bel "dd if=/dev/zero of=/dev/md/0" e lo lasciamo girare 30 secondi per spazzare via la parte iniziale del contenuto di /dev/md0.
- Uscire e rientrare dal partizionatore in modo da fargli capire che il disco md0 e` vuoto (pieno di zeri)
- Selezionare lo spazio libero nei vari device RAID e configurarlo per essere usato come quello che si vuole (md0 sara` ext3 montato come "/")
- Uscire dal partizionatore, salvando tutto. Dovrebbe formattare in ext3 senza dare errori di alcun tipo.
- Procedere con l'install dal base system
IMPORTANTE: installare LILO scegliendo l'opzione "installa in MBR" dentro a "/dev/md/0"
IMPORTANTE: Non tentare di rendere bootabile /dev/md/0, quindi rispondere NO quando LILO lo chiede
- Lilo dovrebbe installarsi senza rompere, e siete di nuovo al menu` principale dell'installer. Ora occorre modificare un paio di cose.
- Passare alla seconda console con "alt-f2" e:
- Verificare che /dev/md/0 sia montato sotto /target (dovrebbe esserlo)
Eseguire chroot /target
Editare lilo.conf con vi /etc/lilo.conf
- Inserire in testa al file queste righe: (/dev/hda e /dev/hdc sono i dischi fisici, nell'esempio)
raid-extra-boot=/dev/hda,/dev/hdc lba32
Eseguire lilo -v e vedere l'output, dovrebbe elencare il fatto che sta creando copie del boot sector tutti e due i dischi fisici che compongono il raid.
- Se ha funzionato, uscire dal chroot e procedere con l'installazione.
IMPORTANTE: non riavviare fino alla fine del sync del raid.
VERSIONE 1.0 (obsoleta? boh!)
Teoricamente con il nuovo installer installare direttamente la root su un raid software (1,0, o 5) dovrebbe essere semplice, invece non lo e` affatto. Vuoi perche` l'installer di Sarge non e` il massimo, vuoi perche` ci sono alcuni accorgimenti non banali da prendere in considerazione.
Il bello di questo metodo e` che usando un raid ridondante (1 o 5) e una macchina con un BIOS non proprio decrepito, il sistema boota senza problemi anche se si rompe il disco primario, perche` il boot sector e` copiato anche sul secondo disco. Il boot sector sara` correttamente creato su tutti e due i dischi ogni volta che si lancera` LILO, anche dopo l'installazione.
Questa procedura e` scritta a memoria quindi potrei avere fatto errori. La prima volta che installo una macchina nuova la controllo passo passo.
L'esempio che segue vale per il raid1, ma per le altre versioni la sostanza non cambia.
- Lanciare l'installazione
- fra i moduli per l'installer, scegliere quello dei dischi raid (md qualcosa)
Arrivati al momento di fare le partizioni sul disco, scegliere la procedura manuale
- creare sul disco 1 una partizione di tipo "raid autodetect" grande quanto si vuole e renderla bootabile (io suggerirei tutto il disco meno lo swap space, posto che i due dischi siano uguali. altrimenti, grande come il piu` piccolo dei dischi)
- creare sul disco 2 una partizione di tipo "raid autodetect" compatibile con quella fatta sul disco 1 e renderla bootabile
- creare le partizioni rimanenti se ce ne sono (swap, per dire)
- Scegliere l'opzione per gestire volumi MD
- Creare un nuovo volume MD, usando tutti e due i dischi (le partizioni di tipo "raid autodetect" prima create)
- Ora, in fondo alla lista dei dischi, dovrebbe esserci un nuovo "disco virtuale" che e` il device MD appena creato.
IMPORTANTE: selezionare il device cosi` creato e crearvi sopra una nuova partizione, NON UN FILE SYSTEM. Cosi` facendo si scrive una partition table dentro a /dev/md/0 (o /dev/md0) che servira` dopo per installare LILO. Non facendolo, tutto funziona ma LILO non si installera`.
- Ora, creare un file system (ext3 o quello che volete) dentro alla partizione dentro /dev/md0.
- salvare tutte le modifiche e procedere nella formattazione e installazione fino ad arrivare a installare LILO.
IMPORTANTE: installare LILO scegliendo l'opzione "installa in MBR" dentro a "/dev/md/0"
IMPORTANTE: Non tentare di rendere bootabile /dev/md/0, quindi rispondere NO quando LILO lo chiede
- Lilo dovrebbe installarsi senza rompere, e siete di nuovo al menu` principale dell'installer. Ora occorre modificare un paio di cose.
- Passare alla seconda console con "alt-f2" e:
- Verificare che /dev/md/0 sia montato sotto /target (dovrebbe esserlo)
Eseguire chroot /target
Editare lilo.conf con vi /etc/lilo.conf
- Inserire in testa al file queste righe:
raid-extra-boot=mbr lba32
Eseguire lilo -v e vedere l'output, dovrebbe elencare il fatto che sta creando copie del boot sector tutti e due i dischi fisici che compongono il raid.
- Se ha funzionato, uscire dal chroot e procedere con l'installazione.
Note:
- non sono sicuro che sia necessario rendere le partizioni sui dischi fisici bootabili
- mi e` capitato che ribootando mentre il RAID si stava ancora sincronizzando per la prima volta (e` normale che sincronizzi appena lo si crea) poi il kernel non trovasse piu` le partizioni di tipo "raid autodetect" e quindi andasse in panic. Dovrei verificare se e` normale e se c'e` modo di evitare che succeda. Eventualmente si puo` disattivare uno dei dischi, ribootare, e poi riattivarlo (con mdadm)
- Se in futuro capitera` di cambiare un disco perche` e` rotto, ricordarsi di rilanciare LILO per creare il boot sector sul nuovo disco (oltre che ovviamente ricreare il RAID)