Difference between revisions of "LVM (Italiano)"

From ArchWiki
Jump to: navigation, search
m (typos)
(17 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
[[Category:Getting and installing Arch (Italiano)]]
 
[[Category:Getting and installing Arch (Italiano)]]
[[Category:Storage (Italiano)]]
+
[[Category:File systems (Italiano)]]
[[Category:HOWTOs (Italiano)]]
+
[[cs:LVM]]
 
+
[[de:LVM]]
{{Article summary start}}
+
[[es:LVM]]
{{Article summary text|Guida su come usare LVM per partizionare i propri dischi fissi in maniera flessibile.}}
+
[[en:LVM]]
{{Article summary heading|Traduzioni disponibili}}
+
[[fr:LVM]]
{{i18n_entry|English|LVM}}
+
[[it:LVM]]
{{i18n_entry|Italiano|LVM (Italiano)}}
+
[[ru:LVM]]
 +
[[tr:LVM]]
 +
[[zh-CN:LVM]]
 +
{{Out of date|Questo articolo non è stato aggiornato secondo la nuova procedure di installazione fornita dai nuovi script di installazione di Arch. I riferimenti ad /arch/setup e all'installer non sono applicabili ai nuovi media di installazione.}}
 +
{{Article summary start|Sommario}}
 +
{{Article summary text|Questo articolo fornirà un esempio su come installare e configurare Arch Linux utilizzando il Logical Volume Manager (LVM).}}  
 +
{{Article summary heading|Software richiesto}}
 +
{{Article summary text|{{pkg|lvm2}}}}
 +
{{Article summary heading|Articoli Correlati}}
 +
{{Article summary wiki|Software RAID and LVM}}
 +
{{Article summary wiki|System Encryption with LUKS}}
 
{{Article summary end}}
 
{{Article summary end}}
  
 +
==Introduzione==
 +
{{Wikipedia|Logical Volume Manager (Linux)}}
  
=Introduzione=
+
'''LVM''' (Logical Volume Management) utilizza la funzione di [http://sources.redhat.com/dm/ device-mapper] del kernel Linux per fornire un sistema di partizioni che sia indipendente dalla sottostante struttura del disco fisico. Con LVM è possibile crere uno spazio di archiviazione astratto ed avere "partizioni virtuali" il che rende più facile ingrandirene o ridurne la dimensione (sempre che il filesystem che vi risede lo permetta) permette inoltre di aggiungere/rimuovere partizioni senza preoccuparsi di avere spazio contiguo a disposizione su uno specifico disco, senza incorrere nel problema di effettuare un fdisk su un disco in uso (senza preoccuparsi se il kernel stia usando la vecchia o la nuova tavola delle partizioni) e senza aver bisogno di spostare altre partizioni dal loro posto. Questo è una semplificazione nella gestione: non fornisce nessuna sicurezza per i dati. Comunque, si integra bene con le altre due tecnologie che vengono utilizzate.
  
LVM (Logical Volume Manager) è una tecnologia che permette di creare dischi e partizioni "virtuali" a partire dalle normali partizioni dei dispositivi di archiviazione presenti, ottenendo un sistema molto più flessibile del partizionamento classico dei dischi.  
+
Nota che LVM non è utilizzato per la partizione {{ic|/boot}}, a causa di problemi con il bootloader.
 +
{{Tip|/boot non può risiedere su di una partizione LVM se viene utilizzato [[GRUB Legacy (Italiano)|GRUB Legacy]], il quale non supporta LVM. Se si vuole utilizzare LVM anche per la partizione di /boot sarà necessario utilizzare [[GRUB2 (Italiano)|GRUB2]]. }}
  
In LVM, la funzione della partizione è svolta dal Volume Logico (LV, Logical Volume). Ogni Volume Logico fa parte di un Gruppo di Volumi (VG, Volume Group), che sarebbe il dispositivo di archiviazione "virtuale" e  corrisponde a una o più partizioni reali (chiamate ognuna Volume Fisico - Physical Volume, PV),  anche su dischi rigidi distinti. Un disco rigido può per esempio avere 3 partizioni primarie usate con il metodo classico e una quarta partizione primaria marcata per essere usata da LVM. LVM vedrà quindi un Volume Fisico (PV) sul quale può creare un Gruppo di Volumi Logici (VG), e all'interno di questo creare i Volumi Logici (LV) da formattare e usare per archiviare file.
+
Le componenti base di LVM sono:
  
LVM permette una gestione più flessibile dello spazio di memoria. Per esempio, è possibile:
+
* '''Volume Fisico(Physical volume (PV))''': Partizione del disco(oppure anche l'intero disco o un file di loopback) sul quale è possibile creare un gruppo di volumi. Ha un header speciale ed è diviso in estensioni fisiche. Si pensi al volume fisico come grandi blocchi che possono essere usati per costruire il nostro hard drive.
* Usare diversi dischi rigidi come se fossero uno solo (VG)
+
* '''Gruppo di Volumi(Volume group (VG))''': Un insieme di volumi fisici usati come un unico volume di archiviazione(come un disco). Essi contengono i volumi logici.Si pensi ai gruppi di volumi come agli hard drive.
* Distribuire le "partizioni" (LV) su più dischi.
+
* '''Volume Logico(Logical volume (LV))''': Una "partizione virtuale/logica" che risiede in un volume logico ed è composta da estensioni fisiche. Si pensi ai volumi logici come una normale partizione.
* Ridimensionare/creare/eliminare a piacere le "partizioni" (LV) e i "dischi" (VG), senza preoccuparsi della posizione dei LV all'interno dei VG.
+
* '''Estensione Fisica(Physical extent (PE))''': Una piccola porzione di un disco (solitamente 4MB) che può assegnata ad un volume logico. Si pensi alle estensioni fisiche come porzioni di dischi che posso essere allocate ad una qualsiasi partizione.
* Ridimensionare/creare/eliminare partizioni (LV) e dischi (VG) ''online'' (i filesystem su di essi vanno ridimensionati a parte, anche se non tutti permettono di farlo ''online'')
+
 
* Usare nomi arbitrari per i VG e i LV
+
Con LVM sarà più facile gestire le proprie partizioni (volumi logici) rispetto ad un disco partizionato normalmente. Ad esempio, sarà possibile:
* Creare LV piccoli e ingrandirli in seguito se necessario
+
 
* Se finisce lo spazio su disco, si può comprare un disco aggiuntivo e aggiungere lo spazio a una partizione già esistente, senza fare passaggi vari di dati o ripartizionamenti.
+
* Usare ''un qualsiasi numero'' di dischi come un grande disco(VG)
 +
* Avere partizioni(LV) sparse ''sopra'' a diversi dischi (possono essere grandi quanto la capacità di archiviazione di tutti i dischi insieme)
 +
* Ridimensionare/creare/eliminare partizioni(LV) e dischi(VG) ''come si vuole'' (non esiste il vincolo della posizione dei volumi logici nel gruppo di volumi come invece per le normali partizioni)
 +
* Ridimensionare/creare/cancellare partizioni(LV) e dischi(VG) ''online'' (i filesystem che risiedono su di essi dovranno essere ridimensionati, ma solo alcuni supportano il ridimensionamento online)
 +
* ''Chiamare'' i propri dischi(VG) e le proprie partizioni(LV) come si desidera
 +
* Creare piccole partizioni(LV) e ridimensionarle  "''dinamicamente''" appena esse si riempono (l'allargamento del filesystem dovrà essere eseguito a mano, ma può essere effettuato online con alcuni filesystem)
 
* ...
 
* ...
  
 
Esempio:  
 
Esempio:  
 
+
'''Dischi fisici'''
 
                  
 
                  
Disco 1:                    /dev/sda                                 Disco 2:                   /dev/sdb
+
  Disco1 (/dev/sda):
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|Partition1 50GB tipo «Linux» |Partition2 80GB tipo «Linux LVM»    | |Partition1 100GB tipo «Linux LVM»                  |
+
    |Partizione1 50GB (Volume fisico)  |Partizione2 80GB (Volume fisico)      |
|/dev/sda1                   |/dev/sda2     (Volume fisico PV)    | |/dev/sdb1        (Volume fisico PV)              |
+
    |/dev/sda1                         |/dev/sda2                             |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _| | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _|
+
    |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
                                 
+
                                 
                                _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
+
  Disco2 (/dev/sdb):
                              |Volume Logico 1 20GB  |Volume Logico 2 30GB     |Volume Logico 3 130GB                    |
+
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                              |/dev/MyStorage/rootvol|/dev/MyStorage/homevol    |/dev/MyStorage/mediavol                  |
+
     |Partizione1 120GB (Volume fisico)                  |
                              |_ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
+
    |/dev/sdb1                                          |
Gruppo di Volumi Logici (VG) 1:                            /dev/MyStorage/ (= /dev/sda2 + /dev/sdb1)
+
    | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _|
  
Svantaggi:
+
'''Volumi logici LVM'''
* Microsoft Windows non è compatibile con il sistema LVM usato da GNU/Linux.
+
 +
  Gruppo di volumi1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
 +
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 +
    |Volume logico1  15GB  |volume logico2 35GB      |Volume logico3  200GB              |
 +
    |/dev/MyStorage/rootvol|/dev/MyStorage/homevol    |/dev/MyStorage/mediavol            |
 +
    |_ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
  
=Installazione=
+
Per riassumere: con LVM si può utilizzare tutto il proprio spazio di archiviazione come un unico grande disco (gruppo di volumi) ed avere una maggiore flessibilità nella gestione delle partizioni (volumi logici).
  
Il sistema ArchLinux di base possiede già il necessario per sfruttare LVM.
+
==Vantaggi==
 +
Qui sono elencate alcune cose che è possibile realizzare con LVM che non possono (oppure non sono facilmente realizzabili) con il semplice uso di mdadm, partizioni MBR, partizioni GPT, parted/gparted e strumenti a livello file come rsync.
 +
# Ridimensionamento online/live.
 +
# Non sono più necessarie partizioni estese (non lo sono nemmeno per i partizionamenti GPT)
 +
# Ridimensionare le partizioni senza il problema del loro ordine sul disco (non è necessario preoccuparsi dello spazio contiguo disponibile)
 +
# Migrazione online/live delle partizioni usate da servizi senza dover riavviare i servizi.
  
Per prima cosa bisogna caricare il modulo seguente:
+
Questo può essere molto utile su di un server, senza interfaccia grafica quindi, ma sarà necessario decidere se le sue caratteristiche valgono l'astrazione.
 +
 
 +
==Installazione==
 +
Prima poter procedere sarà necessario caricare il modulo appropriato:
 
  # modprobe dm-mod
 
  # modprobe dm-mod
 +
Se Arch Linux è già installata e si vuole solamente provare/aggiungere una partizione usando LVM, saltare al paragrafo [[#Partizionare i dischi|Partizionare i dischi]].
 +
 +
===Installare Arch Linux su LVM===
 +
Prima di eseguire gli script di installazione di Arch Linux ({{ic|/arch/setup}}), sarà necessario partizionare il disco con {{ic|cfdisk}} (oppure un altro strumento a piacimento). Dato che grub legacy (GRUB avente un numero versione minore di 1.0) non può effettuare il boot da volumi logici LVM non sarà possibile avere la partizione {{ic|/boot}} su LVM, creare quindi una partizione dedicata. 100 MB dovrebbero bastare. Una alternativa consiste nell'utilizzare LILO oppure GRUB versione 1.95 o maggiore.
 +
 +
===Partizionare i dischi===
 +
Successivamente sarà necessario creare una partizione per LVM. Il suo filesystem dovrebbe essere 'Linux LVM', usare quindi l'identificazione di partizione 0x8e (tipo di filesystem: 8e). Sarà necessario creare solo una partizione LVM su ogni disco che si intende utilizzare con LVM. I dischi logici risiederanno all'interno di queste partizioni quindi scegliere le dimensioni in modo adeguato. Se si intende utilizzare solo LVM e nessuna partizione esterna, usare tutto lo spazio libero su ogni disco.
 +
 +
{{attenzione|/boot non può risiedere su LVM se viene utilizzato [[GRUB Legacy (Italiano)|GRUB Legacy]], il quale non supporta LVM. Se si vuole utilizzare LVM anche per la partizione di /boot sarà necessario utilizzare [[GRUB2 (Italiano)|GRUB2]]. }}
  
====Partizionare i dischi====
+
{{Tip|Tutte le partizioni LVM su tutti i dischi possono essere configurate per apparire come un unico grande disco.}}
Creare le partizioni da dedicare a LVM. Il tipo (''type'' nel menu di cfdisk) di partizione da scegliere è 'Linux LVM', che ha codice '8E'. Dopo aver creato le partizioni si può uscire dal programma di partizionamento.
+
  
====Creare i Volumi Fisici (PV)====
+
===Creare i volumi fisici(Physical volumes)===
Un Volume fisico è una partizione inizializzata per essere usata da LVM mediante il comando:
+
Adesso sarà necessario inizializzare le partizioni così che possano essere utilizzate da LVM. Usare {{ic|fdisk -l}} per determinare quali partizioni hanno come tipo di filesystem 'Linux LVM' e creare il volume fisico su di esse:
  # pvcreate /dev/<u>sda2</u>
+
  # pvcreate /dev/sda2
ripetere il comando per tutte le partizioni che si intende usare con LVM.
+
Sostituire {{ic|/dev/sda2}} con le partizioni su cui si vuole creare il volume fisico. Questo comando crea un intestazione su tutte le partizioni così che possano essere usate per LVM.
Per visualizzare i Volumi Fisici attualmente presenti:
+
Si possono monitorare i volumi fisici creati con il comando:
 
  # pvdisplay
 
  # pvdisplay
  
====Creare i Gruppi di Volumi (VG)====
+
{{Nota|Se si utilizza un disco SSD utilizzare {{ic|pvcreate --dataalignment 1m /dev/sda2}} (per cancellare block size < 1MiB), consultare ad esempio [http://serverfault.com/questions/356534/ssd-erase-block-size-lvm-pv-on-raw-device-alignment questa discussione]}}
Un Gruppo di Volumi (VG) è un nuovo dispositivo di archiviazione "virtuale" formato da uno o più Volumi Fisici (PV). Si inizia creando un VG su un PV e poi si aggiungono altri PV allo stesso VG, in modo da aumentarne la capacità:
+
# vgcreate <u>VolGroup00</u> /dev/<u>sda2</u>
+
# vgextend <u>VolGroup00</u> /dev/<u>sdb1</u>
+
Al posto di VolGroup00 si può usareun nome qualunque.
+
  
Per visualizzare i VG creati e la loro composizione:
+
===Creare gruppi di volumi (Volume group)===
 +
Il prossimo passo consiste nel creare un gruppo di volumi su questo volume fisico. Prima si dovrà creare un gruppo di volumi su una delle nuove partizioni e successivamente aggiungere gli altri volumi fisici che lo comporranno:
 +
# vgcreate VolGroup00 /dev/sda2
 +
# vgextend VolGroup00 /dev/sdb1
 +
Sarà possibile utilizzare un qualsiasi altro nome invece di VolGroup00 per il gruppo di volumi durante la sua creazione. Sarà possibile controllare come si stanno espandendo i gruppi di volumi con il comando:
 
  # vgdisplay
 
  # vgdisplay
  
====Creare i Volumi Logici (LV)====
+
{{Nota|Sarà possibile creare più di un gruppo di volumi se necessario, ma così il nostro storage non sarà più rappresentato come un solo dico..}}
Un Volume Logico (LV) è l'omologo della partizione, quindi al suo interno verrà creato un filesystem e salvati file. Per creare un LV si usa il seguente comando:
+
# lvcreate <u>VolGroup00</u> -L <u>10</u>G -n <u>lvolhome</u>
+
Il nuovo LV ha nome ''lvolhome'' (ma si può usare un nome a piacere), è grande 10GB, si trova sul VG ''VolGroup00'' e vi si può accedere tramite il percorso /dev/VolGroup00/lvolhome o anche /dev/mapper/Volgroup00-lvolhome.
+
  
Per visualizzare tutti gli LV presenti:
+
===Creare i volumi logici (Logical Volumes)===
  # lvdisplay
+
Adesso verranno creati i volumi logici su questo gruppo di volumi. Creare il volume logico con il seguente comando specificando il nome del volume logico, la sua dimensione, ed il gruppo di volumi dove risiederà:
 +
  # lvcreate -L 10G VolGroup00 -n lvolhome
 +
Questo comando creerà un volume logico al quale sarà possibile accedere con {{ic|/dev/mapper/VolGroup00-lvolhome}} o {{ic|/dev/VolGroup00/lvolhome}}. Come per il gruppo di volumi, sarà possibile utilizzare qualsiasi nome per il volume logico durante la sua creazione.
  
'''Attenzione''': per creare un LV da usare come swap, usare il comando:
+
Per creare una partizione di swap su di un volume logico, sarà necessario un argomento aggiuntivo:
 
  # lvcreate -C y -L 10G VolGroup00 -n lvolswap
 
  # lvcreate -C y -L 10G VolGroup00 -n lvolswap
L'opzione ''-C y'' serve ad assegnare dello spazio contiguo al LV, in modo da velocizzarne l'accesso.
+
L'opzione {{ic|-C y}} è usata per creare una partizione contigua, cioè la partizione di swap non sarà allocata su più di un disco oppure su estensioni fisiche (PE) non contigue.
  
'''Suggerimento''': per creare un LV usando tutto lo spazio rimasto nel VG, usare:
+
Se si vuole riempire tutto lo spazio libero rimasto in un gruppo di volumi, utilizzare il seguente comando:
 
  # lvcreate -l +100%FREE VolGroup00 -n lvolmedia
 
  # lvcreate -l +100%FREE VolGroup00 -n lvolmedia
  
====Formattare e montare i Volumi Logici (LV)====
+
Si può controllare i volumi logici creati con:
I file di dispositivo relativi ai Volumi Logici (LV) creati sono disponibili in /dev/<u>NomeDelGruppoDiVolumi</u> e anche in /dev/mapper/. Se non sono presenti, provare a dare i seguenti comandi:
+
# lvdisplay
 +
 
 +
{{Nota|Potrebbe essere necessario caricare il modulo ''device-mapper'' del kernel ('''modprobe dm-mod''') affinché il comando sopra citato abbia successo.}}
 +
 
 +
{{Tip|Sarà possibile iniziare con relativamente piccole dimensioni per i volumi logici ed espanderli successivamente se necessario. Per semplicità lasciare dello spazio libero nel gruppo di volumi così da avere spazio per le espansioni dei volumi logici.}}
 +
 
 +
===Creare i filesystem ed effettuare il mount dei volumi logici===
 +
Adesso i volumi logici dovrebbero essere situati in {{ic|/dev/mapper/}} e {{ic|/dev/NomeGruppoDiVolumi}}. Se non fosse possibile trovarli, usare il prossimo comando per caricare il modulo per la creazione dei nodi dei device e per rendere accessibili i gruppi di volumi:
 
  # modprobe dm-mod
 
  # modprobe dm-mod
 +
# vgscan
 
  # vgchange -ay
 
  # vgchange -ay
A questo punto è possibile creare i filesystem sugli LV e montarli come normali partizioni:
+
Adesso sarà possibile creare i filesystem sui volumi logici ed effettuarne il mount come per le normali partizioni (se si sta installando Arch Linux, fare riferimento al paragrafo [[Beginners' Guide (Italiano)#Montare le partizioni|montare le partizioni]] per maggiori dettagli):
  # mkfs.ext3 /dev/VolGroup00/lvolhome
+
  # mkfs.ext3 /dev/mapper/VolGroup00-lvolhome
  # mount -t ext3 /dev/VolGroup00/lvolhome /home
+
  # mount /dev/mapper/VolGroup00-lvolhome /home
 +
<s>Se si sta installando Arch Linux, avviare {{ic|/arch/setup}}, selezionare ''Prepare Hard Drive'' direttamente al passaggio 3 ''Set Filesystem Mountpoints'' e '''''leggere le seguenti [[# Impostare i filesystem ed i punti di mount|sezioni]] prima di procedere con l'installazione!'''''</s>
  
 +
=== Impostare i filesystem ed i punti di mount ===
 +
* Quando si sceglie il punto di mount, selezionare il volume logico appena creato (utilizzare: {{ic|/dev/mapper/Volgroup00-lvolhome}}).<br>NON selezionare le partizioni usate per creare il volume logico (non utilizzare: {{ic|/dev/sda2}}).
  
=Installare ArchLinux su un Volume Logico=
+
=== Configurare il sistema ===
 +
L'opzione {{ic|1=use_lvmetad = 1}} deve essere impostata nel file {{ic|/etc/lvm/lvm.conf}}. Come di default nelle nuove configurazioni fornite dal pacchetto {{pkg|lvm2}} - nel caso sia presente il file {{ic|lvm.conf.pacnew}}, sarà necessario confrontare i cambiamenti dei file.
  
È possibile installare ArchLinux su dei Volumi Logici (LV), basta  seguire alcune precauzioni:
+
In caso si abbia necessità del monitoraggio dei volumi(necessario per l'uso degli snapshots):
# Dal momento che GRUB (0.9x) non supporta LVM, bisogna creare una partizione a parte per la directory /boot, la configurazione minima sarà: 1 partizione primaria di tipo «Linux» (codice 83) per "/boot", e una partizione di tipo «Linux LVM» (codice 8E) con all'interno un Volume Logico per la directory radice "/". In alternativa è possibile usare GRUB2 (1.9x) o Lilo, che sono compatibili con LVM, e partizionare il disco a piacere.
+
# Le partizioni di tipo «Linux LVM» (codice 8E) NON vanno usate per i mountpoints. Usare invece i Volumi Logici che verranno presentati insieme alle partizioni (es: /dev/mapper/Volgroup00-lvolhome). (''Set Filesystem Mountpoints'')
+
# Assicurarsi di avere la riga ''USELVM="yes"'' in '''/etc/rc.conf''', se la directory radice del sistema si trova su un Volume Logico. (''Configure System'')
+
# Aggiungere ''lvm2'' alla lista HOOKS in '''/etc/mkinitcpio.conf''' subito prima di ''filesystems'' così il kernel sarà in grado di accedere ai Volumi Logici in avvio del sistema. (''Configure System'')
+
# Assicurarsi che in '''/boot/grub/menu.lst''' l'opzione "root=" sia corretta: (''Install Bootloader'')
+
...
+
# (0) Arch Linux
+
title  Arch Linux
+
root  (hd0,0)
+
kernel /vmlinuz26 '''root=/dev/mapper/VolGroup00-lvolroot''' resume=/dev/mapper/VolGroup00-lvolswap ro
+
initrd /kernel26.img
+
...
+
Se si usa Lilo, controllare invece nel file '''/etc/lilo.conf''':
+
image=/boot/vmlinuz26
+
        label=arch
+
        append="'''root=/dev/mapper/VolGroup00-lvolroot''' resume=/dev/mapper/VolGroup00-lvolswap ro"
+
        initrd=/boot/kernel26.img
+
  
= Ridimensionare un Volume Logico =
+
# systemctl enable lvm-monitoring.service
  
== Ingrandire un Volume Logico (LV) ==
+
Se si utilizza LVM su un device criptato, sarà necessario utilizzare invece:
Per ingrandire un Volume Logico (LV) basta dare il comando:
+
# lvextend -L <u>20G</u> <u>VolGroup00/lvolhome</u>
+
L'opzione ''-L 20G'' indica la nuova dimensione del volume logico, o anche di quanto si vuole aumentare la partizione:
+
# lvextend -L <u>+5G</u> <u>VolGroup00/lvolhome</u>
+
Per ingrandire il volume fino al massimo disponibile:
+
# lvextend -l +100%FREE <u>VolGroup00/lvolhome</u>
+
Una volta esteso il volume, bisogna estendere anche il filesystem in esso contenuto:
+
# resize2fs /dev/<u>VolGroup00/lvolhome</u>
+
'''Attenzione''': alcuni filesystem potrebbero subire delle perdite di dati, o necessitare di essere prima smontati.
+
  
== Rimpicciolire un Volume Logico (LV) ==
+
# systemctl enable lvm-on-crypt.service
{{Warning|Se la nuova dimensione del volume è minore dello spazio occupato dai file, verranno eliminati dati dal volume!}}  
+
 
Per ridurre un volume bisogna prima ridurre il filesystem in esso contenuto, ma per sicurezza è meglio ridurlo prima un po' di più e successivamente ingrandirlo quel tanto che basta per riempire il volume:
+
Oppure, se si utilizza sysvinit, modificare il valore di {{ic|USELVM}} in modo appropriato:
# resize2fs /dev/<u>VolGroup00/lvolhome</u> <u>9G</u>
+
 
A questo punto basta assegnare la nuova dimensione al volume:
+
{{hc|# vim /etc/rc.conf|<nowiki>USELVM="yes"</nowiki>}}
  # lvreduce -L 10G VolGroup00/lvolhome
+
 
Si può in alternativa indicare di quanto ridurre il volume:
+
A partire dal 02.12.2013 saranno necessarie le segueti modifiche. Sarà necessario assicurarsi che gli hook {{ic|lvm2}} ed {{ic|udev}} in [[mkinitcpio (Italiano)|mkinitcpio]] siano abilitati.
# lvreduce -L -5G VolGroup00/lvolhome
+
 
Per ultimo, ingrandire nuovamente il filesystem per riempire il volume appena ridimensionato:
+
{{hc|/etc/mkinitcpio.conf|<nowiki>HOOKS="base udev ... lvm2 filesystems"</nowiki>}}
 +
 
 +
Assicurarsi anche che sia abilitato il modulo {{ic|dm_mod}}.
 +
 
 +
{{hc|/etc/mkinitcpio.conf:|<nowiki>MODULES="dm_mod ..."</nowiki>}}
 +
 
 +
In caso siano state effettuate delle modifiche al file, sarà necessario [[Mkinitcpio (Italiano)#Creazione dell'immagine ed attivazione|ricreare]] l'initramfs, in modo da renderle effetive.
 +
 
 +
Può essere necessario aggiongere alle opzioni del kernel, {{ic|dolvm}}. {{ic|<nowiki>root=</nowiki>}} dovrebbe essere impostato sul volume logico, ad esempio {{ic|<nowiki>/dev/mapper/{vg-name}-{lv-name}</nowiki>}}
 +
 
 +
== Configurazione ==
 +
=== Ingrandire un volume logico ===
 +
Per ingrandire un volume logico prima sarà necessario ingrandire il volume logico e poi il filesystem per poter usare il nuovo spazio libero. Ipotizzando di avere un volume logico di 15GB con un filesystem ext3 e si vuole ingrandirlo a 20GB. Saranno necessario seguire i seguenti passaggi:
 +
  # lvextend -L 20G VolGroup00/lvolhome (oppure lvresize -L +5G VolGroup00/lvolhome)
 
  # resize2fs /dev/VolGroup00/lvolhome
 
  # resize2fs /dev/VolGroup00/lvolhome
 +
Sarà possibile usare {{ic|lvresize}} invece di {{ic|lvextend}}.
  
== Add partition to a volume group ==
+
Se si vuole utilizzare tutto lo spazio libero in un gruppo di volumi, usare il seguente comando:
To add partition to you volume group you must first make its type 'Linux LVM' (for example with cfdisk). Then you need to create physical volume on it and extend volume group over it:
+
  # lvextend -l +100%FREE VolGroup00/lvolhome
  # pvcreate /dev/sdb1
+
# vgextend VolGroup00 /dev/sdb1
+
Now you have free space in your volume group that can be used by logical volumes in this group.
+
  
'''Information''': You can add partitions from any disks to volume groups.
+
{{attenzione|Non tutti i filesystem supportano l'ingrandimento senza perdite di dati e/o il ridimensionamento online.}}
 +
 
 +
{{Nota|Se non si ridimensiona il filesystem, si avrà un volume della solita dimensione precedente al ridimensionamento (il volume sarà più grande ma parzialmente inutilizzato).}}
 +
 
 +
=== Ridurre un volume logico ===
 +
Dato che probabilmente il filesystem sarà grande quanto il volume logico su cui risiede, sarà necessario prima ridurre il filesystem e dopo il volume logico. A seconda del filesystem utilizzato, potrebbe essere necessario effettuare l'umount prima. Ipotizzando di avere un volume logico di 15GB avente un filesystem ext3 e si desidera ridurlo a 10GB. Sarà necessario seguire i seguenti passaggi:
 +
# resize2fs /dev/VolGroup00/lvolhome 9G
 +
# lvreduce -L 10G VolGroup00/lvolhome (oppure lvresize -L -5G VolGroup00/lvolhome)
 +
# resize2fs /dev/VolGroup00/lvolhome
 +
In questo caso il filesystem viene ridotto in maniera maggiore di quanto viene ridotto il volume logico così non verrà accidentalmente tagliata fuori la fine del filesystem. Dopo sarà possibile espandere il filesystem fino a riempire lo spazio libero rimasto sul volume logico. Può essere utilizzato {{ic|lvresize}} invece di {{ic|lvreduce}}.
 +
 
 +
{{attenzione|
 +
*Non ridurre la dimensione del filesystem fino ad essere minore del volume dei dati in esso contenuti altrimenti si rischia una perdita di dati.
 +
*Non tutti i filesystem  supportano la riduzione senza perdita di dati e/o la riduzione online.}}
 +
 
 +
{{Nota|E' meglio ridurre il filesystem ad una dimensione minore rispetto al volume logico, così riducendo successivamente il volume logico, non verranno tagliati fuori alcuni dei dati alla fine del filesystem.}}
 +
 
 +
=== Rimuovere volumi logici ===
 +
{{attenzione|Prima di rimuovere un volume logico, assicurarsi di trasferire altrove tutti i dati che si desidera mantenere, altrimenti andranno persi!}}
 +
 
 +
Prima, identificare il nome del volume logico che si desidera rimuovere. Si può ottenere una lista di tutti i volumi logici presenti nel sistema con:
 +
 
 +
{{bc|# lvs}}
 +
 
 +
Poi, controllare il punto di mount per il volume logico scelto...:
 +
 
 +
{{bc|$ df -h}}
 +
 
 +
... ed effettuare l'umount:
 +
 
 +
{{bc|# umount /punto_di_mount}}
 +
 
 +
Infine, rimuovere il volume logico:
 +
 
 +
{{bc|# lvremove /dev/yourVG/yourLV}}
 +
 
 +
Confermare premendo {{ic|y}} e sarà rimosso.
 +
 
 +
Non dimenticare di aggiornare il file {{ic|/etc/fstab}}!
 +
 
 +
Sarà possibile verificare la rimozione del volume logico utilizzando nuovamente come utente root il comando "lvs" (vedere il primo passaggio di questa sezione).
 +
 
 +
=== Aggiungere un volume fisico ad un gruppo di volumi ===
 +
Per prima cosa creare un volume fisico sulla periferica a blocchi che verrà utilizzata, successivamente estendere il gruppo di volumi:
 +
 +
{{bc|1=
 +
# pvcreate /dev/sdb1
 +
# vgextend VolGroup00 /dev/sdb1}}
 +
Questo aumenterà il numero totale di estensioni fisiche(Piscal Extens) del gruppo di volumi, che potranno essere allocate dai volumi logici.
 +
{{Nota|E' considerata buona norma utilizzare il corretto codice partizione per la propria tavola delle partizioni: {{ic|8e}} per il partizionamento MBR, e {{ic|8e00}} per il partizionamento GPT.}}
  
== Remove partition from a volume group ==
+
=== Rimuovere una partizione da un gruppo di volumi ===
All of the data on that partition needs to be moved to another partition. Fortunately, lvm makes this easy:
+
Tutti i dati su questa partizione devono essere spostati su di una altra partizione. Fortunatamente, LVM rende questo più facile:
# pvmove /dev/mapper/myvg-mypv
+
If you want to have the data on a specific physical volume, specify that as the second argument to pvmove.
+
  
Then the physical volume needs to be removed from the volume group:
+
# pvmove /dev/sdb1
  # vgreduce myVg /dev/mapper/myvg-mypv
+
Se si desidera che i dati risiedano su di un determinato volume fisico, specificarlo come secondo argomento al comando {{ic|pvmove}}:
Or remove all empty physical volumes:
+
# pvmove /dev/sdb1 /dev/sdf1
 +
Poi il volume fisico che deve essere rimosso dal gruppo di volumi:
 +
  # vgreduce myVg /dev/sdb1
 +
Oppure rimuovere tutti i volumi fisici vuoti:
 
  # vgreduce --all vg0
 
  # vgreduce --all vg0
  
And lastly, if you want to use the partition for something else, and want to avoid lvm thinking that the partition is a physical volume:
+
Ed infine, se si desidera utilizzare le partizioni in altro modo, per evitare che LVM veda la partizione come un volume fisico:
  # pvremove /dev/mapper/myvg-removedpv
+
  # pvremove /dev/sdb1
  
== Snapshots ==
+
=== Snapshots ===
====Introduction====
+
====Introduzione====
LVM allows you to take a snapshot of your system in a much more efficient way than a traditional backup. It does this efficiently by using a COW (copy-on-write) policy. The initial snapshot you take simply contains hard-links to the inodes of your actual data. So long as your data remains unchanged, the snapshot merely contains there inode pointers and not the data itself. Whenever you modify a file or directory that the snapshot points to, LVM automatically clones the data, the old copy referenced by the snapshot, and the new copy referenced by your active system. Thus, you can snapshot a system with 35GB of data using just 2GB of free space so long as you modify less than 2GB (on both the original and snapshot).
+
LVM permette di creare uno snapshot del sistema in maniera molto più efficiente dei tradizionali metodi di backup. Questa efficenza è data dall'utilizzo della policy COW (copy-no-write). Lo snapshot iniziale conterrà hard-link agli inode dei dati attuali. Fino a che i dati restano invariati, lo snapshot conterrà solo i link agli inode e non i dati stessi. Quando verrà modificato un file o una cartella ai quali lo snapshot punta, LVM automaticamente clonerà i dati, la vecchia copia referenziata dallo snapshot, e la nuova copia referenziata dall'attuale sistema. In questo modo, è possibile effettuare uno snapshot di un sistema di 35GB di dati usando solamente 2GB di spazio libero fino a che le modifiche effettuate saranno inferiori ai 2 GB (in entrambi l'originale e lo snapshot).
  
====Configuration====
+
====Configurazione====
You create snapshot logical volumes just like normal ones.
+
Creare uno volume logico snapshot come i normali volumi logici.
  
 
  # lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-pv
 
  # lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-pv
With that volume, you may modify less than 100M of data, before the snapshot volume fills up.
+
Con questo volume, si potranno modificare meno di 100 M di dati, prima che il volume si riempa.
  
Todo: scripts to automate snapshots of root before updates, to rollback... updating menu.lst to boot snapshots (separate article?)
+
E’ importante inserire il modulo ''dm-snapshot'' nell’array MODULES nel file {{ic|/etc/mkinitcpio.conf}}, altrimenti il sistema non si avvierà. Se si effettua la modifica ad un sistema già installato ricostruire l’immagine con il comando:
 +
# mkinitcpio -g /boot/initramfs-linux.img
  
snapshots are primarily used to provide a frozen copy of a filesystem to make backups; a backup taking two hours provides a more consistent image of the filesystem than directly backing up the partition.
+
Todo: script per automatizzare lo snapshot della partizione di root prima degli aggiornamenti, per tornare allo stato precedente... aggiornare il file {{ic|menu.lst}} per effettuare il boot dagli snapshot (articolo separato?)
  
= Troubleshooting =
+
gli snapshot sono principalmente usati per fornire una copia congelata del filesystem per effetuare i backup; un backup impiega due ore e fornisce un immagine più consistente del filesystem piuttosto che effettuare il backup diretto della partizione.
====LVM commands don't work====
+
 
try preceeding commands with ''lvm'' like this:
+
== Risoluzione di problemi ==
 +
===I comandi LVM commands non funzionano===
 +
*Caricare il modulo appropriato:
 +
# modprobe dm_mod
 +
*Provare ad anteporre ''lvm'' ai comandi in questo modo:
 
  # lvm pvdisplay
 
  # lvm pvdisplay
  
= Tips & Tricks =
+
=== Nela pagina Set Filesystem Mountpoints i volumi logici non sono mostrati ===
Todo
+
Se si sta installando un sistema dove è già presente un gruppo di volumi, potrebbe non essere accessibile anche dopo il comando "modprobe dm-mod" ed i volumi logici non vengono rilevati.
 +
 
 +
In questo caso, potrebbe essere necessario eseguire:
 +
# vgscan
 +
oppure:
 +
# vgchange -ay <volgroup>
 +
 
 +
in modo da attivare il gruppo di volumi e rendere i volumi logici accessibili.
 +
 
 +
===LVM su periferiche rimovibili===
 +
Sintomi:
 +
~$ sudo vgscan
 +
  Reading all physical volumes.  This may take a while...
 +
  /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836585984: Input/output error
 +
  /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836643328: Input/output error
 +
  /dev/backupdrive1/backup: read failed after 0 of 4096 at 0: Input/output error
 +
  /dev/backupdrive1/backup: read failed after 0 of 4096 at 4096: Input/output error
 +
  Found volume group "backupdrive1" using metadata type lvm2
 +
  Found volume group "networkdrive" using metadata type lvm2
 +
 
 +
Cause:
 +
:Rimuovendo un disco esterno con LVM senza disattivare il gruppo(i) di volumi prima. Prima di disconnettere, assicurarsi di:
 +
# vgchange -an <volume group name>
 +
 
 +
Soluzione: (ipotizzando che sia già stato provato ad attivare il gruppo di volumi con il comando vgchange -ay <vg>, e siano stati restituiti degli errori di Input/output
 +
# vgchange -an <volume group name>
 +
:Scollegare il disco esterno ed aspettare alcuni minuti
 +
# vgscan
 +
# vgchange -ay <volume group name>
  
= More Resources =
+
== Altre risorse ==
Other LVM articles on the Archwiki:
+
* [http://sourceware.org/lvm2/ LVM2 Resource Page] su SourceWare.org
* [[Installing_with_Software_RAID_or_LVM|Installing with software RAID or LVM]]
+
* [http://tldp.org/HOWTO/LVM-HOWTO/ LVM HOWTO] articolo del Linux Documentation Project
* [[RAID_Encryption_LVM|RAID encryption LVM]]
+
* [http://www.gentoo.org/doc/en/lvm2.xml Installazione di Gentoo su LVM2] guida della documentazione di Gentoo
External resources:
+
* [http://en.gentoo-wiki.com/wiki/LVM LVM] articolo del Wiki di Gentoo
* [http://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) LVM on wikipedia]
+
* [http://www.joshbryan.com/blog/2008/01/02/lvm2-mirrors-vs-md-raid-1LVM2 Mirrors vs. MD Raid 1] post by Josh Bryan
* [http://tldp.org/HOWTO/LVM-HOWTO/ LVM HOWTO]
+

Revision as of 10:42, 1 September 2013

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: Questo articolo non è stato aggiornato secondo la nuova procedure di installazione fornita dai nuovi script di installazione di Arch. I riferimenti ad /arch/setup e all'installer non sono applicabili ai nuovi media di installazione. (Discuss in Talk:LVM (Italiano)#)
Template:Article summary start

Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary end

Introduzione

Template:Wikipedia

LVM (Logical Volume Management) utilizza la funzione di device-mapper del kernel Linux per fornire un sistema di partizioni che sia indipendente dalla sottostante struttura del disco fisico. Con LVM è possibile crere uno spazio di archiviazione astratto ed avere "partizioni virtuali" il che rende più facile ingrandirene o ridurne la dimensione (sempre che il filesystem che vi risede lo permetta) permette inoltre di aggiungere/rimuovere partizioni senza preoccuparsi di avere spazio contiguo a disposizione su uno specifico disco, senza incorrere nel problema di effettuare un fdisk su un disco in uso (senza preoccuparsi se il kernel stia usando la vecchia o la nuova tavola delle partizioni) e senza aver bisogno di spostare altre partizioni dal loro posto. Questo è una semplificazione nella gestione: non fornisce nessuna sicurezza per i dati. Comunque, si integra bene con le altre due tecnologie che vengono utilizzate.

Nota che LVM non è utilizzato per la partizione /boot, a causa di problemi con il bootloader.

Tip: /boot non può risiedere su di una partizione LVM se viene utilizzato GRUB Legacy, il quale non supporta LVM. Se si vuole utilizzare LVM anche per la partizione di /boot sarà necessario utilizzare GRUB2.

Le componenti base di LVM sono:

  • Volume Fisico(Physical volume (PV)): Partizione del disco(oppure anche l'intero disco o un file di loopback) sul quale è possibile creare un gruppo di volumi. Ha un header speciale ed è diviso in estensioni fisiche. Si pensi al volume fisico come grandi blocchi che possono essere usati per costruire il nostro hard drive.
  • Gruppo di Volumi(Volume group (VG)): Un insieme di volumi fisici usati come un unico volume di archiviazione(come un disco). Essi contengono i volumi logici.Si pensi ai gruppi di volumi come agli hard drive.
  • Volume Logico(Logical volume (LV)): Una "partizione virtuale/logica" che risiede in un volume logico ed è composta da estensioni fisiche. Si pensi ai volumi logici come una normale partizione.
  • Estensione Fisica(Physical extent (PE)): Una piccola porzione di un disco (solitamente 4MB) che può assegnata ad un volume logico. Si pensi alle estensioni fisiche come porzioni di dischi che posso essere allocate ad una qualsiasi partizione.

Con LVM sarà più facile gestire le proprie partizioni (volumi logici) rispetto ad un disco partizionato normalmente. Ad esempio, sarà possibile:

  • Usare un qualsiasi numero di dischi come un grande disco(VG)
  • Avere partizioni(LV) sparse sopra a diversi dischi (possono essere grandi quanto la capacità di archiviazione di tutti i dischi insieme)
  • Ridimensionare/creare/eliminare partizioni(LV) e dischi(VG) come si vuole (non esiste il vincolo della posizione dei volumi logici nel gruppo di volumi come invece per le normali partizioni)
  • Ridimensionare/creare/cancellare partizioni(LV) e dischi(VG) online (i filesystem che risiedono su di essi dovranno essere ridimensionati, ma solo alcuni supportano il ridimensionamento online)
  • Chiamare i propri dischi(VG) e le proprie partizioni(LV) come si desidera
  • Creare piccole partizioni(LV) e ridimensionarle "dinamicamente" appena esse si riempono (l'allargamento del filesystem dovrà essere eseguito a mano, ma può essere effettuato online con alcuni filesystem)
  • ...

Esempio:

Dischi fisici
                
  Disco1 (/dev/sda):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    |Partizione1 50GB (Volume fisico)  |Partizione2 80GB (Volume fisico)      |
    |/dev/sda1                         |/dev/sda2                             |
    |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
                                  
  Disco2 (/dev/sdb):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    |Partizione1 120GB (Volume fisico)                  |
    |/dev/sdb1                                          |
    | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _|
Volumi logici LVM

  Gruppo di volumi1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    |Volume logico1  15GB  |volume logico2 35GB       |Volume logico3  200GB               |
    |/dev/MyStorage/rootvol|/dev/MyStorage/homevol    |/dev/MyStorage/mediavol             |
    |_ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |

Per riassumere: con LVM si può utilizzare tutto il proprio spazio di archiviazione come un unico grande disco (gruppo di volumi) ed avere una maggiore flessibilità nella gestione delle partizioni (volumi logici).

Vantaggi

Qui sono elencate alcune cose che è possibile realizzare con LVM che non possono (oppure non sono facilmente realizzabili) con il semplice uso di mdadm, partizioni MBR, partizioni GPT, parted/gparted e strumenti a livello file come rsync.

  1. Ridimensionamento online/live.
  2. Non sono più necessarie partizioni estese (non lo sono nemmeno per i partizionamenti GPT)
  3. Ridimensionare le partizioni senza il problema del loro ordine sul disco (non è necessario preoccuparsi dello spazio contiguo disponibile)
  4. Migrazione online/live delle partizioni usate da servizi senza dover riavviare i servizi.

Questo può essere molto utile su di un server, senza interfaccia grafica quindi, ma sarà necessario decidere se le sue caratteristiche valgono l'astrazione.

Installazione

Prima poter procedere sarà necessario caricare il modulo appropriato:

# modprobe dm-mod

Se Arch Linux è già installata e si vuole solamente provare/aggiungere una partizione usando LVM, saltare al paragrafo Partizionare i dischi.

Installare Arch Linux su LVM

Prima di eseguire gli script di installazione di Arch Linux (/arch/setup), sarà necessario partizionare il disco con cfdisk (oppure un altro strumento a piacimento). Dato che grub legacy (GRUB avente un numero versione minore di 1.0) non può effettuare il boot da volumi logici LVM non sarà possibile avere la partizione /boot su LVM, creare quindi una partizione dedicata. 100 MB dovrebbero bastare. Una alternativa consiste nell'utilizzare LILO oppure GRUB versione 1.95 o maggiore.

Partizionare i dischi

Successivamente sarà necessario creare una partizione per LVM. Il suo filesystem dovrebbe essere 'Linux LVM', usare quindi l'identificazione di partizione 0x8e (tipo di filesystem: 8e). Sarà necessario creare solo una partizione LVM su ogni disco che si intende utilizzare con LVM. I dischi logici risiederanno all'interno di queste partizioni quindi scegliere le dimensioni in modo adeguato. Se si intende utilizzare solo LVM e nessuna partizione esterna, usare tutto lo spazio libero su ogni disco.

Attenzione: /boot non può risiedere su LVM se viene utilizzato GRUB Legacy, il quale non supporta LVM. Se si vuole utilizzare LVM anche per la partizione di /boot sarà necessario utilizzare GRUB2.
Tip: Tutte le partizioni LVM su tutti i dischi possono essere configurate per apparire come un unico grande disco.

Creare i volumi fisici(Physical volumes)

Adesso sarà necessario inizializzare le partizioni così che possano essere utilizzate da LVM. Usare fdisk -l per determinare quali partizioni hanno come tipo di filesystem 'Linux LVM' e creare il volume fisico su di esse:

# pvcreate /dev/sda2

Sostituire /dev/sda2 con le partizioni su cui si vuole creare il volume fisico. Questo comando crea un intestazione su tutte le partizioni così che possano essere usate per LVM. Si possono monitorare i volumi fisici creati con il comando:

# pvdisplay
Nota: Se si utilizza un disco SSD utilizzare pvcreate --dataalignment 1m /dev/sda2 (per cancellare block size < 1MiB), consultare ad esempio questa discussione

Creare gruppi di volumi (Volume group)

Il prossimo passo consiste nel creare un gruppo di volumi su questo volume fisico. Prima si dovrà creare un gruppo di volumi su una delle nuove partizioni e successivamente aggiungere gli altri volumi fisici che lo comporranno:

# vgcreate VolGroup00 /dev/sda2
# vgextend VolGroup00 /dev/sdb1

Sarà possibile utilizzare un qualsiasi altro nome invece di VolGroup00 per il gruppo di volumi durante la sua creazione. Sarà possibile controllare come si stanno espandendo i gruppi di volumi con il comando:

# vgdisplay
Nota: Sarà possibile creare più di un gruppo di volumi se necessario, ma così il nostro storage non sarà più rappresentato come un solo dico..

Creare i volumi logici (Logical Volumes)

Adesso verranno creati i volumi logici su questo gruppo di volumi. Creare il volume logico con il seguente comando specificando il nome del volume logico, la sua dimensione, ed il gruppo di volumi dove risiederà:

# lvcreate -L 10G VolGroup00 -n lvolhome

Questo comando creerà un volume logico al quale sarà possibile accedere con /dev/mapper/VolGroup00-lvolhome o /dev/VolGroup00/lvolhome. Come per il gruppo di volumi, sarà possibile utilizzare qualsiasi nome per il volume logico durante la sua creazione.

Per creare una partizione di swap su di un volume logico, sarà necessario un argomento aggiuntivo:

# lvcreate -C y -L 10G VolGroup00 -n lvolswap

L'opzione -C y è usata per creare una partizione contigua, cioè la partizione di swap non sarà allocata su più di un disco oppure su estensioni fisiche (PE) non contigue.

Se si vuole riempire tutto lo spazio libero rimasto in un gruppo di volumi, utilizzare il seguente comando:

# lvcreate -l +100%FREE VolGroup00 -n lvolmedia

Si può controllare i volumi logici creati con:

# lvdisplay
Nota: Potrebbe essere necessario caricare il modulo device-mapper del kernel (modprobe dm-mod) affinché il comando sopra citato abbia successo.
Tip: Sarà possibile iniziare con relativamente piccole dimensioni per i volumi logici ed espanderli successivamente se necessario. Per semplicità lasciare dello spazio libero nel gruppo di volumi così da avere spazio per le espansioni dei volumi logici.

Creare i filesystem ed effettuare il mount dei volumi logici

Adesso i volumi logici dovrebbero essere situati in /dev/mapper/ e /dev/NomeGruppoDiVolumi. Se non fosse possibile trovarli, usare il prossimo comando per caricare il modulo per la creazione dei nodi dei device e per rendere accessibili i gruppi di volumi:

# modprobe dm-mod
# vgscan
# vgchange -ay

Adesso sarà possibile creare i filesystem sui volumi logici ed effettuarne il mount come per le normali partizioni (se si sta installando Arch Linux, fare riferimento al paragrafo montare le partizioni per maggiori dettagli):

# mkfs.ext3 /dev/mapper/VolGroup00-lvolhome
# mount /dev/mapper/VolGroup00-lvolhome /home

Se si sta installando Arch Linux, avviare /arch/setup, selezionare Prepare Hard Drive direttamente al passaggio 3 Set Filesystem Mountpoints e leggere le seguenti sezioni prima di procedere con l'installazione!

Impostare i filesystem ed i punti di mount

  • Quando si sceglie il punto di mount, selezionare il volume logico appena creato (utilizzare: /dev/mapper/Volgroup00-lvolhome).
    NON selezionare le partizioni usate per creare il volume logico (non utilizzare: /dev/sda2).

Configurare il sistema

L'opzione use_lvmetad = 1 deve essere impostata nel file /etc/lvm/lvm.conf. Come di default nelle nuove configurazioni fornite dal pacchetto lvm2 - nel caso sia presente il file lvm.conf.pacnew, sarà necessario confrontare i cambiamenti dei file.

In caso si abbia necessità del monitoraggio dei volumi(necessario per l'uso degli snapshots):

# systemctl enable lvm-monitoring.service

Se si utilizza LVM su un device criptato, sarà necessario utilizzare invece:

# systemctl enable lvm-on-crypt.service

Oppure, se si utilizza sysvinit, modificare il valore di USELVM in modo appropriato:

# vim /etc/rc.conf
USELVM="yes"

A partire dal 02.12.2013 saranno necessarie le segueti modifiche. Sarà necessario assicurarsi che gli hook lvm2 ed udev in mkinitcpio siano abilitati.

/etc/mkinitcpio.conf
HOOKS="base udev ... lvm2 filesystems"

Assicurarsi anche che sia abilitato il modulo dm_mod.

/etc/mkinitcpio.conf:
MODULES="dm_mod ..."

In caso siano state effettuate delle modifiche al file, sarà necessario ricreare l'initramfs, in modo da renderle effetive.

Può essere necessario aggiongere alle opzioni del kernel, dolvm. root= dovrebbe essere impostato sul volume logico, ad esempio /dev/mapper/{vg-name}-{lv-name}

Configurazione

Ingrandire un volume logico

Per ingrandire un volume logico prima sarà necessario ingrandire il volume logico e poi il filesystem per poter usare il nuovo spazio libero. Ipotizzando di avere un volume logico di 15GB con un filesystem ext3 e si vuole ingrandirlo a 20GB. Saranno necessario seguire i seguenti passaggi:

# lvextend -L 20G VolGroup00/lvolhome (oppure lvresize -L +5G VolGroup00/lvolhome)
# resize2fs /dev/VolGroup00/lvolhome

Sarà possibile usare lvresize invece di lvextend.

Se si vuole utilizzare tutto lo spazio libero in un gruppo di volumi, usare il seguente comando:

# lvextend -l +100%FREE VolGroup00/lvolhome
Attenzione: Non tutti i filesystem supportano l'ingrandimento senza perdite di dati e/o il ridimensionamento online.
Nota: Se non si ridimensiona il filesystem, si avrà un volume della solita dimensione precedente al ridimensionamento (il volume sarà più grande ma parzialmente inutilizzato).

Ridurre un volume logico

Dato che probabilmente il filesystem sarà grande quanto il volume logico su cui risiede, sarà necessario prima ridurre il filesystem e dopo il volume logico. A seconda del filesystem utilizzato, potrebbe essere necessario effettuare l'umount prima. Ipotizzando di avere un volume logico di 15GB avente un filesystem ext3 e si desidera ridurlo a 10GB. Sarà necessario seguire i seguenti passaggi:

# resize2fs /dev/VolGroup00/lvolhome 9G
# lvreduce -L 10G VolGroup00/lvolhome (oppure lvresize -L -5G VolGroup00/lvolhome)
# resize2fs /dev/VolGroup00/lvolhome

In questo caso il filesystem viene ridotto in maniera maggiore di quanto viene ridotto il volume logico così non verrà accidentalmente tagliata fuori la fine del filesystem. Dopo sarà possibile espandere il filesystem fino a riempire lo spazio libero rimasto sul volume logico. Può essere utilizzato lvresize invece di lvreduce.

Attenzione:
  • Non ridurre la dimensione del filesystem fino ad essere minore del volume dei dati in esso contenuti altrimenti si rischia una perdita di dati.
  • Non tutti i filesystem supportano la riduzione senza perdita di dati e/o la riduzione online.
Nota: E' meglio ridurre il filesystem ad una dimensione minore rispetto al volume logico, così riducendo successivamente il volume logico, non verranno tagliati fuori alcuni dei dati alla fine del filesystem.

Rimuovere volumi logici

Attenzione: Prima di rimuovere un volume logico, assicurarsi di trasferire altrove tutti i dati che si desidera mantenere, altrimenti andranno persi!

Prima, identificare il nome del volume logico che si desidera rimuovere. Si può ottenere una lista di tutti i volumi logici presenti nel sistema con:

# lvs

Poi, controllare il punto di mount per il volume logico scelto...:

$ df -h

... ed effettuare l'umount:

# umount /punto_di_mount

Infine, rimuovere il volume logico:

# lvremove /dev/yourVG/yourLV

Confermare premendo y e sarà rimosso.

Non dimenticare di aggiornare il file /etc/fstab!

Sarà possibile verificare la rimozione del volume logico utilizzando nuovamente come utente root il comando "lvs" (vedere il primo passaggio di questa sezione).

Aggiungere un volume fisico ad un gruppo di volumi

Per prima cosa creare un volume fisico sulla periferica a blocchi che verrà utilizzata, successivamente estendere il gruppo di volumi:

# pvcreate /dev/sdb1
 # vgextend VolGroup00 /dev/sdb1

Questo aumenterà il numero totale di estensioni fisiche(Piscal Extens) del gruppo di volumi, che potranno essere allocate dai volumi logici.

Nota: E' considerata buona norma utilizzare il corretto codice partizione per la propria tavola delle partizioni: 8e per il partizionamento MBR, e 8e00 per il partizionamento GPT.

Rimuovere una partizione da un gruppo di volumi

Tutti i dati su questa partizione devono essere spostati su di una altra partizione. Fortunatamente, LVM rende questo più facile:

# pvmove /dev/sdb1

Se si desidera che i dati risiedano su di un determinato volume fisico, specificarlo come secondo argomento al comando pvmove:

# pvmove /dev/sdb1 /dev/sdf1

Poi il volume fisico che deve essere rimosso dal gruppo di volumi:

# vgreduce myVg /dev/sdb1

Oppure rimuovere tutti i volumi fisici vuoti:

# vgreduce --all vg0

Ed infine, se si desidera utilizzare le partizioni in altro modo, per evitare che LVM veda la partizione come un volume fisico:

# pvremove /dev/sdb1

Snapshots

Introduzione

LVM permette di creare uno snapshot del sistema in maniera molto più efficiente dei tradizionali metodi di backup. Questa efficenza è data dall'utilizzo della policy COW (copy-no-write). Lo snapshot iniziale conterrà hard-link agli inode dei dati attuali. Fino a che i dati restano invariati, lo snapshot conterrà solo i link agli inode e non i dati stessi. Quando verrà modificato un file o una cartella ai quali lo snapshot punta, LVM automaticamente clonerà i dati, la vecchia copia referenziata dallo snapshot, e la nuova copia referenziata dall'attuale sistema. In questo modo, è possibile effettuare uno snapshot di un sistema di 35GB di dati usando solamente 2GB di spazio libero fino a che le modifiche effettuate saranno inferiori ai 2 GB (in entrambi l'originale e lo snapshot).

Configurazione

Creare uno volume logico snapshot come i normali volumi logici.

# lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-pv

Con questo volume, si potranno modificare meno di 100 M di dati, prima che il volume si riempa.

E’ importante inserire il modulo dm-snapshot nell’array MODULES nel file /etc/mkinitcpio.conf, altrimenti il sistema non si avvierà. Se si effettua la modifica ad un sistema già installato ricostruire l’immagine con il comando:

# mkinitcpio -g /boot/initramfs-linux.img

Todo: script per automatizzare lo snapshot della partizione di root prima degli aggiornamenti, per tornare allo stato precedente... aggiornare il file menu.lst per effettuare il boot dagli snapshot (articolo separato?)

gli snapshot sono principalmente usati per fornire una copia congelata del filesystem per effetuare i backup; un backup impiega due ore e fornisce un immagine più consistente del filesystem piuttosto che effettuare il backup diretto della partizione.

Risoluzione di problemi

I comandi LVM commands non funzionano

  • Caricare il modulo appropriato:
# modprobe dm_mod
  • Provare ad anteporre lvm ai comandi in questo modo:
# lvm pvdisplay

Nela pagina Set Filesystem Mountpoints i volumi logici non sono mostrati

Se si sta installando un sistema dove è già presente un gruppo di volumi, potrebbe non essere accessibile anche dopo il comando "modprobe dm-mod" ed i volumi logici non vengono rilevati.

In questo caso, potrebbe essere necessario eseguire:

# vgscan

oppure:

# vgchange -ay <volgroup>

in modo da attivare il gruppo di volumi e rendere i volumi logici accessibili.

LVM su periferiche rimovibili

Sintomi:

~$ sudo vgscan
 Reading all physical volumes.  This may take a while...
 /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836585984: Input/output error
 /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836643328: Input/output error
 /dev/backupdrive1/backup: read failed after 0 of 4096 at 0: Input/output error
 /dev/backupdrive1/backup: read failed after 0 of 4096 at 4096: Input/output error
 Found volume group "backupdrive1" using metadata type lvm2
 Found volume group "networkdrive" using metadata type lvm2

Cause:

Rimuovendo un disco esterno con LVM senza disattivare il gruppo(i) di volumi prima. Prima di disconnettere, assicurarsi di:
# vgchange -an <volume group name>

Soluzione: (ipotizzando che sia già stato provato ad attivare il gruppo di volumi con il comando vgchange -ay <vg>, e siano stati restituiti degli errori di Input/output

# vgchange -an <volume group name>
Scollegare il disco esterno ed aspettare alcuni minuti
# vgscan
# vgchange -ay <volume group name>

Altre risorse