LVM: Logical Volume Manager: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (versioni compatibili)
 
(21 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{File_System
|precedente=Udev
|successivo=RAID:_Redundant_Array_of_Indipendent_Disks
}}{{Versioni compatibili|Wheezy|Jessie|Testing_2016|Unstable_2016}}{{Template:LVM}}


== Introduzione ==
{{ Warningbox | È buona cosa di norma avere un backup dei propri dati, questo monito vale specialmente per quando si lavora con i filesystem e le partizioni. A buon intenditore poche parole. }}
Il Logical  Volume Manager è un software a livello kernel Linux che permette una  gestione ed allocazione della memoria sui supporti di memoria in modo  flessibile e dinamico, ma soprattutto non limitata allo schema rigido  delle partizioni.


La brillante idea da cui derivano  tutte le potenzialità di questo strumento è quella di non utilizzare più  le partizioni in maniera classica come definite nell'MBR ma di  adoperare al posto di queste dei volumi logici virtuali creati e gestiti  dall'''LVM'' sui dispositivi assegnategli. In questa maniera, non essendo più vincolati alle partizioni, ne consegue una gestione  molto più fluida dei dispositivi di memorizzazione il cui unico limite è  l'immaginazione.
Quindi, fate attenzione!
 
{{ Warningbox | È buona cosa di norma avere un backup dei  propri dati, questo monito vale specialmente per quando si lavora con i  filesystem e le partizioni. A buon intenditore poche parole. }}
 
===Vantaggi===
Tra i principali vantaggi troviamo:
* Libertà di ampliare/ridurre "le partizioni" (il termina corrretto è ''Logical Volume'');
* Possibilità di eseguire snapshot ''a caldo'' (senza dover spegnere il computer);
* Possibilità di estendere una partizione su altri supporti di memoria (modalità ''striped'');
* Possibilità di implementare una ridondanza delle partizioni (modalità ''mirrored'');
* Possibilità di trasferire ''a caldo'' "le partizioni" (il termina corrretto è ''Logical Volume'') da un supporto fisico ad un altro.
 
===Svantaggi===
Si  ravvisa un possibilerallentamento della velocità I/O dei supporti di  archiviazione seppure molto trascurabile, una maggiore difficoltà in  caso di dover recuperare dati dal disco, possibili [[#Boot Loader e  LVM|problemi in fase di boot]] con alcuni boot loader.
 
===LVM-1 o LVM-2?===
Da  Lenny in avanti è disponibile la versione ''LVM2'' facilmente  installabile con l'omonimo pacchetto. La compatibilità tra la versione 1  e 2 è stata mantenuta ed infatti non dovrebbero esservici problemi per  una eventuale migrazione.<br />
In questa guida si è fatto esplicito riferimento a ''LVM2'' ma quasi tutto è replicabile in ''LVM1''.
 
Ad  esempio, una delle possibili differenze tra le due versioni, è il fatto  che l&#39;''LVM1'' permetta ''snapshot'' solo in lettura, invece  nella 2 sono utilizzabili sia in lettura che scrittura.
 
== Cenni teorici ==
In questa sezione sono introdotti i  principi elementi che compongo l&#39;''LVM'' ed è introdotto il  funzionamento dello stesso.
 
===La struttura base dell&#39;''LVM''===
Il LVM basa il proprio funzionamento sulla seguente struttura:
; ''Volume Group'' ('''VG'''): trattasi del più alto livello di astrazione che raggruppa in sé una collezione di Logical Volume e di Physical Device.
; ''Physical Device'' ('''PD'''): sono i nostri  supporti di memorizzazione e possono essere di qualsiasi tipo, sia Hard  Disk, sia nastri, sia memorie solide ma anche ambienti RAID, etc.
; ''Logical Volume'' ('''LV'''): l'equivalente nel nostro ''LVM'' in tutto e per tutto di quella che è una partizione su un Hard Disk. L'unica piccola differenza subito evidente è l'etichetta/label (ad es. /dev/nome-''VG''/nome-''LV'' invece del canonico /dev/sda1). Come ogni normale partizione il ''LV'' può contenere un file system a nostro piacimento.
; ''Logical Extend'' ('''LE'''): seppure difficilmente  avremo a che farci direttamente, i ''LE'' sono i pezzetti in cui viene  suddiviso il ''LV'' in modo di poterlo allocare tra i vari ''PE''  disponibili al ''VG''.
; ''Physycal Extent'' ('''PE'''): ad  esempio, quando vogliamo aggiungere un ''PD'' al nostro ''VG'', dobbiamo  per prima cosa iniziarlo con il comando <tt>pvcreate</tt>.  Questo comando altro non fa che dividere il supporto in tanti spazi in  modo da poter poi creare una corrispondenza tra i ''LE'' ed i ''PE'' e  così allocare lo spazio necessario per i ''LV''.
 
In modo un po' stilizzato, possiamo descrivere il passaggio dal concetto di partizioni a quello di ''LV'' nel seguente modo:
<pre>
  hd1    sda2      (Physical Device - partizioni)
    \    /
    \  /
    server1        (Volume Group)
    / | \
    /  |  \
  /  |  \
Home Root  Dati  (Logical Volume)
</pre>
 
La spiegazione di come  si comporta e funziona l&#39;''LVM'' è già stata tratta  nell'<u>e-zine numero 5</u> di ''debianizzati.org'' nello  sviluppo dell'articolo  [http://e-zine.debianizzati.org/web-zine/numero_5/?page=46|'''LVM  mirror''']. Ecco a seguire  [http://e-zine.debianizzati.org/web-zine/numero_5/?page=48| il riporto  dell&#39;'''Introduzione teorica all'LVM''']:
 
{|  style="-moz-border-radius: 0.5em; width:90%; margin-top:+.7em;  background-color:#f0f8ff; border:1px solid #87ceeb; color:#000"  align="center"
|-
|''LVM'' è l'acronimo di '''Logical  Volume Manager''', ovvero di Gestore dei Volumi Logici di Linux. Ma  quindi cosa sono questi ''volumi logici''?<br />
L'idea di  fondo è di sostituire al concetto di partizione un diverso contenitore  (il '''Logical Volume''') il quale non dipende più dalle limitate  informazioni contenibili  nell'[http://guide.debianizzati.org/index.php/MBR MBR] ma, tramite le  gestione del kernel Linux, si può liberamente  spostare/raggruppare/estendere da un settore all'altro di ogni disco,  quasi come se fosse un file o una cartella all'interno del ''file  system''.<br />
<br />
All'atto pratico  <u>la modalità di funzionamento dell'''LVM''</u> può essere  riassunta nel seguente modo. L'unità principale sulla quale si basa il  sistema è il '''Volume Group'''. Detto ''VG'' verrà da noi dotato di una  certa capacità di memoria pari alla capacità di tutti i supporti di  massa che gli assegnaremo.<br />
Tali supporti possono  essere dischi SATA, PATA, USB, configurazioni RAID, SSD o quant'altro e  mi riferirò ad essi come '''Physical Device'''. I ''PD'' possono anche  non avere alcuna partizione, seppure si consiglia di dotarli almeno di  una partizione primaria siccome altri sistemi operativi, qualora non  riscontrino alcuna partizione, potrebbero inavvertitamente  sovrascriverli.<br />
I ''PD'', quando sono assegnati ad un  ''VG'', sono gestiti dall'''LVM'' suddividendo lo spazio disponibile su  ognuno di essi tramite una suddivisione in unità fisiche ridotte (di  default di qualche Mb) dette '''Physical Extent'''. Per questo motivo,  prima di aggiungere un ''PD'' ad un ''VG'' sarà necessario  inizializzarlo proprio per creare su di esso i vari ''PE''.<br />
Quando  creeremo un '''Logical Volume''' (ovvero lo spazio che useremo come  "partizione") l'''LVM'' gestirà lo spazio virtuale (logico) da noi  richiesto suddividendolo in tanti '''Logical Extent''' tali da  permettere di distribuire ogni ''LE'', che altro non è che un pezzo del  nostro ''LV'', tra i ''PD''. Questa allocazione avviene facendo  corrispondere ad ogni ''LE'' un determinato ''PE'' secondo  necessità.<br />
<br />
Da tale modo di  spezzettare i ''LV'' ed i ''PD'' nasce tutta la potenzialità  dell'''LVM''. Infatti, quando all'interno del nostro ''VG'' creeremo un  ''LV''  l&#39;''LVM'' non sarà obbligato a distribuire lo spazio da  noi richiesto tra i ''PD'' ma tra le ''PE''. Pertanto sarà possibile  spostare/allargare/ridurre il ''LV'' semplicemente agendo sulla  distribuzione delle ''LE'' tra i ''PE'' disponibili.<br />
Ad  esempio, quando in questo articolo creeremo il nostro ''LV'' in  modalità mirrored, l&#39;''LVM'' si limiterà semplicemente a  sincronizzare alcune ''PE'' di un ''PD'' con le ''PE'' del nostro  secondo ''PD''. Pertanto ad ogni coppia di ''PE'' sincronizzata  corrisponderà il medesimo ''LE'' (e quindi il medesimo ''LV'').<br  />
<br />
Per chi, perso tra queste sigle, volesse  maggiormente approfondire segnalo alcuni utili HOWTO  [http://en.wikipedia.org/wiki/Logical_volume_management [2]]  [http://tldp.org/HOWTO/LVM-HOWTO/index.html [3]].<br />
<br />
Chi  è riuscito a seguire fin qui il discorso, ecco un grafico  esemplificativo del funzionamento. In questo caso i ''LE'' sono omessi  in quanto corrispondono 1:1 ai ''PE'', ovviamente se vi ci fosse un  ''mirror'' la corrispondenza tra ''LE'' e ''PE'' sarebbe 1:2 (un ''LV''  fa riferimento a due diversi spazi sui ''PD''). Infine si osservi il  ''LV'' /home, quest'ultimo è in modalità ''striped'' ovvero è in parte  sul primo ''PD'' ed in parte sul secondo ''PD''.<br />
[[immagine:500px-LVM1.svg.png]]
|}
 
==Gestire i Volume Group==
===Creare===
* <pre>pvcreate /dev/nome_device-nome_partizione</pre>
:Inizializza  il disco/partizione per essere utilizzato come Volume Group (crea una  specie di tabella di partizioni). Se si utilizza il device anche con  altri OS si sconsiglia l'uso dell'intero supporto consigliando di  utilizzare una partizione, ampia anche come tutto il supporto stesso.  Altrimenti altri OS potrebbero non riconoscere il LVM e sovrascriverlo.  Tradotto questo significa non usare un comando del tipo ''pvcreate  /dev/sdX'', ma piuttosto ''pvcreate /dev/sdX1'', dove ''sdX1'' è l'unica  partizione (cui viene riservato l'intero spazio disponibile) presente  sul disco ''sdX''.
*<pre>vgcreate nome_Volume_Group /dev/supporto1 /dev/supporto2 ...</pre>
:Crea  un Volume Group con un dato nome utilizzando la lista di supporti  fisici. Questi devono essere stati prima opportunamente inizializzati  con <code>pvcreate</code>.
 
===Rimuovere===
*<pre>vgremove nome_Volume_Group</pre>
:Rimuovi il Volume Group indicato.
 
===Modificare===
*<pre>vgchange -a y nome_Volume_Group</pre>
:Attiva  il Volume Group indicato permettendone l'accesso. Per disattivare il VG  usare l'opzione -a n (Avaible No).Con questo comando è possibile anche  modificare altre opzioni più specifiche.
*<pre>vgextend nome_Volume_Group percorso_Physical_Device</pre>
:Aggiunge  al VG il desiderato PD. Ricordarsi di inizializzare prima il PD con  <code>pvcreate</code>. Si consiglia <code>pvdisplay  percorso_Physical_Device</code> per verificare prima che la  partizione/PD sia libera.
*<pre>vgreduce nome_Volume_Group percorso_Physical_Device</pre>
:Toglie il PD dal VG.
 
==Gestire i Logical Volume==
 
===Creare===
<pre>lvcreate -L 1500 -n dati server1</pre>
Lvcreate  permette di creare i LV. Le opzioni disponibili sono numerose,  nell'esempio posto è stato creato un LV di 1.500 Mb, di nome dati ed  all'interno del VG server1.
 
Inoltre è possibile  specificare anche su quale PD creare il LV. Basta aggiungere il PATH  corrispondente alla fine del comando. Questo può risultare utile in una  logica di riduzione dei rischi di perdita di dati.
 
Creato il LV sarà necessario formattarlo in modo opportuno affinché diventi fruibile.
 
===Rimuovere===
<pre>umount LogicalVolume_da_rimuovere
lvremove LogicalVolume_da_rimuovere</pre>
Si noti che, prima di poterlo eliminare, sia necessario smontarlo.
 
===Modificare===
<pre>lvextend -L +1G LogicalVolumePath</pre>
'''Aumenta'''  di un Giga il LV. In alternativa è possibile indicare con  <code>-L 10G</code> per ampliare fino a 10G  totali.<br/>Per terminare la procedura si consiglia se si adotta  l'ext2 di smontare prima le partizioni, con l'ext3 non dovrebbero  esserci problemi per l'aumento online ma pare che i rischi siano  elevati. Premesso ciò, dopo aver ampliato il LV, si può procedere ad  adattare anche il filesystem tramite <pre>resize2fs  LogicalVolumePath </pre>Ovviamente quest'ultimo comando dipende  dal filesystem, ad esempio con xfs si dovrà utilizzare  <code>xfs_growfs</code>
 
<pre>lvreduce -L -1G LogicalVolumePath</pre>
'''Riduce'''  di un Giga il LV. Ovviamente, se non si vogliono perdere dati, sarà  necessario <u>prima di dare il comando</u> per ridurre il  LV:
<pre>umount LogicalVolumePath
e2fsck LogicalVolumePath                    (valido solo per i filesystem ext2/ext3/ext4)
reduce2fs LogicalVolumePath -1G              (valido solo per i filesystem ext2/ext3/ext4)</pre>
 
===Spostare i LV da un PD ad un altro===
Per spostare i dati usate il comando:
<pre>pvmove [--alloc  AllocationPolicy] [-i|--interval Seconds] [-v|--verbose]
[-n|--name LogicalVolume] [SourcePhysicalVolume[:PE[-PE]...]  [DestinationPhysicalVolume[:PE[-PE]...]...]]</pre>
Il comando è abbastanza lento nell'esecuzione, a seconda inoltre delle velocità dei device.
 
Se volete annullare il comando:
<pre>pvmove --abort</pre>
Se c'è un errore e volete portare a termine l'operazione (proprio senza opzioni):
<pre>pvmove</pre>
 
''note'':  pvmove funziona passando in consegna i LV da spostere al ''device''  pvmove fino a compimento del lavoro. Potete verificare ciò con il  comando pvs oppure ''lvs -o +deviecs''.
 
==Comandi utili per una completa gestione dei file system==
In  questa sezione sono elencati i comandi non facenti capo a lvm2 ma che  sono necessari ai fini di compiere le operazioni specificate nel presente HOWTO.
 
===Lavorare con ext? (ext2, ext3, ext4)===
<pre>mkfs.ext3 $PATH_LV</pre>
Per creare il file system è sufficiente il comando dato. Per altri file system: mkfs.ext2, mkfs.ext4...
 
===Analisi dei supporti di memoria===
<pre>df $PATH_disco</pre>
Disk Free: ndica la quantità di spazio libero.
 
== Casi speciali ==
 
=== Boot Loader e LVM ===
Al momento Lilo e Grub hanno difficoltà ad  accedere al LVM per effettuare il boot. Con Grub2 è possibile risolvere  la situazione ed eseguire il boot da LVM. Però considerata l'esiguità  della dimensione della cartella /boot consiglio, sia per semplificarsi  la vita, sia per una maggiore sicurezza, di posizionare la cartella  /boot su una partizione al di fuori del LVM. Questa procedura permette  anche di semplificare notevolmente le eventuali operazioni di recupero  in caso di MBR danneggiato.
 
== Esempi ==
 
=== Esempio 1 ===
Elenco partizioni sistema
* ''sda1'', swap.
* ''sda2'', "/".
* ''sda3'', "/var".
* ''sda5'', "/home"
* ''sda6'', non specificato.
* ''sdb1'', non specificato; tutto lo spazio del disco ''sdb'' è allocato in questa partizione.
Il volume logico comprenderà le sole partizioni ''sda6'' ed ''sdb1''.
Si  noti che anche qualora fossero stati specificati dei punti di mount per  le partizioni ''sda6'' ed ''sdb1'' non sarebbe cambiato nulla, infatti  la procedura qui descritta sovrascrive le impostazioni preesistenti  (quindi occhio a non includere le partizioni sbagliate).
 
==== Inizializzazione ====
<pre># pvcreate /dev/sda6 /dev/sdb1</pre>
Per avere maggiori informazioni:
<pre># pvdisplay</pre>
Che restituirà in output qualcosa del tipo:
<pre>
  --- Physical volume ---
  PV Name              /dev/sda6
  VG Name              discolvm
  PV Size              93,16 GiB / not usable 2,00 MiB
  Allocatable          yes (but full)
  PE Size              4,00 MiB
  Total PE              23848
  Free PE              0
  Allocated PE          23848
  PV UUID              ''omesso perché variabile da computer a computer''
 
  --- Physical volume ---
  PV Name              /dev/sdb1
  VG Name              discolvm
  PV Size              232,88 GiB / not usable 2,00 MiB
  Allocatable          yes (but full)
  PE Size              4,00 MiB
  Total PE              59618
  Free PE              0
  Allocated PE          59618
  PV UUID              ''omesso perché variabile da computer a computer''
</pre>
 
==== Creazione Gruppo ====
Creazione di un gruppo di nome ''discolvm'':
<pre># vgcreate discolvm /dev/sda6 /dev/sdb1</pre>
Per avere maggiori informazioni (serviranno nel prossimo paragrafo):
<pre># vgdisplay discolvm</pre>
Che restituirà in output qualcosa del tipo:
<pre>
  --- Volume group ---
  VG Name              discolvm
  System ID           
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access            read/write
  VG Status            resizable
  MAX LV                0
  Cur LV                1
  Open LV              1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size              326,04 GiB
  PE Size              4,00 MiB
  Total PE              83466
  Alloc PE / Size      83466 / 326,04 GiB
  Free  PE / Size      0 / 0 
  VG UUID              ''omesso perché variabile da computer a computer''
</pre>
A questo punto dovrebbe essere visibile un dispositivo di nome ''discolvm'' sotto ''/dev''.
 
==== Creazione Volumi ====
Per creare un volume di nome ''logico'' che consumi l'intero spazio del gruppo precedentemente creato:
<pre># lvcreate -l 83466 discolvm -n logico</pre>
L'opzione  ''-l'' permette di specificare il quantitativo di spazio da allocare in  PE (si veda la voce Total PE per consocere il totale disponibile)  invece che in GB, MB, ecc. Questa scelta è dovuta al fatto che  personalmente ho riscontrato problemi ad allocare il corretto  quantitativo di spazio esprimendolo in GB.
Per allocare lo spazio  in GB è sufficiente usare l'opzione ''--size'', ad esempio per creare un  volume ''logico1'' da 250 GB sarebbe stato sufficiente digitare:
<pre># lvcreate -size 250G discolvm -n logico1</pre>
Tutti  i volumi creati compaiono sotto ''/dev/discolvm''. A questo punto è  sufficiente formattare il o i volumi creati in modo del tutto standard,  per esempio volendo usare un file system ext4:
<pre># mkfs.ext4 /dev/discolvm/logico</pre>
 
==== Montare i Volumi ====
Si tratta di un operazione anch'essa assolutamente standard, basta creare un punto di mount per ogni volume e quindi montarli.
Es.:
<pre>
# mkdir /home/lvm
# mount /dev/discolvm/logico /home/lvm
</pre>
Per  montare i volumi automaticamente all'avvio come sempre è sufficiente  editare il file ''/etc/fstab'' ed aggiungere una riga del tipo:
<pre>UUID=''omesso perché variabile da computer a computer''  /home/lvm  ext4  defaults  0  2</pre>
Per ottenere l'UUID di un volume è sufficiente usare il comando ''blkid /dev/'', ad esempio:
<pre>blkid /dev/discolvm/logico</pre>
 
== Approfondimenti ==
=== Debianizzati ===
* [http://e-zine.debianizzati.org/web-zine/numero_5/?page=46 LVM Mirrored], come ottenere i medesimi vantaggi di un sistema RAID (Redundant Array of Independent Disks). La guida illustra come eseguire  semplici esperimenti su una macchina virtuale per testare le  funzionalità di LVM, procedendo dapprima all'installazione su LVM,  all'attivazione della modalità mirrored e quindi all'intervento in caso  di guasto di un disco fisso mostrando come sostituire l'Hard Disk  danneggiato e ripristinare la situazione iniziale di sicurezza.
* [http://e-zine.debianizzati.org/web-zine/numero_5/?page=52 Installazione in LVM]<br />
* [http://e-zine.debianizzati.org/web-zine/numero_5/?page=56 Mirror]<br />
 
=== Sitografia ===
* [http://tldp.org/HOWTO/LVM-HOWTO/index.html tldp HOWTO]
* [http://tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html Snapshot]<br />
* [http://tldp.org/HOWTO/LVM-HOWTO/snapshots_backup.html Snapshot backup]
* [http://www.davelachapelle.ca/guides/ubuntu-lvm-guide/ Ubuntu LVM Guide]


Per il resto buona lettura.


{{Autori
{{Autori
|Autore = [[Utente:Risca86|Risca86]] 21:04, 29 mar 2010 (CEST)
|Autore = [[Utente:Risca86|Risca86]]
|Estesa_da =
|Estesa_da =  
: [[Utente:Wtf|Wtf]], "Esempio 1"
|Verificata_da =
|Verificata_da =
: [[Utente:Wtf|Wtf]]
: [[Utente:Wtf|Wtf]] (eccetto parte II)
|Numero_revisori = 1
: [[Utente:HAL 9000|HAL 9000]] 20:55, 10 apr 2016 (CEST)
| Numero_revisori = 2
}}
}}


 
[[Categoria:Filesystem]][[Categoria:Hard Disk]]
[[Categoria:Filesystem]]
[[Categoria:Hard Disk]]

Versione attuale delle 18:55, 10 apr 2016

File System e dispositivi fisici
Arrow left.png

Generalità

Locali

Remoti

Strumenti

Arrow right.png


Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 7 "wheezy"
Debian 8 "jessie"
Guida all'LVM

Sommario

Parte I
Introduzione all'LVM
  1. Introduzione all'LVM
  2. Come funziona
  3. Gestire i VG
  4. Gestire i LV
  5. Gestire i PD
Parte II
Casi speciali
  1. Il Boot e l'LVM
  2. Installazione di Debian con l'LVM
  3. Impostare un mirror LVM
  4. Lavorare con gli snapshot
  5. Esempi
Appendice
  1. Comandi utili
  2. Sitografia


Warning.png ATTENZIONE
È buona cosa di norma avere un backup dei propri dati, questo monito vale specialmente per quando si lavora con i filesystem e le partizioni. A buon intenditore poche parole.


Quindi, fate attenzione!

Per il resto buona lettura.




Guida scritta da: Risca86 Swirl-auth60.png Debianized 60%
Estesa da:
Verificata da:
Wtf (eccetto parte II)
HAL 9000 20:55, 10 apr 2016 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized