Installazione di Gentoo con LVM2
1.Introduzione
Questa guida si basa su un esempio fatto con due hard disk IDE. Ciò vuol dire
che molto probabilmente è necessario modificare le unità, i nomi delle
partizioni e le loro dimensioni per essere adattata alla propria configurazione
e alle proprie esigenze.
Attenzione:
Questo documento non deve essere considerato un tutorial su LVM2. Deve servire
da supplemento alla procedura di installazione descritta nella parte 1 del
manuale. E' necessaria la lettura del manuale di installazione
di Gentoo prima di iniziare la procedura di installazione.
|
Nota:
Per un completo HOWTO su LVM si consiglia di visitare
http://tldp.org/HOWTO/LVM-HOWTO
|
Requisiti iniziali
Se si sta effettuando una nuova installazione di Gentoo, occorre un CD
avviabile con il supporto a LVM2, come ad esempio il CD di installazione di
Gentoo. E' possibile trovare il CD di installazione per l'architettura x86
sui nostri mirror sotto
/releases/x86/2005.1-r1/installcd. Altre architetture potrebbero
essere ugualmente supportate.
Se si sta installando LVM2 su un sistema già esistente con dello spazio
disponibile su hard disk, occorre attivare il modulo LVM2
(dm-mod). Questo modulo è disponibile in
gentoo-sources e in vanilla-sources. La
compilazione del kernel e la configurazione di LVM2 viene affrontata più
avanti in questa guida.
Non tutti i kernel della serie 2.4 forniti da Gentoo supportano LVM2!
Attenzione:
L'LVM2 disponibile sui CD di installazione 2005.0 è erroneamente linkato
dinamicamente con la libreria (libgpm) che risiede in /usr. Ciò significa che
non è possibile avere la directory /usr in un ambiente LVM. Si installi
l'ultima versione o la versione 2.0.33 (non -r1) che sono compilate e linkate
staticamente.
|
Partizioni
Il sistema preso in esempio ha due hard disk IDE così partizionati:
- /dev/hda1 -- /boot
- /dev/hda2 -- (swap)
- /dev/hda3 -- /
- /dev/hda4 -- Utilizzato da LVM2
- /dev/hdb1 -- Utilizzato da LVM2
Importante:
Si faccia attenzione ai nomi delle partizioni poichè è facile confondere le
a con le b, e i numeri delle partizioni. Un passo falso potrebbe causare la
cancellazione della partizione sbagliata.
|
2.Installazione
Si segua il manuale, ma con le seguenti correzioni al capitolo 4.
Preparazione dei dischi.
Si utilizzi fdisk come descritto nel manuale, ma si segua lo schema
delle partizioni menzionato sopra. Si ricordi che è solo un esempio, e
che va adattato alle proprie esigenze.
Si crei una piccola partizione fisica per /boot (hda1). In
questo esempio /boot non viene gestita da LVM2. In questa
partizione vengono memorizzati il bootloader e i vari kernel. Una
partizione di 64MB dovrebbe essere sufficientemente grande.
Si crei una partizione di swap (hda2).
Si crei una partizione per / (root) (hda3). Se si fosse interessati a gestire
la partizione di root con LVM (cosa che non raccomandiamo), si può visitare,
nella sezione 'Risorse' alla fine di questa guida, un link ad un mini-howto
su come fare ciò. Non occorre assegnare troppo spazio alla partizione di root
se si decide di tenere /opt, /usr, /home, /var e
/tmp in un volume group (vg) LVM2. In questo caso, 1GB dovrebbe
essere sufficiente.
Nota:
Non si consiglia di inserire le directory seguenti in una partizione
LVM2: /etc, /lib, /mnt,
/proc, /sbin, /dev e /root.
In questo modo sarebbe comunque possibile accedere al sistema (corrotto, ma
ancora in qualche modo utilizzabile) come root, se inauguratamente qualcosa
andasse storto.
|
Supponendo che le partizioni di boot, swap e root non utilizzino
l'intero disco fisico, si crei una quarta partizione sul disco e la si imposti
di tipo 8e (Linux LVM). Se si hanno più dispositivi fisici che si vogliono
utilizzare con LVM, si crei una partizione su ognuno di essi e la si imposti
dello stesso tipo (8e).
Nota:
Considerando le grosse dimensioni dei dischi odierni, si potrebbe pensare di
dividere il proprio hard disk in piccole partizioni anzichè crearne un'unica
grossa da aggiungere in un unico blocco ad un volume group LVM2. Dopo tutto
LVM2 permette di gestire facilmente il ridimensionamento dei volumi. Questa
soluzione lascia alcune partizioni non allocate che potrebbero servire al di
fuori di un gruppo LVM2. In breve, non si deve utilizzare lo spazio su disco
se non è necessario. Per esempio si può pensare di dividere un hard disk da
160 GB in 8 partizioni da 20 GB ciascuna.
|
Si crei il filesystem su /dev/hda1 e /dev/hda3, e si
crei ed attivi la partizione di swap su /dev/hda2 come descritto
nell'handbook.
Si carichi il modulo di LVM2 dm-mod.
Esempio 1: Caricamento del modulo di LVM2 |
# modprobe dm-mod
|
Prima di effettuare lo scan e di attivare LVM, si potrebbe voler editare
/etc/lvm/lvm.conf per escludere alcuni device. Per default, LVM2
effettua lo scan di tutti i devices, persino del CDROM, il che potrebbe
generare messaggi d'errore. Nell'esempio seguente, la linea che consente lo scan
di tutti i device è sostituita da una linea che evita lo scan di tutti i device
tranne i nostri due dischi IDE.
Esempio 2: Attivazione di LVM |
# nano -w /etc/lvm/lvm.conf
filter = [ "a/.*/" ]
filter = [ "a|/dev/hd[ab]|". "r/.*/" ]
# vgscan
Reading all physical volumes. This may take a while...
No volume groups found
# vgchange -a y
|
Si preparino le partizioni.
Esempio 3: Preparazione delle partizioni |
# pvcreate /dev/hda4 /dev/hdb1
No physical volume label read from /dev/hda4
Physical volume "/dev/hda4" successfully created
No physical volume label read from /dev/hdb1
Physical volume "/dev/hdb1" successfully created
|
Si imposti un volume group. Un volume group è la combinazione di più
unità fisiche in un'unica unità logica.
In questo esempio, /dev/hda1, /dev/hda2 e
/dev/hda3 sono le partizioni di /boot, swap e root,
perciò quelle da combinare sono /dev/hda4 e
/dev/hdb1. Questo può essere ottenuto con un singolo comando,
ma, come nell'esempio, prima si creerà il volume group e poi verrà esteso.
Esempio 4: Creazione ed estenzione del volume group |
# vgcreate vg /dev/hda4
/etc/lvm/backup: fsync failed: Invalid argument
Volume group "vg" successfully created
# vgextend vg /dev/hdb1
/etc/lvm/backup: fsync failed: Invalid argument
Volume group "vg" successfully extended
|
Si creino i volumi logici. I volumi logici sono l'equivalente delle partizioni
che verrebbero create utilizzando fdisk in un ambiente non LVM2. Nell'esempio
vengono create le seguenti partizioni:
| Directory |
Dimensione |
| /usr |
10 GB |
| /home |
5 GB |
| /opt |
5 GB |
| /var |
10 GB |
| /tmp |
2 GB |
Dato che si sta utilizzando LVM2 non ci si deve preoccupare molto dello
spazio assegnato alle partizioni perchè queste ultime possono essere
ridimensionate in qualsiasi momento in base alle esigenze.
Nota:
Terje Kvernes ha fatto notare che è più semplice aumentare la dimensione di
una partizione anzichè ridurla. Per questo è conveniente iniziare con
partizioni più piccole ed aumentare le dimensioni quando serve.
|
Esempio 5: Creazione ed estensione dei volumi logici |
# lvcreate -L10G -nusr vg
Logical volume "usr" created
# lvcreate -L5G -nhome vg
# lvcreate -L5G -nopt vg
# lvcreate -L10G -nvar vg
# lvcreate -L2G -ntmp vg
# lvextend -L+5G /dev/vg/home
|
Si creino i filesystem sui volumi logici nello stesso modo in cui si farebbe
sulle normali partizioni. Qui viene utilizzato ext3 ma qualsiasi filesystem
va bene.
Esempio 6: Creazione dei filesystem |
# mke2fs -j /dev/vg/usr
# mke2fs -j /dev/vg/home
# mke2fs -j /dev/vg/opt
# mke2fs -j /dev/vg/var
# mke2fs -j /dev/vg/tmp
|
Come descritto nel manuale si effettui il mount delle partizioni e allo
stesso modo dei volumi logici LVM2 sostituendo però i soliti
/dev/hdxx con /dev/vg/logical_volumename.
Esempio 7: Mount dei volumi logici |
# mkdir /mnt/gentoo/usr
# mount /dev/vg/usr /mnt/gentoo/usr
# mkdir /mnt/gentoo/home
# mount /dev/vg/home /mnt/gentoo/home
# mkdir /mnt/gentoo/opt
# mount /dev/vg/opt /mnt/gentoo/opt
# mkdir /mnt/gentoo/var
# mount /dev/vg/var /mnt/gentoo/var
# mkdir /mnt/gentoo/tmp
# mount /dev/vg/tmp /mnt/gentoo/tmp
|
Nota:
Il resto della procedura di installazione è simile al manuale, perciò d'ora
in avanti verranno evidenziate solo le differenze.
|
Quando si configura il kernel assicurarsi di configurare il supporto
a LVM2 (non tutti i kernel della serie 2.4 lo supportano).
Si selezioni il modulo LVM2 nel modo seguente:
Esempio 8: Selezione del modulo LVM2 in un kernel 2.4.x |
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
< > RAID support
< > Logical volume manager (LVM) support
<M> Device-mapper support
< > Mirror (RAID-1) support
|
Esempio 9: Selezione del modulo LVM2 in un kernel 2.6.x |
Device Drivers --->
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
< > RAID support
<M> Device mapper support
|
Il modulo compilato si chiama dm-mod.ko
Dopo aver compilato il kernel e installato i suoi moduli si aggiunga la riga
seguente al file /etc/modules.autoload.d/kernel-{KV}, dove {KV}
rappresenta la versione del kernel (2.4 o 2.6), in modo da fare caricare il
modulo di LVM2 all'avvio della macchina:
Esempio 10: Aggiunta del modulo di LVM2 in /etc/modules.autoload.d/kernel-2.6 |
# nano -w /etc/modules.autoload.d/kernel-2.6
dm-mod
|
A questo punto si installi il pacchetto lvm2.
Importante:
Ci si assicuri che il link /usr/src/linux punti ai sorgenti del
kernel utilizzato perchè l'ebuild di lvm2 dipende dall'ebuild di device-mapper
che controlla la presenza di un file sorgente richiesto sotto
/usr/src/linux/include/linux.
|
Esempio 11: Installazione del pacchetto lvm2 |
# emerge lvm2
|
Editare /etc/lvm/lvm.conf come descritto precedentemente. Questo file editato
fa parte dell'ambiente di installazione e scomparirà dopo il reboot
successivo. Questa volta si sta editando quello reale all'interno della nuova
installazione Gentoo.
Nel modificare il file /etc/fstab si segua il manuale e si
aggiungano i volumi logici LVM2. Ancora una volta, qui ci sono alcune linee
necessarie per il nostro esempio:
Esempio 12: Frammento di /etc/fstab |
/dev/hda1 /boot ext3 noauto,noatime 1 2
/dev/hda2 none swap sw 0 0
/dev/hda3 / ext3 noatime 0 1
# Volumi Logici
/dev/vg/usr /usr ext3 noatime 0 2
/dev/vg/home /home ext3 noatime 0 2
/dev/vg/opt /opt ext3 noatime 0 2
/dev/vg/var /var ext3 noatime 0 2
/dev/vg/tmp /tmp ext3 noatime 0 2
|
Raggiunta nel manuale la fine della parte relativa all'installazione, ci si
ricordi di effettuare l'umount di tutti i volumi logici LVM2, e si esegua il
comando seguente prima di riavviare:
Esempio 13: Arresto di LVM2 |
# vgchange -a n
|
Una volta riavviata la macchina tutte le partizioni dovrebbero essere
visibili e montate.
3.Continuare Dopo un Reboot
Se l'installazione di Gentoo è stata interrotta in un certo momento e la si
vuole riprendere, per prima cosa si devono creare i device node dei volumi:
Esempio 14: Riattivare i volumi |
# vgscan --mknodes
|
I cd di installazione con tool meno recenti potrebbero necessitare invece di
riattivare i volumi:
Esempio 15: Riattivare i volumi |
# vgexport -a vg
# vgexport -a vg
# vgimport -a vg
# vgchange -a y
|
4.Risorse
5.Ringraziamenti
Si ringrazia Thilo Bangert e Terje Kvernes per il loro aiuto e per i
commenti su questo documento.
|