Home
Repository 32bit  Forum
Repository 64bit  Wiki

Modifiche

Slackware LVM2 HOWTO

1 012 byte aggiunti, 11:01, 18 nov 2007
m
Nozioni Fondamentali
cp /etc/lilo.conf /home/''home_utente''/lilo.conf.backup
E' conisigliabile consigliabile anche effettuare un backup dei dati sensibili e della configurazione di sistema, nell'ipotesi che durante una delle operazioni i filesystem oggetto dovessero corrompersi.
=Introduzione=
LVM è un acronimo che sta per "Logical Volume Manager". Come da howto ufficiale, LVM fornisce una visione "ad alto livello" (cioè slegata dall'effettiva configurazione fisica) delle partizioni e dei dischi presenti in un sistema. Lo scopo è permettere una maggiore flessibilità nell'utilizzo dello spazio di storage, permettendone più agevolmente la riorganizzazione indipendemente indipendentemente dall'allocazione fisica.
Storicamente, ridimensionare partizioni o aggiungere nuovi dischi ad un sistema già configurato è funzionante sono sempre state operazioni macchinose e problematiche, spesso con risultati deludenti. LVM permette di eseguire queste ed altre operazioni in modo semplice ed efficiente.
Alcune distribuzioni (RedHat, Mandrake, Suse) offrono la possibilità di installare l'intero sistema in LVM a partire dalla prima installazione tramite il software di Setup. Purtroppo questo Questo non accade con Slackware Linux, che pur supportandolo a livello Kernel non ci fornisce nessuna "facilities" per configurare il sistema per l'utilizzo di LVM, fornendo però tutti gli strumenti per poterlo fare manualmente nel pieno rispetto della filosofia della distribuzione.
Questa guida ha il duplice scopo tanto di comprendere il funzionamento di LVM, quando di permettere di utilizzarlo con efficienza sulla ''distribuzione con la pipa'' ad ogni livello. Vedremo quindi come integrare LVM in un sistema Slackware già avviato e funzionante senza alterare il root filesistem (/), come migrare un sistema non LVM in uno LVM e come installare Slackware fin da subito su storage configurati per LVM.
In un sistema normale, i dispositivi di storage sono normalmente uno o più hard disk collegati alla stessa macchina.
Perchè Perché i sistemi operativi possano utilizzare lo spazio a disposizione sui dischi disponibili, è necessario quantomeno eseguire due operazioni:
* creare una o più partizioni
si può pensare all'operazione di partizionamento come alla suddivisione logica di uno spazio fisico. In pratica, si andranno a definire uno o più spazi "geometrici" al cui interno il sistema operativo potrà immagazzinare i dati. Se un disco fosse un edificio, le partizioni sarebbero gli appartamenti.
L'utilità delle partizioni risiede nel fatto che si possono creare spazi differenti all'interno dello stesso dispositivo fisico per usi e consumi diversi, magari addirittura per sistemi operativi differenti, impostando limiti fisici che non possono essere prevaricati. Anche nel caso in cui non si desideri suddividere un hard disk in più parti, è normalmente necessario comunque creare una partizione che ne occupi la sua totalità perchè perché i sistemi operativi possano farne uso, dato che normalmente non possono lavorare al di fuori delle partizioni.
Ogni partizione può avere differenti caratteristiche. Senza scendere troppo in dettagli tecnici, si può dire che ogni partizione ha, quantomeno, un punto d'inizio ed un punto di fine. Inoltre, ogni partizione ha un tipo, definito tramite un codice numerico. Tipi comuni di partizioni possono essere "Linux", "Linux Swap", "NTFS/HPFS", etc. L'alterazione delle partizioni è, in se, un operazione non distruttiva. Questo significa che ripristinando al loro stato originale tabelle di partizioni alterate o corrotte, è possibile recuperare i dati in esse contenuti, se nel mentre non ne è stato modificato o corrotto il contenuto.
Perchè Perché un sistema operativo possa utilizzare una partizione, non basta crearla. E' necessario anche creare un filesystem all'interno della partizione stessa, operazione comunemente detta "formattazione" (dato che uno degli effetti secondari della formattazione è la cancellazione dei dati contenuti nella partizione stessa, è errore comune pensare che formattare significhi cancellare i dati).
Per filesystem s'intende un metodo di memorizzazione ed ordinamento dei dati. Il tipo di filesystem utilizzato determina un insieme di fattori, quali lo spazio effettivo che potrà essere utilizzato della partizione, le prestazioni, l'affidabilità in caso di crash, le features e via dicendo. Il tipo di filesystem che è possibile utilizzare dipende dal sistema operativo. Ben pochi sistemi operativi supportano così tanti tipi di filesystem diversi quanto il kernel linux. Tipi comuni di Filesystem possono essere ext2, ext3, reiserfs, ntfs, etc.
Disco Fisico (PV) -> Gruppo (VG) -> Volume Logico (LV)-> Filesystem
Precedentemente abbiamo detto che per poter gestire lo spazio su un disco un sistema operativo necessita sempre e comunque di una partizione. Con LVM questo non è necesario necessario in quanto il sistema operativo non lavorerà con il disco o le partizioni fisiche, ma con i volumi logici, che lui vedrà esattamente come vede normalmente le partizioni.
A che scopo quindi creare un gruppo di volumi, se alla fine il sistema operativo dialoga principalmente con i volumi logici?
Il motivo è che i gruppi di volumi permettono di unire in un unico spazio virtuale differenti spazi fisici, che poi possono essere usati nella loro interezza per creare volumi logici.
Per fare un esempio concreto, supponiamo di avere due Hard Disk da 200gbyte installati in un sistema tipo. In uno scenario standard, dovremo creare due partizioni separate su entrambi gli hard disk, formattarle entrambe e quindi montarle in diffierenti differenti mountpoint del nostro filesystem, ad esempio una per il root filesystem (/) ed una per le cartelle degli utenti (/homes).
Le limitazioni di questa soluzione appaiono subito evidenti, in quanto difficilmente useremo tutti i 200 gbyte del primo disco per il sistema operativo, mentre è molto facile che i 200 gbyte del secondo disco non bastino per i dati degli utenti.
Esistono due versioni di LVM attualmente disponibili per Linux.
LVM2 è l'ultima e migliore versione disponibile, retrocompatibile retro compatibile con LVM1 quasi in ogni sua parte, distribuito di default con la serie 2.6 del kernel (per quanto esistano patch per attivare il supporto nella serie 2.4).
LVM1 è la vecchia versione, distribuita di default con i kernel di serie 2.4.
E' consigliabile, come da esempio, compilare tutto staticamente. In questo modo è possibile eliminare eventuali possibilità d'errore dovute al mancato caricamento dei moduli. Il kernel di default di Slackware utilizza LVM staticamente, per cui non è necessario alterarne la configurazione.
 
Se si desidera utilizzare la partizione root (/) su una partizione LVM, è bene anche assicurarsi che le opzioni sull'initrd siano attivate nel modo seguente, sotto '''General Setup'''
 
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
() Initramfs source file(s)
 
Inoltre, è bene assicurarsi che siano compilati staticamente all'interno del kernel il supporto al proprio controller IDE/SATA/SCSI e tutto ciò che serve per farli funzionare. Stesso discorso per il supporto ai filesystem che intendiamo utilizzare, fra cui sicuramente ext2 per la partizione di boot (vedi oltre).
=Partizionamento dei dischi=
Come detto precedentemente, LVM è in gradi grado di lavorare con dischi interi non partizionati.Considerato però che difficilmente si avranno dischi privi di partizioni (ad esempio per la necessità di creare quantomeno la partizione di swap) e che l'assenza di partizioni, per quanto non dia problemi ad LVM può dare seri problemi ad altri sistemi operativi od anche solo confonderci, dato che è molto facile scambiare un disco non partizionato per un disco vuoto, ne consegue che è necessaria una buona conoscenza dei tool di partizionamento, nonchè nonché acquisire qualche nozione fondamentale sulle partizioni.
==Nozioni Fondamentali==
Secondo lo schema di partizionamento PC-BIOS (quello usato da Linux, Windows e la maggior parte dei sistemi PC-compatibili), ogni hard disk può contenere massimo 4 partizioni principali, o primarie.
Ad ogni partizione può essere associato un "tipo" secndo secondo lo schema che è possibile trovare sul [http://www.win.tue.nl/~aeb/partitions/partition_types-1.html sito di Andries Brouwer]. Lo scopo del tipo è unicamente quello di permettere la visualizzazione o meno della partizione ai vari sistemi operativi, indipendentemente dal filesystem in esso utilizzato. Questo significa che, anche se una partizione è marchiata come "Linux", teoricamente sarebbe possibile formattarla come NTFS, in quanto il tipo è solo un "etichetta", non ne determina nessuna caratteristica particolare. Questo non è però possibilepraticamente realizzabile nell'esempio specifico, poichè poiché dal momento in cui Windows vede la partizione marchiata come Linux semplicemente la ignora (o peggio la riconosce come corrotta, ed inizia a manifestare strani sintomi allergici).
Senza scendere eccessivamente nel dettaglio sulle motivazioni per cui è possibile avere massimo 4 partizioni primarie su un hard disk, è palese che 4 è un numero veramente ridotto e limitativo.
Le prime righe c'informano della dimensione e delle caratteristiche del nostro hard disk. Le informazioni utili al nostro scopo sono la dimensione (80.0 GB) ed il numero di cilindri (9729). fdisk usa il numero del cilindro per determinare dove inizia e dove finisce una partizione.
La successsiva successiva tabella ci mostra invece come è partizionato lo spazio sul nostro disco.* '''la colonna "Device"''' ci mostra con che nome/percorso Linux vede la partizione all'interno del nostro hard disk. La nomeclatura nomenclatura segue sempre una numerazione progressiva, per cui la prima partizione di /dev/hda sarà /dev/hda1, la seconda /dev/hda2 e via dicendo.
* '''la colonna "Boot"''' ci dice se la partizione in questione ha il flag di bootabilità. Questo flag, che può essere assegnato ad una sola partizione primaria per disco, è utilizzato dal bootloader MS-DOS per determinare quale partizione avviare.
* '''le colonne "Start" ed "End"''' mostrano il cilindro d'inizio e di fine delle varie partizioni. Sono considerabili come le coordinate geometriche delle partizioni. Possono essere utili, se salvate, per ripristinare partition table corrotte. In fase di creazione di partizioni nuove lilo supporta formati più umani per specificare le dimensioni. Volendo, digitando il comando '''u''' è possibile cambiare l'unità di misura in settori, un unità più precisa.
L'unica cosa che segnalo è che si tratta di processi molto lenti, per cui se pensate di ridimensionare partizioni molto grandi prendetevi il dovuto tempo.
=Utilizzo di LVM su Slackware GNU/Linux=
* '''Comandi per la gestione dei gruppi di volumi (VG)'''
** ''vgscan'' - cerca VG esistenti all'interno dei dischi fisici. con l'opzione speciale --mknodes, aggiorna il contenuto di /dev in modo da riflettere l'effettivo stato del sistema.
** ''vgcreate'' - permette di cerare creare un VG sulla base di un PV
** ''vgdisplay'' - permette di visualizzare le informazioni su un LV
** ''vgextend'' - permette di aggiungere PV ad un VG
Lo scenario più semplice è senza dubbio quello in cui si vuole aggiungere una partizione gestita con LVM all'interno di un filesystem funzionante, ad esempio in sostituzione della directory che contiene le home degli utenti (/home).
 
===Schema di partizionamento===
Prenderemo come base lo schema di partizionamento della sezione su fdisk, quindi:
dove /dev/hda4 è la partizione che vogliamo usare per la nuova /home.
 
===Creazione del PV (Volume Fisico)===
Procediamo quindi alla creazione del PV:
PV UUID SUjLpq-gmBW-NXJ8-57gW-2RZn-3ipA-aJTQr2
Come possiamo vedere, per il momento il PV è inerte, non utilizzabile poichè poiché non associato a nessun VG. ===Crazione del VG (Gruppo di Volumi)===
Procediamo quindi alla creazione del VG, che chiameremo "vgtest":
Come potete vedere, LVM visualizza le informazioni tanto in Extents (PE o LE, a seconda del caso), quando in spazio "human readable". Questo perché in fase di creazione dei LV, è possibile utilizzare tanto la prima quanto la seconda forma per specificare le dimensioni.
 
===Creazione del LV (Volume Logico)===
A questo punto, è possibile procedere alla creazione del LV dentro vgtest, che chiameremo "newhome":
Block device 253:1
Tutto è andato per il meglio!  ===Formattazione e montaggio del LV=== A questo punto, è possibile formattare la partizione con il filesystem che preferiamo.
Ad esempio, per formattare la partizione con il filesystem ext3, digitiamo:
Oppure effettuare una migrazione completa dei dati.
 
===Migrazione dei dati nella nuova partizione===
A tal scopo, dobbiamo innanzitutto montare il filesystem in una cartella temporanea, allo scopo di copiare i dati presenti nella home attuale
* '''-c''' - pulisce l'albero dei file di initrd nel caso esista, in modo da partire con un nuovo albero
* '''-L''' - attiva il supporto ad LVLVM
* '''-r''' - specifica quale partizione andrà usata come root (/)
* '''-f''' - specifica il tipo di filesystem da usare per la partizione di root
a questo punto, possiamo inizializzare la vecchia partizione con LVM ed aggiungerla al LV principale, in modo da recuperarne lo spazio
====Recupero della vecchia Partizionepartizione====
Innanzitutto, dobbiamo inizializzare la vecchia partizione con LVM, per cui procediamo come al solito con pvcreate
Se ora visualizziamo le caratteristiche del VG con vgdisplay, alla voce "Free PE/Size" possiamo vedere che altro spazio libero è a nostra disposizione.
Procediamo quindi a ridimenzionare ridimensionare il LV in modo che occupi l'intero VG
root@nuitari-laptop:~# lvresize /dev/myvg/mylv -l +8787
mount -t proc proc /mnt/proc
mount -t sysfs sys sysfs /mnt/sys
a questo punto, tramite il comando "chroot" è possibile "imbrogliare" la shell e fargli credere che la nostra root non comincia dalla sua posizione reale attuale, ma dal mountpoint di /dev/myvg/mylv
=Conclusioni=
Con questo articolo abbiamo appena scalfito la complessità di LVM2 e le sue potenzialità. Ancora molto potrebbe essere detto e probabilmente ancora molto verrà aggiunto a questa guida, che vuole tutto fuorchè fuorché pretendere di essere completa o definitiva.
Se non altro, spero che possa rappresentare un valido aiuto di natura pratica per l'utilizzo di LVM all'interno del proprio sistema ed un buon punto di partenza per approfondire l'argomento con una ricerca personale.
414
contributi