giovedì 18 novembre 2010

Ubuntu LST 10.04 raid

Problema:
Installando ubuntu 10.04 64bit tramite cd alternate al riavvio del sistema a fine installazione mi si presentava il seguente problema:
"ALERT! /dev/disk/by-uuid/1323ce7f-5a88-44da-aeb5-93f7573b3871 does not exist. Dropping to a shell!" e il sistema ovviamente non partiva perchè grub 2 non trovava la partizione di root e quella di boot (/dev/md1 e /dev/md0). Mi sembra di aver capito che il problema sia stato risolto in ubuntu 10.10, ma per necessità di stabilità e aggiornamenti avrei dovuto installare una LST quindi ho dovuto trovare una soluzione.

Dopo aver perso quasi 2 giorni per capire dove sbagliavo (e non stavo sbagliando!) nell'installazione di ubuntu 10.04 64bit su 3 hard disk in raid, sono riuscito a risolvere grazie a informazioni trovate ovviamente in rete.
La configurazione dei 3 hard disk da 500 Gb doveva essere (ed è) la seguente:
/dev/sda1 - /dev/sdb1 - /dev/sdc1 = 300 Mb (/boot) in raid 1
/dev/sda2 - /dev/sdb2 - /dev/sdc2 = 20 Gb (/) in raid 5
/dev/sda5 - /dev/sdb5 - /dev/sdc5 = 2 Gb (swap)
/dev/sda6 - /dev/sdb6 - /dev/sdc6 = circa 460 Gb (/home) in raid 5

Per quanto riguarda l'ultima partizione è stata creata utilizzando lo spazio disponibile dopo aver creato le altre sottraendo 10 blocchi. La creazione delle partizioni è stata effettuata con fdisk, dato che il problema mi si presentava dopo l'installazione tramite cd alternate.

Ecco quindi la soluzione... Avviamo ubuntu 10.04 64bit (versione desktop) "Prova ubuntu senza installarlo" e appena caricato il sistema apriamo un terminale (do per scontato che gli hard disk siano privi di partizioni, se così non fosse formattateli o adattate la procedura ai vostri hard disk).
Diventiamo amministratori:
sudo -s
Facciamo le partizioni a nostro piacimento utilizzando fdisk:
fdisk /dev/sda

Non metto tutti i passaggi di fdisk per creare le partizioni (lo schema che ho seguito io è quello scritto precedentemente), per quello basta cercare un pò in rete o leggere le pagine di manuale di fdisk.
Copiamo lo schema di partizionamento sugli altri hard disk:
sfdisk -d /dev/sda | sfdisk /dev/sdb
sfdisk -d /dev/sda | sfdisk /dev/sdc

Ora i tre hard disk sono identici e possiamo procedere con la creazione dei raid e dei file system:
mdadm --create /dev/md0 --verbose --level=1 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1
mdadm --create /dev/md0 --verbose --level=5 --raid-devices=3 /dev/sda2 /dev/sdb2 /dev/sdc2
mdadm --create /dev/md0 --verbose --level=5 --raid-devices=3 /dev/sda6 /dev/sdb6 /dev/sdc6
mkfs.ext4 /dev/md0
mkfs.ext4 /dev/md1
mkfs.ext4 /dev/md2

Nel caso vogliate utilizzare un file system diverso da ext4, adattate il comando mkfs alle vostre esigenze. Le opzioni del comando mdadm sono piuttosto semplici da capire (level è il tipo di raid e raid-device è il numero di hard disk), per conoscere tutte le opzioni come sempre ci sono le pagine di manule.
Ora che abbiamo gli hard disk partizionati, formattati e raiddati (termine ignobile, ma è il primo che mi è venuto in mente :)) possiamo procedere all'installazione mediante l'icona sul desktop.
Procediamo normalmente fino al partizionamento dei dischi dove dovremo scegliere "Specifica manualmente le partizioni (avanzato)" e assegnare i vari punti di mount alle partizioni (nel mio caso md0, md1, md2) e le aree di swap. Non c'è bisogno di formattare le partizioni in quanto lo abbiamo fatto precedentemente.
Continuiamo con i passaggi successivi e completiamo l'installazione.
A fine installazione riprendiamo il terminale (se lo abbiamo chiuso riapriamo e diventiamo di nuovo amministratori "sudo -s")ed entriamo nel sistema installato:
mount /dev/md1 /target/
mount /dev/md0 /target/boot
mount /dev/md2 /target/home
mount --bind /dev/ /target/dev/ 
mount --bind /sys/ /target/sys/ 
mount --bind /proc/ /target/proc/ 
chroot /target

Ora possiamo lavorare nel sistema operativo installato nel sistema operativo installato.
Installiamo mdadm e grub:
apt-get update 
apt-get install mdadmgrub-install /dev/sda
grub-install /dev/sdb 
grub-install /dev/sdc

Io ho installato grub su tutti gli hard disk perchè ho una partizione di boot su ognuno in raid 1.
Ora possiamo riavviare il sistema e verificare che tutto funzioni a dovere e magari fare qualche benchmark sui raid ;)