Creazione, backup e ripristino volumi logici LVM

Informatica

Questa pagina mostra come creare modificare, ampliare e restringere un volume LVM. Mostra anche come montarli in un sistema diverso dall'originale e come ripristinarlo/recuperarlo in caso di emergenza.

Salvo indicazioni diverse, tutto quanto riportato qui è stato provato con Mandriva GNU/Linux 2009, e dovrebbe valere per qualsiasi altra distribuzione gnu/linux recente, come Ubuntu.

Creare un volume LVM

  1. Creare con fdisk o cfdisk le partizioni da aggiungere al volume. Le partizioni devono essere di tipo "Linux LVM", ossia 8E.

  2. Vanno creati i Physical Volume in queste partizioni:

    pvcreate /dev/sda1 /dev/sdb1
    
  3. Va creato il Volume Group dal nome arbitrario (io ho usato backupVG0):

    vgcreate -s 32M backupVG0 /dev/sda1 /dev/sdb1
    

    L'opzione -s definisce la dimensione degli extent. Poiché il numero massimo degli extent è fisso, per volumi più grandi è necessario fissare extent più grandi. Il default è 4M, che fissa il massimo per un volume a 256 GB. 16M fissa il massimo a 1 TB. 32M fissa il massimo a 2 TB. È un parametro che non si può modificare dopo.

  4. Finalmente va creato il Logical Volume dal nome arbitrario (io ho usato backupLV0):

    lvcreate -l 100%VG -n backupLV0 backupVG0
    

    Il parametro -l controlla la dimensione iniziale del volume creato, che può essere inferiore allo spazio disponibile, ed eventualmente aumentare quando verranno aggiunti nuovi Physical Volume al Volume Group. Si può dare la dimensione esatta (es. 40G), oppure si può indicare una dimensione percentuale (100%VG == usa tutta la capacità del Volume Group).

  5. Formatto il Logical Volume:

    mkfs.ext3 -m 0.1 -L backup -O dir_index /dev/backupVG0/backupLV0
    

    /dev/backupVG0/backupLV0 è il nome del device associato al Logical Volume, costruito a partire dal nome del Volume Group e dal nome del Logical Volume stabiliti prima (per il logical volume, come per le partizioni, si possono usare label e uuid per farvi riferimento nei file di configurazione). In alternativa si può accedere al volume logico anche con /dev/mapper/backupVG0-backupLV0

  6. Monto il Logical Volume:

    mount /dev/backupVG0/backupLV0 /mnt/backup/
    

Modificare un Logical Volume

Ampliare un LV

È possibile ampliare un volume logico, aggiungendo nuovi volumi fisici a un gruppo pre-esistente ed estendendo il volume logico sul nuovo spazio disponibile, senza dover riavviare il sistema.

Inoltre con il kernel 2.6 e versioni recenti di e2fsprogs è possibile ridimensionare una partizione ext2/ext3 anche senza smontarla (Brrr...). Questo è posibile perché con lvm il kernel vede subito l'aumento di dimensioni del volume anche se montato (con le partizioni fisiche, al contrario, è necessario smontare la partizione).

  1. creiamo una partizione di tipo "Linux LVM" come fatto prima, con cfdisk.
  2. la rendiamo un nuovo physical volume con pvcreate.
  3. la aggiungiamo ad un volume group esistente con vgextend.
  4. ampliamo il logical volume con lvextend.
  5. ridimensioniamo il file system (solo se ext3) con resize2fs.

Di solito è una buona idea controllare il file system con e2fsck prima di ridimensionarlo (procedura non provata).

Ridurre un LV

Per restringere un logical volume a una dimensione inferiore alle dimensioni del file system che contiene è comunque necessario smontare il file system e prima ridimensionare questo (ammesso che ci sia sufficiente spazio vuoto).

  1. smontare il LV
  2. controllare il file system con e2fsck -f
  3. ridimensionare il file system con resize2fs
  4. restringere il LV con lvreduce

Se dobbiamo rimuovere un physical volume dal volume group, dobbiamo prima spostare i dati su un altro physical volume con pvmove e poi rimuovere il physical volume con vgreduce (procedura non provata).

Backup e ripristino dei metadati di un LV e accesso in caso di emergenza

I metadati descrivono il LV e consentono di montarlo correttamente. Senza di questi il LV non funziona.

  • È possibile fare un backup dei metadati con il comando:

    vgcfgbackup -f backupVG0.lvm
    
  • Per ripristinare i metadati da un file di backup si usa il comando vgcfgrestore. Prima elenchiamo i volume group salvati nel file di backup:

    vgcfgrestore -f backupVG0.lvm -l
    

    Ripristiniamo un volume group dando il suo nome a vgcfgrestore:

    vgcfgrestore -f backupVG0.lvm backupVG0
    

In alternativa, è utile fare un backup di /etc/lvm (il file equivalente è /etc/lvm/system o /etc/lvm/backup, sono file di testo modificabili secondo le esigenze). Per ripristinare i metadati sui physical volume usare:

    pvcreate --restorefile backupVG0

(procedura non provata)

Accesso da un live-cd o da un altro sistema al LV

Per accedere al Logical Volume da un live-cd, devono essere disponibili i tool lvm2. Sono presenti in SystemRescueCD e in Knoppix. Nel live-cd di Ubuntu si possono installare e rendere usabili con il comando:

apt-get install lvm2
modprobe dm-mod
  1. Identifichiamo le partizioni esistenti, e quelle che potrebbero essere PV:

    fdisk -lu
    
  2. Cerchiamo i physical volume esistenti:

    pvscan
    
  3. cerchiamo i volume group esistenti:

    vgscan
    
  4. attiviamo tutti i volume group disponibili:

    vgchange -a y
    
  5. cerchiamo i logical volume:

    lvscan
    
  6. montiamo i logical volume trovati su una directory.

Altri comandi utili di LVM

  • pvdisplay mostra i volumi fisici disponibili
  • vgdisplay mostra i volume group disponibili
  • vgrename rinomina un volume group
  • lvdisplay mostra i logical volume disponibili
  • lvrename rinomina un logical volume
  • GNU parted crea pv, ridimensiona e copia lv

Attenzione: gparted, programma di partizionamento derivato da parted, non supporta LVM!

Altre cose interessanti da sapere su LVM

LVM supporta gli snapshot, "immagini congelate" di un logical volume, che si possono montare e usare così come il volume originale, la differenza è che al momento della creazione bisogna specificare quanto possono "crescere". L'idea è che per quel che rimane uguale all'originale, si usano i dati dell'originale, mentre le differenze vengono scritte nello spazio indicato, e perciò non è necesario avere sui volumi fisici uno spazio pari al doppio dell'originale. Gli snapshot sono molto utili per fare backup online di sistemi attivi.

lvcreate -L500 -s -n mysnapshot /dev/backupVG0/backupLV0

crea un logical volume snapshot dal nome mysnapshot

mkdir /mnt/mysnapshot
mount /dev/backupVG0/mysnapshot /mnt/mysnapshot

monta lo snapshot

umount /dev/backupVG0/mysnapshot
lvremove /dev/backupVG0/mysnapshot

smonta lo snapshot e lo rimuove

Documentazione utile

Le pagine man dei tool di LVM sono esaurienti e molto amichevoli. Un buon punto di partenza è man lvm.

LVM HOWTO
How To Create Linux LVM In 3 Minutes
A simple introduction to working with LVM
A Beginner's Guide To LVM
Mounting LVM Disk using Ubuntu livecd
ext3 online resizing

Trackback URL for this post:

http://gerlos.altervista.org/trackback/444

commenti

ritratto di gerlos

GUI per LVM

Neanche ho finito di scrivere questo articolo, e scopro che diskdrake, lo strumento di partizionamento "di serie" nel pannello di controllo di Mandriva, dotato di una gradevole e funzionale interfaccia grafica, è finalmente in grado di creare e gestire file system su LVM!

Avevo già sperimentato con diskdrake prima di scrivere questa pagina, ma senza mai far caso alle funzioni per LVM, e anche quando sono tornato a vedere se supportava LVM, mi ero imbattuto in un bug che mi aveva convinto a usare solo la riga di comando.

Oggi, scopro con piacere che Mandriva ha risolto i bug che riguardavano la gestione di volumi LVM, e finalmente abbiamo un programma ad interfaccia grafica ben fatto (meglio del più famoso gparted, imho), in grado di gestire volumi LVM!

Ci tengo a far rilevare che, ad oggi, che io sappia, diskdrake è l'unico programma di partizionamento ad interfaccia grafica in grado di amministrare volumi LVM.
Se lo userò? Non so, probabilmente non lo userò mai, ormai mi è automatico fare molte cose con il terminale, ma è bello sapere che c'è un'interfaccia grafica per i momenti di pigrizia. ;-) In ogni caso:
Ben fatto Mandriva!!!

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Allowed HTML tags: <a> <em> <strong> <del> <cite> <code> <img> <ul> <ol> <li> <dl> <dt> <dd> <pre>
  • Linee e paragrafi vanno a capo automaticamente.
  • Insert Flickr images: [flickr-photo:id=230452326,size=s] or [flickr-photoset:id=72157594262419167,size=m].
  • Indirizzi web o e-mail vengono trasformati in link automaticamente

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
Per provare che sei un visitatore umano, rispondi a questa domanda. È per evitare l'inserimento di messaggi spam.
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.