Gentoo Logo

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

Fig. 1

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

Fig. 2

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

Fig. 3

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



Stampa

Aggiornato il 22 gennaio 2006

Oggetto: In questo articolo, Daniel introduce il lettore ai concetti che stanno dietro a Linux LVM (Logical Volume Management) e mostra come recuperare le ultime patch per il kernel e avere gli strumenti installati sul proprio sistema. LVM permette di creare volumi logici fuori dalle risorse di memoria fisica presenti sulla macchina. Comunque, differentemente dai volumi fisici, i volumi logici possono essere espansi e ridotti mentre il sistema è in esecuzione, mettendo a disposizione degli amministratori di sistema Linux quella flessibilità di memorizzazione dei dati che fino ad oggi avevano potuto solo sognare.

Daniel Robbins
Autore

Michele Caini
Traduttore

Donate to support our development efforts.

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