Gentoo Logo

Installazione di Gentoo con LVM2

Indice:

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

(Evitare la scansione di tutti i dispositivi tranne i propri dischi)
# nano -w /etc/lvm/lvm.conf
(Cercare la linea seguente)
  filter = [ "a/.*/" ]
(Sostituire tale linea con la seguente, in modo da effettuare la scansione di /dev/sda e /dev/sdb e di nessun altro dispositivo)
  filter = [ "a|/dev/sd[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

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

(Creare un volume group di nome vg)
# vgcreate vg /dev/sda4
  /etc/lvm/backup: fsync failed: Invalid argument (Ignorare questo avviso)
  Volume group "vg" successfully created
(Estendere il volume group esistente)
# vgextend vg /dev/sdb1
  /etc/lvm/backup: fsync failed: Invalid argument (Ignorare ancora questo avviso e quelli più avanti)
  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 (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

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

(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). 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
(Notare che LVM non è selezionato di proposito perchè è relativo a LVM1)
  < >  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

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



Stampa

Aggiornato il 1 aprile 2012

La versione originale di questo documento non è più mantenuta

Oggetto: Questa guida descrive la configurazione di un sistema Gentoo per l'utilizzo del Logical Volume Manager versione 2 (LVM2).

Avi Schwartz
Autore

Rajiv Manglani
Contributi

Xavier Neys
Redazione

Emilio Pavia
Traduzione

Gianni Costanzi
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.