Disclaimer :
La versione originale di questo articolo è stata pubblicata da IBM
developerWorks ed è di proprietà di Westtech Information Services. Questo
documento è una versione aggiornata dell'articolo originale, e contiene
numerosi miglioramenti apportati dal Gentoo Linux Documentation team.
Questo documento non è mantenuto attivamente.
|
Imparare Linux LVM, Parte 1
1.
Magie nella gestione della memoria con Logical Volume Management
Introduzione a LVM
In questa serie, verrà mostrato come installare e usare il nuovo supporto a
Logical Volume Management integrato nel kernel Linux 2.4. Se il lettore non ha
avuto precedenti esperienze con LVM, troverà un interessante trattato; questa è
una tecnologia fantastica. Prima di recuperare e rendere effettivamente
funzionante LVM, è necessario spiegare esattamente cosa è e come lavora. In
seguito, LVM potrà essere testato e analizzato a fondo.
Per molti, come l'autore, l'esperienza con UNIX e Linux è iniziata su una
piattaforma PC, piuttosto che su grandi server e workstation UNIX commerciali.
Sui PC di base, c'era sempre bisogno di darsi da fare col partizionamento del
disco fisso. Gli utenti di PC sono normalmente ben informati riguardo a
strumenti come fdisk, che vengono usati per creare e cancellare
partizioni primarie ed estese sui dischi fissi. Il partizionamento del disco
fisso è una parte sgradevole ma accettata del processo che porta a rendere
funzionante un sistema operativo.
Il partizionamento dei dischi fissi può essere seccante perché per fare un buon
lavoro c'è la necessità di stimare con accuratezza di quanto spazio ha bisogno
ogni partizione. In caso di sotto stima, il sistema Linux potrebbe risultare
inutilizzabile, e per risolvere il problema probabilmente sarà necessario
effettuare un backup completo del sistema, effettuare una pulizia del disco
fisso, quindi reinserire tutti i dati all'interno di un nuovo (e presumibilmente
migliore) schema di partizionamento. Un bel lavoro. Questo è esattamente il tipo
di situazioni che gli amministratori di sistema cercano di evitare quanto più
possibile in primo luogo.
Mentre le partizioni erano una volta regioni di memoria statica, fortunatamente,
oggi abbiamo un proliferare di strumenti da computer per il ripartizionamento
(il prodotto Partition Magic di PowerQuest è uno degli esempi più popolari).
Questi strumenti permettono di avviare il sistema con un disco speciale e
ridimensionare dinamicamente le partizioni ed i filesystem. Una volta riavviato,
sono a disposizione le partizioni modificate, se tutto va bene sfuggendo via dai
problemi del partizionamento. Questi strumenti per il ridimensionamento delle
partizioni sono ottimi e risolvono il problema della gestione dello spazio di
immagazzinamento per molte persone. Ma sono perfetti? Non esattamente.
Mezzi come Partition Magic sono ottimi per workstation, ma non realmente
adeguati per server. Prima di tutto, richiedono di riavviare il sistema. Questo
è qualcosa che molti amministratori di sistema tentano disperatamente di
evitare. Cosa succederebbe se non fosse semplicemente possibile riavviare la
macchina ogni volta che la memoria necessita di modifiche, in caso tale memoria
abbia bisogno di cambiamenti drastici ogni settimana? Cosa succederebbe se fosse
necessario espandere il filesystem così che possa coprire più di un disco fisso,
o nel caso in cui sia necessario allargare o diminuire dinamicamente la capacità
di una volume fisico permettendo contemporaneamente ad Apache di continuare a
fornire pagine Web? In un ambiente dinamico ad alta disponibilità, un
ridimensionatore basilare di partizioni non è sufficiente. Per queste ed altre
situazioni, Logical Volume Manager è una eccellente (se non perfetta) soluzione.
All'interno di LVM
Adesso è necessario dare un'occhiata a come LVM risolve questi problemi. La
creazione di un volume logico LVM è un processo in tre passi. Primo, è
necessario selezionare la risorsa di immagazzinamento fisica che verrà usata per
LVM. Tipicamente, queste sono partizioni normali ma possono anche essere volumi
software RAID di Linux creati precedentemente. Nella terminologia LVM, queste
risorse di immagazzinamento sono chiamate "volumi fisici". Il primo passo nella
creazione di LVM comprende la corretta inizializzazione di queste partizioni
così che possano essere riconosciute dal sistema LVM. Questo comporta
l'impostazione del tipo corretto della partizione se quella che viene aggiunta è
una partizione fisica, quindi l'esecuzione del comando pvcreate.
Una volta in possesso di uno o più volumi fisici inizializzati per l'uso da
parte di LVM, è possibile procedere al passo due, ovvero la creazione di un
gruppo di volume. È possibile considerare il gruppo di volume come un
contenitore di memoria che consiste in uno o più volumi fisici. Mentre LVM è in
esecuzione, ulteriori volumi fisici possono essere aggiunti al gruppo di volume
o anche rimossi. Comunque, non è possibile montare o creare filesystem
direttamente su un gruppo di volume. Piuttosto, sarà possibile chiedere a LVM di
creare uno o più "volumi logici" usando il proprio contenitore di memoria del
gruppo di volume:
Figura 1.1: Un gruppo di volumi è creato fuori dai volumi fisici |
 |
Creare un volume logico LVM è veramente facile, una volta creato poi è possibile
procedere aggiungendo un filesystem su di esso, montarlo, e inizare ad usare il
volume per immagazzinare i propri file. Per creare un volume logico, bisogna
usare il comando lvcreate, specificando il nome del nuovo volume, la
dimensione voluta per esso, e il gruppo di volume di cui si desidera che il
particolare volume logico faccia parte. Il sistema LVM allocherà quindi memoria
dal gruppo di volume specificato e creerà il nuovo volume, che sarà poi pronto
per l'uso. Una volta creato, su di esso potrà essere messo un filesystem ext2 o
ReiserFS, potrà essere montato, potrà essere usato come meglio si preferisce.
Figura 1.2: Creare due volumi logici dal gruppo di volume esistente |
 |
Entità
Dietro il sipario, il sistema LVM alloca memoria in "fette" di dimensioni
uguali, chiamate entità (o extent). Esiste la possibilità di specificare la
dimensione da usare per la specifica entità al momento della creazione. La
dimensione predefinita per un'entità è di 4Mb, già perfetta per molti utenti.
Uno dei punti forti di LVM è che la posizione fisica della memoria dell'entità
usata per uno dei volumi logici (in altre parole, su quale disco sono
memorizzate) può essere cambiata dinamicamente mentre il volume logico è montato
e in uso. Il sistema LVM assicura che i volumi logici continueranno ad operare
perfettamente permettendo allo stesso tempo all'amministratore di cambiare
fisicamente il luogo dove ogni cosa viene memorizzata.
Certamente, fino a che ogni cosa viene creata fuori dalle entità equamente
dimensionate, sarà veramente facile allocare alcune entità aggiuntive per un
volume logico già esistente, o in altre parole, far "crescere" dinamicamente il
volume:
Figura 1.3: Aggiungere entità addizionali dal proprio gruppo di volume, espandendo la dimensione del particolare volume logico |
 |
Una volta che il volume logico è stato espanso, sarà possibile in seguito
allargare il proprio filesystem ext2 o ReiserFS per trarre vantaggio da questo
nuovo spazio. Se l'utente ha intenzione di usare un programma come
resize_reiserfs, questa estensione del filesystem può anche avvenire
mentre il volume è montato e in uso. Davvero sorpredente: con LVM e strumenti di
espansione del filesystem a caldo (anche detti online), non sarà più necessario
riavviare il proprio sistema o ancora passare al runlevel 1 per cambiare la
propria configurazione di memoria.
La sola occasione in cui ci sarà bisogno di spengere il proprio sistema è quando
si presenterà la necessità di aggiungere nuovi dischi fisici. Una volta che i
nuovi dischi saranno stati aggiunti, sarà possibile poi aggiungere questi nuovi
volumi fisici al proprio gruppo di volume (o ai propri gruppi volume) per creare
una nuova riserva di entità.
Configurare LVM
A questo punto LVM è installato. LVM si compone di due parti: un componente
kernel e un insieme di strumenti che operano in user-space. Per iniziare, andare
sulla pagina principale di LVM (al riguardo si veda il paragrafo Risorse più avanti in questo articolo) e scaricare la
versione più recente dell'archivio di LVM (al momento lvm_0.9.1_beta3.tar.gz)
presente. L'archivio di LVM contiene tutti gli strumenti che operano in
user-space, così come un gruppo di patch per il kernel. Qua è dove le cose
cominciano a farsi interessanti.
In caso l'utente possieda già un kernel della serie 2.4 installato, potrebbe
anche già avere disponibile il supporto per LVM nel proprio sistema, ma se così
non fosse, la ricompilazione del proprio kernel per abilitare il supporto LVM
sarà cosa da poco. Comunque, si potrebbe non volere usare il supporto LVM
incluso nel proprio kernel 2.4 preparato (o fornito dalla distribuzione). Nel
caso l'utente voglia usare l'ultima versione di LVM, probabilmente vorrà
applicare le patch presenti nell'archivio LVM al proprio albero sorgente per il
kernel 2.4 attuale. Di seguito viene spiegato come è possibile farlo.
Per cominciare, bisogna entrare nella propria cartella dei sorgenti del kernel
(/usr/src/linux) e creare una cartella chiamata
extras. Quindi, entrare in questa cartella ed estrarre il proprio
archivio LVM:
Codice 1.1: Estrarre le patch |
# cd /usr/src/linux
# mkdir extras
# cd extras
# tar xzvf /path/to/location/of/lvm_0.9.1_beta3.tar.gz
|
Una volta fatto quanto detto, sarà possibile notare una nuova cartella in extras
chiamata LVM che contiene un'altra cartella il cui nome equivale
alla versione di LVM appena estratta. Risalire dentro queste due cartelle per
arrivare ai sorgenti di LVM:
Codice 1.2: Raggiungere i sorgenti di LVM |
# cd LVM/0.9.1_beta3
# ls
ABSTRACT COPYING INSTALL Makefile README autoconf config.status kernel make.tmpl.in
CHANGELOG COPYING.LIB KNOWN_BUGS Makefile.in TODO config.cache configure lvm_input_msg scripts
CONTRIBUTORS FAQ LVM-HOWTO PATCHES WHATSNEW config.log configure.in make.tmpl tools
|
Sono presenti diversi file di testo, script, e cartelle di sorgenti. Si possono
trovare le istruzioni per l'installazione all'interno nel file
INSTALL; questo testo guiderà il lettore attraverso questo
processo. Prima di tutto, dovrà essere eseguito lo script configure, come segue:
Codice 1.3: Configurare i sorgenti LVM |
# ./configure --prefix=/ --mandir=/usr/man
|
Applicare le patch
Dopo aver eseguito il comando sopra, saranno creati e configurati i Makefile per
installare tutti gli strumenti LVM in /sbin e le pagine man in
/usr/man. Se le proprie pagine man sono in
/usr/share/man (come per FHS 2.1), c'è bisogno di correggere il
percorso precedente in tal senso. E, se i sorgenti del kernel non sono in
/usr/src/linux, aggiungere un'opzione
--with-kernel_dir=/percorso/per/usr/src/linux su riga di comando. Una
volta che lo script configure termina il suo compito, si può procedere con
l'installazione degli strumenti e generare le patch per il kernel corrente.
Prima bisogna applicare le varie patch al kernel. Entrare nella cartella
PATCHES:
Codice 1.4: Cambiare cartella |
# cd PATCHES
|
Adesso, basterà digitare il comando make. Il Makefile genererà una patch
appositamente per gli specifici sorgenti del kernel serie 2.4:
Codice 1.5: Creare la patch |
# make
|
La patch sarà chiamata lvm-[versione_lvm]-[versione_kernel].patch. Per
esempio, usando la versione 0.9.1_beta3 di LVM e il kernel 2.4.0-ac11, la patch
sarà chiamata lvm-0.9.1_beta3-2.4.0-ac11.patch. La si potrà trovare nella
cartella corrente. Adesso, è il momento di applicare la patch. Per farlo, c'è
bisogno di cambiare cartella passando in quella relativa ai sorgenti del kernel
e usare il comando patch come mostrato di seguito:
Codice 1.6: Il comando patch |
# cd /usr/src/linux
# patch -l -p1 < /usr/src/linux/extras/LVM/0.9.1_beta3/PATCHES/lvm-0.9.1_beta3-2.4.0-ac11.patch
|
Anche se la documentazione riportata nel file INSTALL di LVM non riporta quanto
segue, l'autore di solito aggiunge l'opzione -l al comando patch. Questa
opzione permette al programma patch di compensare ogni cambiamento negli spazi
bianchi (come cambiamenti minori nell'indentazione) che potrebbero comunemente
causare il fallimento di alcune parti della patch. Se il comando precedente
termina senza alcuna linea "FAILED", sarà giunto già il momento di installare
gli strumenti che operano in user-space. Se così non fosse, ci sarà invece
bisogno di perlustrare la propria cartella /usr/src/linux alla
ricerca di file .rej e inserire i componenti esclusi all'interno dei
sorgenti a mano usando un editor di testo. Comunque, in quasi tutte le
situazioni la patch verrà applicata senza problemi e si potrà quindi procedere.
Configurare, compilare e installare
L'utente è adesso in possesso di un kernel a cui sono state applicate le patch e
quindi ha a disposizione il codice di LVM più recente. A questo punto, vorrà
configurare il proprio kernel così da abilitare il supporto per LVM. Si
raccomanda di compilare il supporto LVM direttamente all'interno del kernel
piuttosto che configurarlo per essere compilato come modulo. Bisogna quindi
avviare il metodo di configurazione preferito per il kernel Linux:
Codice 1.7: Configurare il kernel |
# cd /usr/src/linux
# make menuconfig
|
Le opzioni per LVM si trovano sotto la sezione "Multi-device support (RAID and
LVM)". Una volta abilitata la prima opzione:
Codice 1.8: Supporto per RAID e LVM |
[*] Multiple devices driver support (RAID and LVM)
|
Compariranno le opzioni seguenti, che possono a loro volta essere abilitate:
Codice 1.9: Abilitare il supporto per LVM |
<*> Logical volume manager (LVM) support
|
In relazione alla versione LVM, potrebbero essere presenti altre opzioni
relative a LVM che l'utente potrebbe voler abilitare. Una volta fatto questo,
basta salvare la propria configurazione del kernel e portare avanti la procedura
predefinita seguita per compilare il kernel, quindi riavviare. Congratulazioni,
adesso il supporto per LVM è abilitato nel kernel. Ora, c'è bisogno di
compilare e installare gli strumenti che operano in user-space. Questo passo è
facile:
Codice 1.10: Creare gli strumenti che operano in user-space |
# cd /usr/src/linux/extras/LVM/0.9.1_beta3
# make
# make install
|
Rimane solo una cosa ancora da fare, ed è opzionale. In caso si vogliano portare
avanti più operazioni su LVM, sarà necessario aggiungere le seguenti linee al
proprio script rc di avvio:
Codice 1.11: Modificare lo script di avvio rc |
/sbin/vgscan
/sbin/vgchange -a y
|
Queste righe cercheranno tutti i gruppi volume disponibili e li attiveranno.
Quindi, aggiungere la seguente linea allo script rc di spegnimento, e
assicurarsi che sia eseguita dopo che tutti i filesystem sono stati smontati:
Codice 1.12: Modificare lo script rc di spegnimento |
/sbin/vgchange -a n
|
In caso si voglia solamente testare LVM, questi passi possono essere saltati.
Basta ricordarsi dopo ogni riavvio di digitare vgscan e vgchange -a
y come utente root prima per rendere disponibili per l'uso i propri volumi
logici.
È tutto per questo articolo. Nel prossimo, verrà mostrato come creare i propri
personali volumi logici e come scatenare la potenza di LVM. Non perdetevelo.
Risorse
|