Installazione di Gentoo con LVM2
1.
Introduzione
Questa guida si basa su un esempio fatto con due hard disk SATA. 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.
Avvertenza:
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 una guida completa 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 mirror di Gentoo sotto
/releases/x86/current/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)
nel kernel. Questo modulo è disponibile in gentoo-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!
Partizioni
Il sistema preso in esempio ha due hard disk SATA così partizionati:
- /dev/sda1 -- /boot
- /dev/sda2 -- (swap)
- /dev/sda3 -- /
- /dev/sda4 -- Utilizzato da LVM2
- /dev/sdb1 -- Utilizzato da LVM2
Importante:
Fare 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.
|
Ok, ora si comincia...
2.
Installazione
Seguire il manuale, ma con le seguenti correzioni al capitolo 4. Preparazione
dei dischi.
Utilizzare fdisk come descritto nel manuale, ma seguendo lo schema delle
partizioni menzionato sopra. Ricordarsi che è solo un esempio, e che va
adattato alle proprie esigenze.
Creare una piccola partizione fisica per /boot (sda1). 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.
Creare una partizione di swap (sda2).
Creare una partizione per / (root) (sda3). 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-guida 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 malauguratamente qualcosa
andasse storto.
|
Supponendo che le partizioni di boot, swap e root non utilizzino
l'intero disco fisico, creare una quarta partizione sul disco ed impostarla di
tipo 8e (Linux LVM). Se si hanno più dispositivi fisici che si vogliono
utilizzare con LVM, creare una partizione su ognuno di essi ed impostarla 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.
|
Creare il filesystem su /dev/hda1 e /dev/hda3, e
creare ed attivare la partizione di swap su /dev/hda2 come
descritto nel manuale Gentoo.
Avviare il servizio lvm.
Codice 2.1: Avvio del servizio lvm |
# rc-config start lvm
|
È consigliato aggiungere il servizio lvm al runlevel boot. In questo modo
LVM2 sarà attivato ogni volta che si avvia il sistema.
Codice 2.2: Aggiungere lvm al runlevel boot |
# rc-config add lvm boot
|
Prima di effettuare lo scan e di attivare LVM, si potrebbe voler modificare
/etc/lvm/lvm.conf per escludere alcuni dispositivi. In modo
predefinito, LVM2 effettua la scansione di tutti i dispositivi, persino del
CDROM, il che potrebbe generare messaggi d'errore. Nell'esempio seguente, la
linea che consente la scansione di tutti i dispositivi è sostituita da una linea
che evita la scansione di tutti i dispositivi tranne i propri due dischi SATA.
Codice 2.3: Attivazione di LVM |
# nano -w /etc/lvm/lvm.conf
filter = [ "a/.*/" ]
filter = [ "a|/dev/sd[ab]|", "r/.*/" ]
# vgscan
Reading all physical volumes. This may take a while...
No volume groups found
# vgchange -a y
|
Preparare le partizioni.
Codice 2.4: Preparazione delle partizioni |
# pvcreate /dev/sda4 /dev/sdb1
No physical volume label read from /dev/sda4
Physical volume "/dev/sda4" successfully created
No physical volume label read from /dev/sdb1
Physical volume "/dev/sdb1" successfully created
|
Impostare un volume group. Un volume group è la combinazione di più unità
fisiche in un'unica unità logica.
In questo esempio, /dev/sda1, /dev/sda2 e
/dev/sda3 sono le partizioni di /boot, swap e root,
perciò quelle da combinare sono /dev/sda4 e
/dev/sdb1. Questo può essere ottenuto con un singolo comando, ma,
come nell'esempio, prima si creerà il volume group e poi verrà esteso.
Codice 2.5: Creazione ed estenzione del volume group |
# vgcreate vg /dev/sda4
/etc/lvm/backup: fsync failed: Invalid argument
Volume group "vg" successfully created
# vgextend vg /dev/sdb1
/etc/lvm/backup: fsync failed: Invalid argument
Volume group "vg" successfully extended
|
Creare 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.
|
Codice 2.6: 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
|
Creare i filesystem sui volumi logici nello stesso modo in cui si farebbe sulle
normali partizioni. Qui viene utilizzato ext3 ma qualsiasi filesystem va bene.
Codice 2.7: 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 effettuare il mount delle partizioni e allo stesso
modo dei volumi logici LVM2 sostituendo però i soliti /dev/hdxx con
/dev/vg/logical_volumename.
Codice 2.8: 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). Selezionare il modulo LVM2 nel
modo seguente:
Codice 2.9: Selezione del modulo LVM2 in un kernel 2.4.x |
Multiple devices driver 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
|
Codice 2.10: 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
Nel caso in cui /usr o /var sono su una partizione LVM
occorre creare anche un'immagine initramfs. Non dimenticare poi di modificare i
file di configurazione del proprio bootloader in modo da effettuare il boot con
l'immagine initramfs appena creata (aggiungere dolvm ai parametri di
boot).
Codice 2.11: Creare un'immagine initramfs |
# emerge genkernel
# genkernel --lvm --install initramfs
# nano -w /boot/grub/grub.conf
title Gentoo Linux
root (hd0,0)
kernel /kernel-3.2.2-gentoo-r5 root=/dev/sda1 dolvm
initrd /initramfs-genkernel-x86_64-3.2.2-gentoo-r5
|
A questo punto installare il pacchetto lvm2.
Importante:
Assicurarsi 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.
|
Codice 2.12: Installazione del pacchetto lvm2 |
# emerge lvm2
|
Modificare /etc/lvm/lvm.conf come descritto precedentemente. Questo file modificato fa parte
dell'ambiente di installazione e scomparirà dopo il riavvio successivo. Questa
volta si sta modificando quello reale all'interno della nuova installazione
Gentoo.
Nel modificare il file /etc/fstab seguire il manuale ed aggiungere
i volumi logici LVM2. Ancora una volta, qui ci sono alcune linee necessarie per
il nostro esempio:
Codice 2.13: Frammento di /etc/fstab |
/dev/sda1 /boot ext3 noauto,noatime 1 2
/dev/sda2 none swap sw 0 0
/dev/sda3 / 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, ricordarsi
di effettuare l'umount di tutti i volumi logici LVM2, ed eseguire il comando
seguente prima di riavviare:
Codice 2.14: Arresto di LVM2 |
# vgchange -a n
|
Una volta riavviata la macchina tutte le partizioni dovrebbero essere visibili e
montate.
3.
Continuare Dopo un Riavvio
Se l'installazione di Gentoo è stata interrotta in un certo momento e la si
vuole riprendere, per prima cosa si devono creare i nodi di dispositivo dei
volumi:
Codice 3.1: Riattivare i volumi |
# vgscan --mknodes
|
I cd di installazione con strumenti meno recenti potrebbero necessitare invece
di riattivare i volumi:
Codice 3.2: Riattivare i volumi |
# vgexport -a vg
# vgexport -a
# vgimport -a
# 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.
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|