Difference between revisions of "LVM (Italiano)"

From ArchWiki
Jump to: navigation, search
(Importazione dalla versione inglese)
 
(Configurare il sistema: update)
(41 intermediate revisions by 7 users not shown)
Line 1: Line 1:
[[Category:Getting and installing Arch (English)]]
+
[[Category:Getting and installing Arch (Italiano)]]
[[Category:Storage (English)]]
+
[[Category:File systems (Italiano)]]
[[Category:HOWTOs (English)]]
+
[[cs:LVM]]
 +
[[de:LVM]]
 +
[[es:LVM]]
 +
[[en:LVM]]
 +
[[fr:LVM]]
 +
[[it:LVM]]
 +
[[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}}
  
=Introduction=
+
==Introduzione==
 +
{{Wikipedia|Logical Volume Manager (Linux)}}
  
LVM is a Logical Volume Manager for the Linux kernel.  
+
'''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.
With LVM you can abstract your storage space and have "virtual partitions" which are easier to modify. The basic building block of LVM are:
+
  
* '''Physical volume (PV)''': Partition on hard disk (or even hard disk itself or loopback file) on which you can have virtual groups. It has a special header and is divided into physical extents. Think of physical volumes as big building blocks which can be used to build your hard drive.
+
Nota che LVM non è utilizzato per la partizione {{ic|/boot}}, a causa di problemi con il bootloader.
* '''Volume group (VG)''': Group of physical volumes that are used as storage volume (as one disk). They contain logical volumes. Think of volume groups as hard drives.
+
{{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]]. }}
* '''Logical volume(LV)''': A "virtual/logical partition" that resignes in a volume group and is composed of physical extents. Think of logical volumes as normal partitions.
+
* '''Physical extent (PE)''': A small part of a disk (usually 4MB) that can be assigned to a logical Volume. Think of physical extents as parts of disks that can be allocated to any partition.
+
  
With LVM you can more easily handle your partitions (logical volumes) than normal hard drive partitions. For example, you can:
+
Le componenti base di LVM sono:
  
* Use ''any number'' of disks as one big disk(VG)
+
* '''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.
* Have partitions(LV) streched ''over'' several disks (they can be as big as all of your disk storage together)
+
* '''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.
* Resize/create/delete partitions(LV) and disks(VG) ''as you like'' (it doesn't depend on position of the logical volumes within volume groups as with normal partitions)
+
* '''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.
* Resize/create/delete partitions(LV) and disks(VG) ''online'' (filesystems on them still need to be resized, but some support online resizing)
+
* '''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.
* ''Name'' your disks(VG) and partitions(LV) as you like
+
 
* Create small partitions(LV) and resize them "''dynamically''" as they get more filled (growing must be still done by hand, but you can do it online with some filesystems)
+
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)
 
* ...
 
* ...
  
Example:  
+
Esempio:  
  '''Physical disks'''
+
  '''Dischi fisici'''
 
                  
 
                  
   Disk1 (/dev/sda):
+
   Disco1 (/dev/sda):
 
       _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 
       _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
     |Partition1 50GB (Physical volume) |Partition2 80GB (Physical volume)     |
+
     |Partizione1 50GB (Volume fisico) |Partizione2 80GB (Volume fisico)     |
 
     |/dev/sda1                        |/dev/sda2                            |
 
     |/dev/sda1                        |/dev/sda2                            |
 
     |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
 
     |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
 
                                    
 
                                    
   Disk2 (/dev/sdb):
+
   Disco2 (/dev/sdb):
 
       _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 
       _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
     |Partition1 120GB (Physical volume)                 |
+
     |Partizione1 120GB (Volume fisico)                 |
 
     |/dev/sdb1                                          |
 
     |/dev/sdb1                                          |
 
     | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _|
 
     | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _|
  
  '''LVM logical volumes'''
+
  '''Volumi logici LVM'''
 
   
 
   
   Volume Group1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
+
   Gruppo di volumi1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
 
       _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  
 
       _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  
     |Logical volume1 15GB  |Logical volume2 35GB     |Logical volume3 200GB              |
+
     |Volume logico1  15GB  |volume logico2 35GB       |Volume logico3  200GB              |
 
     |/dev/MyStorage/rootvol|/dev/MyStorage/homevol    |/dev/MyStorage/mediavol            |
 
     |/dev/MyStorage/rootvol|/dev/MyStorage/homevol    |/dev/MyStorage/mediavol            |
 
     |_ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
 
     |_ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
  
To sum it all up: With LVM you can use all your storage space as one big disk (volume group) and have more flexibility over your partitions (logical volumes).
+
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).
  
=Installation=
+
==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.
  
Before doing anything we need to load the appropriate module:
+
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
If you already have Arch Linux installed and just you want to add/try a partition with LVM jump to [[Lvm#Partition_disks|partition disks]].
+
Se Arch Linux è già installata e si vuole solamente provare/aggiungere una partizione usando LVM, saltare al paragrafo [[#Partizionare i dischi|Partizionare i dischi]].
  
====Installing Arch Linux on LVM====
+
===Installare Arch Linux su LVM===
Prior to running Arch Linux install scripts (/arch/setup) to install Arch Linux, you need to partition your disk with cfdisk (or any other tool of your liking). Because grub legacy (grub with version less than 1.0) can't boot from LVM logical volumes you can't have /boot in LVM, so you need to create a boot partition. 100MB should be enough. The other solution would be to use lilo or grub with version 1.95 or newer.
+
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.  
  
====Partition disks====
+
===Partizionare i dischi===
Next you need to create a partition for LVM. Its filesystem type should be 'Linux LVM', so use a partition id 0x8e (filesystem type: 8e). You need to create only one LVM partition on each disk you want to use with LVM. Your logical volumes will reside inside these partitions so size them accordingly. If you will use only LVM and no other external partitions, use all of free space on each disk.
+
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.
  
'''Attention''': /boot can't reside in LVM partition because grub (version<1.95) can't boot from it.  
+
{{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]]. }}
  
'''Information''': All LVM partitions on all disks can be set to be seen as one big disk.
+
{{Tip|Tutte le partizioni LVM su tutti i dischi possono essere configurate per apparire come un unico grande disco.}}
  
====Create Physical volumes====
+
===Creare i volumi fisici(Physical volumes)===
Now you need to initialize these partitions so they can be used by LVM. Use 'fdisk -l' to find out which partitions have filesystem type 'Linux LVM' and create a physical volume on them:
+
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/sda2
 
  # pvcreate /dev/sda2
Substitute /dev/sda2 with all your partitions to create physical volumes on all of them. This command creates a header on each partition so it can be used for 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.
You can track created physical volumes with:
+
Si possono monitorare i volumi fisici creati con il comando:
 
  # pvdisplay
 
  # pvdisplay
  
====Create Volume group(s)====
+
{{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]}}
Next step is to create a volume group on this physical volumes. First you need to create a volume group on one of the new partitions and then add to it all other physical volumes you want to have in it:
+
 
 +
===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
 
  # vgcreate VolGroup00 /dev/sda2
 
  # vgextend VolGroup00 /dev/sdb1
 
  # vgextend VolGroup00 /dev/sdb1
Also you can use any other name you like instead of VolGroup00 for a volume group when creating it. You can track how your volume group grows with:
+
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
  
'''Information''': You can create more than one volume group if you need to, but then you wont have all your storage presented as one disk.
+
{{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..}}
  
====Create Logical Volumes====
+
===Creare i volumi logici (Logical Volumes)===
Now we need to create logical volumes on this volume group. You create them with the next command by giving them the name of a new logical volume, its size and volume group they will live on:
+
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
 
  # lvcreate -L 10G VolGroup00 -n lvolhome
This will create a logical volume that you can access later with /dev/mapper/Volgroup00-lvolhome or /dev/VolGroup00/lvolhome. Same as with the volume groups you can use any name you want for your logical volume when creating it.
+
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.
You can track created physical volumes with:
+
# lvdisplay
+
  
'''Attention''': When creating swap on logical volume use the next command instead of previous one:
+
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
The '-C y' is used to create a contiguous partition, that means that your swap space doesn't get partitioned over one or more disks nor over non-contiguous physical extents.
+
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.
  
'''Information''': you can create logical volumes smaller if you don't know how much data will end on them and leave some free space in volume group. you can then grow volumes that will be more filled.
+
Se si vuole riempire tutto lo spazio libero rimasto in un gruppo di volumi, utilizzare il seguente comando:
 
+
'''Hint''': If you want to fill all the free space left on a volume group use the next command:
+
 
  # lvcreate -l +100%FREE VolGroup00 -n lvolmedia
 
  # lvcreate -l +100%FREE VolGroup00 -n lvolmedia
  
====Create filesystem and mount logical volumes====
+
Si può controllare i volumi logici creati con:
Your logical volumes should now be located in '''/dev/mapper/''' and '''/dev/YourVolumeGroupName'''. If you can't find them use the next commands to bring up the module for creating device nodes and to make virtual groups availabile:
+
# 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
Now you can create filesystems on logical volumes and mount them as normal partitions (if you are installing Arch linux, skip this step):
+
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/home
+
  # mkfs.ext3 /dev/mapper/VolGroup00-lvolhome
  # mount /dev/VolGroup00/lvolhome /home
+
  # mount /dev/mapper/VolGroup00-lvolhome /home
If you are installing Arch linux, start /arch/setup, go to ''Prepare Hard Drive'' directly to step 3 ''Set Filesystem Mountpoints'' and '''''read the [[Lvm_another_article#Important|important]] section below before proceeding with installation!'''''
+
<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>
  
===Important===
+
=== Impostare i filesystem ed i punti di mount ===
There are just a few things you need to be careful while using/installing Arch Linux with LVM (in brackets are the corresponding menus at installation):
+
* 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}}).
# Don't use any of the partitions on which you have created a physical volume for mountpoints (example: /dev/sda2). Use only logical volumes on them (example: /dev/mapper/Volgroup00-lvolhome). (''Set Filesystem Mountpoints'')
+
# Make sure you change ''USELVM="no"'' to ''USELVM="yes"'' in '''/etc/rc.conf''' if you are using a logical volume for your root partition. (''Configure System'')
+
# Make sure that ''lvm2'' is in the HOOKS section of '''/etc/mkinitcpio.conf''' just before the ''filesystems'' so that your kernel will find LVM volumes at boot time. (''Configure System'')
+
# Make sure '''/boot/grub/menu.lst''' uses the right volumes for root. It should look something like this: (''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
+
...
+
If you are using LILO check '''/etc/lilo.conf''':
+
image=/boot/vmlinuz26
+
        label=arch
+
        append="'''root=/dev/mapper/VolGroup00-lvolroot''' resume=/dev/mapper/VolGroup00-lvolswap ro"
+
        initrd=/boot/kernel26.img
+
  
= Configuration =
+
=== 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.
  
== Grow logical volume ==
+
In caso si abbia necessità del monitoraggio dei volumi(necessario per l'uso degli snapshots):
To grow a logical volume you first need to grow the logical volume and then the filesystem to use the newly created free space. Let's say we have a logical volume of 15GB with ext3 on it and we want to grow it to 20G. We need to do the following steps:
+
# lvextend -L 20G VolGroup00/lvolhome (or lvextend -L +5G VolGroup00/lvolhome)
+
# resize2fs /dev/VolGroup00/lvolhome
+
You may use lvresize insted of lvextend.
+
  
'''Attention''': Not all filesystem support growing without loss of data and/or growing online.
+
# systemctl enable lvm-monitoring.service
  
'''Information''': If you don't resize your filesystem, you will still have a volume with the same size as before (volume will be bigger but partly unused).
+
Se si utilizza LVM su un device criptato, sarà necessario utilizzare invece:
  
'''Hint''': If you want to fill all the free space on a volume group use the next command:
+
# systemctl enable lvm-on-crypt.service
 +
 
 +
Oppure, se si utilizza sysvinit, modificare il valore di {{ic|USELVM}} in modo appropriato:
 +
 
 +
{{hc|# vim /etc/rc.conf|<nowiki>USELVM="yes"</nowiki>}}
 +
 
 +
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.
 +
 
 +
{{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
 +
Sarà possibile usare {{ic|lvresize}} invece di {{ic|lvextend}}.
 +
 
 +
Se si vuole utilizzare tutto lo spazio libero in un gruppo di volumi, usare il seguente comando:
 
  # lvextend -l +100%FREE VolGroup00/lvolhome
 
  # lvextend -l +100%FREE VolGroup00/lvolhome
  
== Shrink logical volume ==
+
{{attenzione|Non tutti i filesystem supportano l'ingrandimento senza perdite di dati e/o il ridimensionamento online.}}
Because your filesystem is probably as big as logical volume it resides on, you need to shrink the filesystem first and then shrink the logical volume. Depending on your filesystem, you may need to unmount it first. Let's say we have a logical volume of 15GB with ext3 on it and we want to shrink it to 10G. We need to do the following steps:  
+
 
 +
{{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
 
  # resize2fs /dev/VolGroup00/lvolhome 9G
  # lvreduce -L 10G VolGroup00/lvolhome (or lvreduce -L -5G VolGroup00/lvolhome)
+
  # lvreduce -L 10G VolGroup00/lvolhome (oppure lvresize -L -5G VolGroup00/lvolhome)
 
  # resize2fs /dev/VolGroup00/lvolhome
 
  # resize2fs /dev/VolGroup00/lvolhome
Here we shrunk the filesystem more than needed so that when we shrunk the logical volume we didn't accidentally cut of the end of the filesystem. After that we normally grow the filesystem to fill all free space left on logical volume. You may use lvresize insted of lvreduce.
+
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}}.
  
'''Attention''': Don't reduce the filesystem size to less than it is used by data on it or you can lose your data.
+
{{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.}}
  
'''Attention''': Not all filesystems support shrinking without loss of data and/or shrinking 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.}}
  
'''Attention''': It is better to reduce the filesystem to lower size than the logical volume, so that after a resizing logical volume, we don't accidentally cut off some data from the end of the 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!}}
  
== Add partition to a volume group ==
+
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:
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:
+
# 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.
+
{{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 {{keypress|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 20:23, 25 February 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 Template:Keypress 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