Installazione di Gentoo con LVM2

Contenuti:

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

(Evitare la scansione di tutti i device tranne i nostri dischi)
# nano -w /etc/lvm/lvm.conf
(Cercare la linea seguente)
  filter = [ "a/.*/" ]
(Sostituire tale linea con la seguente, in modo da effettuare lo scan di /dev/hda e /dev/hdb e di nessun altro device)
  filter = [ "a|/dev/hd[ab]|". "r/.*/" ]
(Salvare il file ed uscire da nano)
# vgscan
  Reading all physical volumes.  This may take a while...
  No volume groups found
(Rendere disponibile ogni volume group precedentemente impostato)
# 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

(Creare un volume group di nome vg)
# vgcreate vg /dev/hda4
  /etc/lvm/backup: fsync failed: Invalid argument (Ignorare questo warning)
  Volume group "vg" successfully created
(Estendere il volume group esistente)
# vgextend vg /dev/hdb1
  /etc/lvm/backup: fsync failed: Invalid argument (Ignorare ancora questo warning e quelli più avanti)
  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 (Gli altri messaggi simili non vengono mostrati)
# lvcreate -L5G  -nhome vg
# lvcreate -L5G  -nopt  vg
# lvcreate -L10G -nvar  vg
# lvcreate -L2G  -ntmp  vg
(Nell'esempio si mostra come ingrandire un volume logico di altri 5 GB)
# 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

(Assicurarsi di aver fatto prima il mount della partizione
di root come descritto nel manuale)
# 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
(Notare che LVM non è selezionato di proposito perchè è relativo a LVM1)
  < >  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
(Aggiungere la riga seguente)
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

(Disattivare prima tutti i volumi)
# vgexport -a vg
(Esportare tutti i volumi)
# vgexport -a vg
(Importare tutti i volumi)
# vgimport -a vg
(Riattivare tutti i volumi)
# 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.



Ultimo aggiorn.:
2006-02-06
Avi Schwartz
Autore

Rajiv Manglani
Contributi

Xavier Neys
Redazione

Emilio Pavia
Traduzione

Gianni Costanzi
Traduzione

Sommario:  Questa guida descrive la configurazione di un sistema Gentoo per l'utilizzo del Logical Volume Manager versione 2 (LVM2).
- 2002 Gentoo.it - Domande, commenti e/o correzioni? Email gentoo-dev@gentoo.it.