LVM: comandi avanzati

21 luglio 2018

Esploreremo ora una serie di comandi utili per conoscere con le potenzialità operative che rendono realmente conveniente l’adozione di LVM nella gestione del nostro spazio disco. I comandi di base sono stati illustrati al precedente capitolo di questa guida.

Aggiungere un disco LVM

Supponiamo di aver esaurito tutta la capienza dello storage a nostra disposizione su LVM. Tuttavia, dal punto di vista hardware, è ancora possibile dotare di hard disk aggiuntivi il sistema in cui i nostri dati sono ospitati. Dopo aver installato un hard disk, aver eliminato ogni partizione e aver battezzato il nuovo disco come gestito da LVM secondo la tecniche illustrate nel capitolo precedente questi comparirà fra i nuovi physical volume (PV) elencati da pvdisplay. Adesso non dovremo fare altro che estendere il Volume Group (VG) con cui vogliamo utilizzarlo inglobando il nuovo PV in esso mediante l’uso di vgextend. Gli passeremo come primo argomento il nome del VG e come secondo il nome del PV. Poi estenderemo il Logical Volume (LV) e il filesystem in esso contenuto adoperando le conoscenze già in nostro possesso.


fprincipe@html3:~$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               test2
[...]
   
  "/dev/sdc" is a new physical volume of "500.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               500.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               0NQGju-TpRG-teG9-8lfY-DCtJ-xgeS-Lhx0UN

fprincipe@html3:~$ sudo vgextend test2 /dev/sdc
  Volume group "test2" successfully extended

fprincipe@html3:~$ df -h
Filesystem              Size  Used Avail Use% Mounted on
[...]
/dev/mapper/test2-lv03  492G   73M  467G   1% /home/fprincipe/mountpoint

fprincipe@html3:~$ sudo lvextend -l +10%FREE test2/lv03
Size of logical volume test2/lv03 changed from 
<500.00 GiB (127999 extents) to <550.00 GiB (140799 extents).
  Logical volume test2/lv03 successfully resized.
[...]
fprincipe@html3:~$ df -h
Filesystem              Size  Used Avail Use% Mounted on
[...]
/dev/mapper/test2-lv03  541G   72M  514G   1% /home/fprincipe/mountpoint

Liberare Spazio in un Volume Group

Ovviamente esiste anche il comando per diminuire la grandezza di un LV. Il comando in questione è lvresize. Oltre alle opzioni -L e -l di funzionamento simile a lvextend, lvresize accetta valori negativi. A esempio il comando sudo lvresize -L -3g test2/lv04 ridurrà il Logical Volume lv04 di 3 Gb.


fprincipe@html3:~$ sudo lvs
  LV   VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv03 test2 -wi-ao---- <550.00g                                                    
  lv04 test2 -wi-a-----   10.00g                                                    

fprincipe@html3:~$ sudo lvresize -L -3g test2/lv04
  WARNING: Reducing active logical volume to 7.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce test2/lv04? [y/n]: y
  Size of logical volume test2/lv04 changed from 10.00 GiB (2560 extents) to 
7.00 GiB (1792 extents).
  Logical volume test2/lv04 successfully resized.

fprincipe@html3:~$ sudo lvs
  LV   VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv03 test2 -wi-ao---- <550.00g                                                    
  lv04 test2 -wi-a-----    7.00g 

Un altro metodo per ottimizzare la capienza di un Volume Group è quello di eliminare completamente un Logical Volume in esso contenuto. Il comando in questione è lvremove seguito come argomento dal LV che andrà eliminato.


fprincipe@html3:~$ sudo lvremove test2/lv04
Do you really want to remove and DISCARD active logical volume test2/lv04? [y/n]: y
  Logical volume "lv04" successfully removed

fprincipe@html3:~$ sudo lvs
  LV   VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv03 test2 -wi-ao---- <550.00g

Spostare Dati

Anche per lo spostamento dei dati LVM esistono potenti strumenti da utilizzare. Lanciando il comando pvmove seguito da due PV riverseremo tutto il contenuto del primo nel secondo. Potremo limitare la migrazione anche a un specifico LV utilizzando l’opzione -n e facendo seguire a esso il nome di un LV. La procedura può risultare molto lunga quindi è possibile collocarla in background adoperando l’opzione -b.


fprincipe@html3:~$ sudo pvmove /dev/sdc -n lv03 /dev/sdd
  /dev/sdc: Moved: 0.25%
[...]
  /dev/sdc: Moved: 100.00%

Creare Snapshot

Di un LV è altresì possibile creare uno snapshot sempre utilizzando lvcreate ma con opzione -s, otterremo un vero e proprio nuovo LV che di fatto sarà un elemento differenziale rispetto allo LV da cui è stato creato. Occorrerà assegnare a esso uno “spazio” che all’occorrenza potremo anche espandere come abbiamo imparato a fare nel precedente capitolo. Questo spazio servirà per conservare le informazioni necessarie a risalire allo stato esatto del LV di origine nel momento in cui abbiamo creato lo snapshot. Le informazioni necessarie per far ciò aumenteranno all’aumentare delle differenze introdotte fra il LV di origine e lo snapshot man mano che modificheremo il primo. Proprio per questo all’instante iniziale in pratica queste saranno nulle. All’esaurirsi dello spazio lo snapshot sarà disallineato e quindi diventerà inutilizzabile. Utilizzando lvconvert −−merge e il nome di uno shapshot attivo potremo invertire lo snapshot con l’orgine. Lo snapshot non avrà più alcuna utilità quindi scomparirà. Come è possibile constatare nell’esempio a seguire, dopo aver usato lvconvert e aver effettuato di nuovo il montaggio, non sarà più presente la directory ~/mountpoint/appenacreata semplicemente perché nel momento in cui era stato generato lo snapshot questa non era ancora presente nell’origine.


fprincipe@html3:~$ sudo lvcreate -s -n snap2 -L 100g test2/lv03 
  Using default stripesize 64.00 KiB.
  Logical volume "snap2" created.

fprincipe@html3:~$ sudo lvs
  LV    VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv03  test2 owi-a-s--- <550.00g                                                    
  snap1 test2 swi-a-s---    1.00g      lv03   0.00                                   
  snap2 test2 swi-a-s---  100.00g      lv03   0.00         
[...]
fprincipe@html3:~/mountpoint$ ls
appenacreata  lost+found

fprincipe@html3:~/mountpoint$ sudo lvconvert --merge test2/snap2
  Can't merge until origin volume is closed.
  Merging of snapshot test2/snap2 will occur on next activation of test2/lv03.

fprincipe@html3:~/mountpoint$ ls
lost+found

fprincipe@html3:~/mountpoint$ sudo lvs
  LV    VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv03  test2 owi-aos--- <550.00g                                                    
  snap1 test2 swi-a-s---    1.00g      lv03   57.68

RAID

Attraverso LVM è possibile emulare il funzionamento delle tecnologie RAID. Per far ciò sarà semplicemente necessario utilizzare il comando lvcreate con l’opzione −−type passando a questa il nome del type desiderato. Ecco una tabella che riassume i tipi principali e il loro funzionamento.

linearI dati sono accodati uno di seguito all’altro in modo lineare. E’ la tipologia di default.
raid1Crea copie dei dati, di default una, specificando l’argomento -m è possibile definire il numero di copie oltre la prima da creare (es.: con -m 2 le repliche totali saranno 3).
raid5Emula un volume raid5. Sono necessari almeno tre PV.
raid6Genera un volume raid6. Sono necessari almeno quattro PV.
strippedAl fine di incrementare le performance vengono creati dei segmenti di dati gestiti in modo simile a un raid0. E’ necessario utilizzare almeno due PV e l’opzione -i per specificare il numero di stripes da utilizzare.

Tutte le lezioni

1 ... 21 22 23

 

 

1 ... 21 22 23

Se vuoi aggiornamenti su LVM: comandi avanzati inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su LVM: comandi avanzati

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento dei dati per attività di marketing