Repository 32bit  Forum
Repository 64bit  Wiki

Slackware LVM HOWTO

Da Slacky.eu.


WORK IN PROGRESS

Indice

Introduzione

Ho dovuto affrontare questo argomento per motivi pratici visto che mi hanno chiesto di predisporre un sistema che consentisse con il tempo di ampliare le partizioni (per i dati contenuti), sia per un eventuale spazio di swap (per un proxy) che per un’area dedicata allo storage di dati per utenti (home directory).

Ho pensato di utilizzare le potenzialità del LVM ovvero il Logical Volume Manager da tempo incorporate nel kernel di Linux. Con questo sistema diventa infatti possibile superare le limitazioni offerte dalle partizioni standard, che possono essere maneggiate (ampliate o ridotte) con grande difficoltà. Le caratteristiche di LVM consentono invece la manipolazione e soprattutto l’estensione delle partizioni dati con grande facilità, rendendo meno complessa l’espansione dello storage su di un sistema.

Siccome l’argomento è complesso ed io non mi ritengo un esperto in materia (non lo sono in nulla) eviterò le trattazioni teoriche che lascio all’HOWTO originale e ad alcuni argomenti disponibili su web.

Vi documenterò invece la parte pratica, ovvero le operazioni che ho fatto per poter espandere dei Volumei creati con LVM. E’ stato abbastanza semplice e si è rivelato incredibilmente versatile è potente tanto da farmi pensare ad un suo utilizzo un po’ più su larga scala su alcuni dei miei sistemi.

Alcune distribuzioni (RedHat, Mandrake, Suse) offrono la possibilità di installare l’intero sistema in LVM a partire dalla prima installazione. In questo caso sui doc di RedHat ho visto che ciò può essere fatto ma la partizione boot deve per forza essere montata in una normale partizione perché il kernel non può partire da un LVM.

Nel mio caso il sistema è montato su di un disco con distribuzione Slackware 9.0 kernel 2.4.21, mentre i Volumei in LVM (due partizioni) sono stati creati prima su un disco secondario (/dev/hdc) e poi sono state estese con l’aggiunta di un secondo disco (/dev/hdd).

Il punto di partenza consiste nel predisporre un sistema con Kernel 2.4.x con il supporto LVM compilato:

Multi-device support (RAID and LVM)  ---> [*] Multiple devices driver support (RAID and LVM)
< >  RAID support
<M>  Logical Volume Manager (LVM) support

Una volta ricompilato il kernel possiamo caricare il modulo con:

modprobe lvm-mod 

Un altro elemento essenziale per poter manipolare i Logical Volume ed il filesystem è rappresentato da E2fsprogs, se non presente sul sistema è reperibile qui.

Nozioni Basilari

Prima di effettuare le operazioni sul sistema è bene avere per lo meno un’idea di come funziona LVM e quali siano i suoi concetti di base. Potremmo dire che la struttura di LVM è concentrica o nucleare infatti alla base della creazione di un Volume logico c’è il Physical Volume in pratica il Volume Fisico che conterrà alla fine i nostri Volumei Logici.

In realtà esso contiene ancora un unità intermedia chiamata Volume Group la quale conterrà infine i Logical Volume (LV).

Questa spiegazione è davvero sintetica, in realtà l’argomento è molto più complesso per cui è bene lasciare a documenti più approfonditi tale trattazione (vedi HOWTO), per noi è comunque sufficiente per poter operare con LVM.

Alcune regole base vanno comunque tenute presenti durante la procedura di crezione dei LV:

  • Un volume fisico non può essere disteso su più di una unità. Quindi bisogna creare un volume fisico per ogni unità.
  • I volumi logici possono essere estesi su più dischi, due dischi IDE nel nostro caso, ma anche su un pool di disci SCSI o SATA, per cui LVM è molto versatile.

Legenda

Le sigle utilizzate nel documento:

  • PV - Phisical Volume;
  • VG - Volume Group;
  • LV - Logical Volume;
  • LVM - Logical Volume Manager.

Procedura

A questo punto si può iniziare a creare i PV sul sistema per poi arrivare alla creazione dei veri e propri LV obiettivo della nostra dimostrazione.

Creazione del Volume Fisico (PV)

root@box:~# pvcreate /dev/hdc
pvcreate -- device "/dev/hdc" has a partition table 

Con pvcreate viene creato il primo Volume fisico sul primo disco IDE su cui verranno create gli LV. Trovando delle partizione attive lo segnala per cui è bene eliminare le partizioni presenti con fdisk e rilanciare il comando:

root@box:~# pvcreate /dev/hdc 
pvcreate -- physical Volume "/dev/hdc" successfully created 

Il comando pvscan ci informa sui device utilizzati:

root@box:/# pvscan  
pvscan -- reading all physical Volumes (this may take a while...)  
pvscan -- ACTIVE   PV "/dev/hdc" of VG "vgDATI" [9.54 GB / 4.65 GB free] 
pvscan -- total: 1 [9.54 GB] / in use: 1 [9.54 GB] / in no VG: 0 [0] 

il device coinvolto è hdc e ha dimensione 10 GB di cui circa la metà liberi.

Creazione del Volume Group (VG)

root@box:~# vgcreate vgDATI /dev/hdc  
vgcreate -- INFO: using default physical extent size 4 MB 
vgcreate -- INFO: maximum logical Volume size is 255.99 Gigabyte 
vgcreate -- doing automatic backup of Volume group "vgDATI" 
vgcreate -- Volume group "vgDATI" successfully created and activated 

Il comando vgcreate crea il Volume Group in cui verranno poi inseriti il Volumei Logici. Qui sta la parte interessante del discorso poiché i VG possono contenere più dischi in modo da permettere ai LV di espandersi su più dischi superando le limitazioni offerte dal singolo device.

Informazioni su VG esistenti si possono ottenere con vgscan:

root@box:/# vgscan            
vgscan -- reading all physical Volumes (this may take a while...) 
vgscan -- found active Volume group "vgDATI" 
vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created 
vgscan -- WARNING: This program does not do a VGDA backup of your Volume group 

il comando vgscan controlla la presenza dei PV e crea un file /etc/lvmtab senza del quale la procedura di creazione degli LVM non può essere iniziate.

Possiamo invece visualizzare lo stato del VG con il comando:

root@box:/# vgdisplay /dev/vgDATI  
--- Volume group ---  
VG Name               vgDATI 
VG Access             read/write 
VG Status             available/resizable 
VG #                  0 
MAX LV                256 
Cur LV                2 
Open LV               1 
MAX LV Size           255.99 GB 
Max PV                256 
Cur PV                1 
Act PV                1 
VG Size               9.54 GB 
PE Size               4 MB 
Total PE              2441 
Alloc PE / Size       1375 / 5.37 GB 
Free  PE / Size       1066 / 4.16 GB 
VG UUID               8jG3ug-inbp-mk5X-7xaB-9VlH-Xqe1-QFE67z 

Creazione di un Logical Volume (LV)

La procedura riguarda un singolo Volume (lvhome) ma può essere estesa a tutti gli LV del nostro VG (spazio totale permettendo).

root@box:~# lvcreate -L 1000M -n lvhome /dev/vgDATI  
lvcreate -- doing automatic backup of "vgDATI" 
lvcreate -- logical Volume "/dev/vgDATI/lvhome" successfully created 

A questo punto possiamo procedere alla creazione di due LV nel VG precedentemente creato, utilizzando l’apposito comando lvcreate.

In questo caso verranno creato un LV denominato lvhome di 1000M.

Formattazione e montaggio delle partizioni

Ridimensionamento delle partizioni

Estensione di una partizione

Riduzione di una partizione

Ridimansionamento dei Volume Group (VG

Rimozione di un Volume Group (VG)

Estensione di un Volume Group (VG) aggiungendo un device

Estensione di un Volume Group (VG) aggiungendo una partizione

Note

Bisogna ricordarsi che questo non è un sistema che consente di ridondare i dati quindi anche aggiungendo nuovi device (PV Phisical Volumees) non avremo alcuna protezione per i dati per cui è bene fare sempre backup periodici dei dati.

C’è da dire che nonostante una certa semplicità di gestione, il filesystem con LVM è più elaborato rispetto a quello con le tradizionali partizioni, per questo è bene utilizzarlo solo in caso di reale necessità, almeno questo è il mio consiglio.

In ogni caso non fermatevi alle indicazioni offerte in questo documento, ma approfondite soprattutto con l’HOWTO originale.

HOWTO Ufficiale

Questo spiega come creare un LVM con Redhat all’atto dell’installazione del sistema

Autore: Paolo Pavan

Strumenti personali
Namespace

Varianti