Logical Volume Manager 2 Che cos'è Perchè si usa Come funziona Comandi principali
Che cos'è LVM2 E' uno strato software che offre una visione astratta dei dischi su di un computer. Permette di assegnare un nome mnemonico ai dischi anzichè il tradizionale sda o sdb1.
Perché si usa... Offre delle caratteristiche impensabili rispetto ai dischi (o partizioni) normali: Ridimensionamento dinamico dei dischi Snapshots: Possibilità di montare una snapshots in lettura e scrittura (LVM2)
Ridimensionamento Del Volume Group (VG): Aggiunta Phisical Volume (PV=disco/partizione) Eliminazione PV Dei Logical Volume (LV): Aumento LV mentre in uso Diminuzione OFFLINE (umount)
Snapshots Sono una copia del disco originale ad un determinato momento. Sarebbe meglio parlare di link al disco originale La snapshot non cambia più se non intenzionalmente LVM2 permette di montare le snapshots in lettura e scrittura
Come funziona? Questo schema da una prima idea dell'anatomia di LVM: +-- Volume Group | | | | PV | PE | PE | PE | PE | PE | PE | PE | PE | | | | |.... | | | | LV | LE | LE | LE | LE | LE | LE | LE | LE | | | | |.... | |.... | VG = Gruppo di Volumi | | PV = Volumi Fisici | PV | PE | PE | PE | PE | PE | PE | PE | PE | | PE = Estensione Fisica | | LE = Estensione Logica | | LV = Volume Logico
Come funziona? Un'altro modo per vedere l'architettura è il seguente: hda1 hdc1 (PV:s on partitions or whole disks) \ / diskvg (VG) / | \ usrlv rootlv varlv (LV:s) | | | ext2 reiserfs xfs (filesystems) Due partizioni: hda1 e hdc1, che sono volumi fisici, vengono raggruppati in un gruppo di volumi di nome diskvg. Da esso vengono creati tre volumi logici: usrlv, rootlv, varlv. Su ognuno di essi poi viene creato il file system desiderato, nell'esempio viene indicato il formato differente tra i tre VL.
Definizioni: VG = Gruppo di Volumi E' il livello più alto di astrazione LVM, è composto da PV e se vogliamo anche da LV. Da esso poi vengono creati i LV PV = Volumi Fisici E' identificabile con un hard disk (partizione intera in LVM), può essere anche un volume unico formato dall'insieme di dischi in RAID.
Definizioni: PE = Estensione Fisica E' il pezzo minimo in cui viene spezzettato PV, di solito 4MB. Vi è una tabella che associa l'allocazione di LE nelle PE. LE = Estensione Logica E' il pezzo minimo che va a costituire un volume logico, per default 4MB. La sua dimensione coincide con la dimensione di PE, la mappatura è sempre uno a uno PE=LE.
Definizioni LV = Volume Logico E' l'equivalente di una partizione in un sistema non LVM. Contiene un file system: /home = ext3 (per esempio). Snapshot E' una fotografia istantanea in un dato momento di un LV.
Esempio pratico Ho due partizioni hda1 e hdc1 rispettivamente di 99 PE e di 248 PE. Vengono associati nel VG diskvg con un totale di 347 PE. Ora posso creare un LV con dimensione che va da 1 a 347 PE. L'allocazione dei PE avviene con un algoritmo che tende a distribuire le PE tra i vari PV, quindi ad esempio LE1=PE5 mentre LE2=PE150. LVM2 necessita del modulo dm_setup, perché esso mappa i nomi di fantasia con i device reali.
Le operazioni più comuni Inizializzare il disco o partizione E' sconsigliato usare direttamente un intero disco come PV, in quanto un altro OS vedrebbe il disco come libero. Meglio usare una partizione inizializzata come LVM. # pvcreate /dev/hdb oppure meglio # pvcreate /dev/hdc1
Le operazioni più comuni Creare un gruppo di volumi # vgcreate diskvg /dev/hda1 /hdc1 Attivare un VG # vgchange -a y diskvg Aggiungere un PV inizializzato ad un VG # vgextend diskvg /dev/hdc1
Le operazioni più comuni Rimuovere un VG Premesso che nel VG non devono più esserci LV: disattiviamo il VG # vgchange -a n diskvg rimuoviamo il VG # vgremove diskvg
Le operazioni più comuni Rimuovere un PV da un VG Assicurarsi che il PV non sia usato da nessun LV col comando pvdisplay # pvdisplay /dev/hda1 --- Physical volume --- PV Name /dev/hda1 VG Name diskvg PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB] PV# 1 PV Status available Allocatable yes (but full) Cur LV 1 PE Size (KByte) 4096 Total PE 499 Free PE 0 Allocated PE 499 PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7 Se il volume fosse in uso migrare i dati su di un altro PV con pvmove, e per la verità servono anche lo stesso di PE contigue libere. # vgreduce diskvg /dev/hda1
Le operazioni più comuni Creare un LV La sintassi più comune del comando è la seguente: # lvcreate -L 1G -n primolv diskvg Verrà quindi creato un volume logico di 1GB di grandezza, dal nome primolv e residente nel gruppo di volumi diskvg.
Le operazioni più comuni Rimuovere un LV Prima di eliminare in LV devo smontarlo e poi eliminarlo: # umount /dev/diskvg/primolv # lvremove /dev/diskvg/primolv
Le operazioni più comuni Estendere un LV Vi sono due possibilità: 1. Dare la dimensione finale che dovrà avere il LV: # lvextend -L 2G /dev/diskvg/primolv 2. Oppure dare la dimensione da aggiungere al LV: # lvextend -L +1G /dev/diskvg/primolv Ovviamente sarà poi necessario estendere il file system contenuto, un esempio per ext(2-3-4) è: # umount /dev/diskvg/primolv # resize2fs /dev/diskvg/primolv # fschk /dev/diskvg/primolv # mount /dev/diskvg/primolv /home
Le operazioni più comuni Ridurre un LV E' l'operazione contraria, la difficoltà sta nel sapere la dimensione in blocchi del filesystem. # umount /home # resize2fs /dev/diskvg/primolv # fschk /dev/diskvg/primolv # lvreduce -L -1G /dev/diskvg/primolv # mount /home
Le operazioni più comuni Estrarre un PV (disco) dal VG Si deve avere sufficiente spazio per spostare tutti le PE occupate sugli altri supporti prima di poter eliminare il PV. Disabilitiamo l'allocazione delle PE # pvchange -xn /dev/hda6 Spostiamo le PE contenute, report ogni 10'' # pvmove -i 10 /dev/hda6 Togliamo ed eliminiamo il disco # vgreduce /dev/hda6 # pvremove /dev/hda6
Le operazioni più comuni Creare una snapshot # lvcreate -L 512M -s -n snap_primolv /dev/cicciolv/primolv Con lo switch "-s" indico la creazione di una snapshot di nome snap_primolv con una grandezza max di 512M del LV primolv. Controllare una snapshot # lvdisplay /dev/cicciolv/ snap_ primolv Eliminiamo una snapshot # lvremove /dev/cicciolv/ snap_ primolv
Come funziona una snap Alla creazione Nulla viene copiato, ma viene creato un puntamento alla lista di allocazione delle LE del LV fotografato. Uso normale Durante l'uso del LV, le modifiche vengono gestite con una “exception list” formalmente detta: Copy-on-Write ovvero viene copiata la LE del LV in un'altra associandola alla lista della snapshot (Si evince prima di Listing Su doc Ibm)
Conclusioni Attenzione che una snapshot che esaurisce la sua “exception list” diventa automaticamente inusabile, quindi è vitale allocare lo spazio sufficiente. Se alloco lo stesso spazio del LV non avrò mai questo problema, posso poi trattare una snapshot alla stregua di un qualsiasi LV. NOTA: In un ambiente di produzione è sconsigliabile avere partizioni multiple su di un volume per questioni amministrative e di performance. Meglio una partizione LVM che copra l'intero disco.
Riferimenti
Licenza della presentazione Autore: Gianni Caldonazzi Licenza: Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia License Info: