LVM és l’acrònim de Logical Volume Manager, que en computació fa referència a una forma d’assignar espai de forma més flexible que les formes tradicionals com la partició. Un volume manager és una capa de gestió d’emmagatzematge que abstrau els discs físics, que permet crear, redimensionar i administrar espais d’emmagatzematge de manera flexible i dinàmica sense haver de reiniciar el sistema ni canviar particions físicament. També permet l’administració de volums definits per grups d’usuaris, atorgant-li a l’administrador del sistema bregar amb grups de volums amb noms més sensibles com “desenvolupament” o “sistema” en comptes de noms de discos físics que poc ens diuen com “sda” o “sdb”.
LVM es descompon en tres capes:
| Capa | Funció |
|---|---|
| Volums físics (PV) | Discs o particions físiques preparades per a LVM
(pvcreate) |
| Grups de volums (VG) | Pool d’emmagatzematge que agrupa un o més PV
(vgcreate) |
| Volums lògics (LV) | Volums lògics creats dins del VG, que comporten com particions
(lvcreate) |
Una de les decisions que afronta un usuari instal·lant GNU/Linux és com particionar el disc dur. La necessitat d’estimar quant espai serà necessari per al sistema, per als temporals o per les dades personals, pot convertir-se en alguna cosa problemàtica, de manera que molts usuaris opten per crear una partició que ocupi tot el disc i allà introduir les dades. Encara havent estimat correctament quant espai es necessita per a /home, /usr, /tmp, o qualsevol altre directori important, és bastant comú que ens quedem sense espai en aquestes particions, quan tenim espai de sobres en alguna altra.
Amb l’ús d’un gestor de volums lògics, el disc complet pot ser assignat a un únic grup lògic i definir diferents volums lògics per emmagatzemar /home o altres directoris. En el cas que ens quedem sense espai, per exemple, a /home, i tenim espai a /opt, podríem redimensionar /home i /opt i utilitzar l’espai que li hem tret a /opt i afegir-lo a /home. Cal tenir en compte, que per fer això, el nostre sistema de fitxers ha de suportar el redimensionat per dalt i per baix, com ReiserFS.
Una altra alternativa seria deixar una certa quantitat d’espai del disc sense assignar i quan fos necessari, expandir el volum.
Administrar un sistema amb molts discos és una feina que consumeix temps, i es fa particularment complex si el sistema conté discs de diferents mides. Balancejar els requisits d’emmagatzematge de diferents usuaris (sovint conflictius) pot ser una tasca molt laboriosa i complexa.
Els grups d’usuaris (diguem-ne per exemple administració, desenvolupament, etc.) Poden tenir els seus volums lògics i aquests poden créixer el que sigui necessari, i l’administrador pot efectuar les operacions oportunes sobre aquests volums.
Quan un nou disc s’afegeix al sistema, no cal moure les dades dels usuaris. Simplement, s’afegeix el nou disc al grup lògic corresponent i s’expandeixen els volums lògics tot el que es consideri adient. També es poden migrar les dades de discos antics a altres nous, de forma totalment transparent a l’usuari.
mdadm (RAID) si cal
redundància.Fes sempre proves en entorns no productius. La manipulació incorrecta de LVM pot provocar una pèrdua irreversible de dades.
# Format amb tipus 8e (Linux LVM) si cal
fdisk /dev/sdb → t → 8e
# Crear PV
pvcreate /dev/sdb /dev/sdc
# Informació
pvs | pvdisplayvgcreate vg_dades /dev/sdb /dev/sdc
vgextend vg_dades /dev/sdd # Afegir disc
vgreduce vg_dades /dev/sdc # Eliminar (després de migrar dades)
vgs | vgdisplaylvcreate -L 50G -n lv_sistema vg_dades
lvcreate -l 100%FREE -n lv_rest vg_dades # Usa tot l'espai lliure
# Ampliar
lvextend -L +20G /dev/vg_dades/lv_sistema
lvextend -l 100%FREE /dev/vg_dades/lv_rest
# Reduir (RISC, fa primer resize2fs o xfs_repair)
lvreduce -L -10G /dev/vg_dades/lv_sistema# Crear ext4
mkfs.ext4 /dev/vg_dades/lv_sistema
# Ampliar online (ext4/xfs)
resize2fs /dev/vg_dades/lv_sistema # ext4
xfs_growfs /mnt/point # xfs
# Snapshots
lvcreate -s -L 1G -n snap_lv /dev/vg_dades/lv_sistema| Comanda | Ús |
|---|---|
lvs / lvdisplay |
Llista LV |
vgs / vgdisplay |
Llista VG |
pvs / pvdisplay |
Llista PV |
lvm fullreport |
Informació completa |
dmsetup ls |
Estructura de dispositius mappats |
vgcfgbackupdf -h i lvs després de canvis.lvm2 per a correccions de
seguretat i compatibilitat.Podem gestionar els LVM en un entorn gràfic amb el programa kvpm (KDE). El programa system‑config‑lvm (Gnome) tan sols mostra gràficament la distribució dels volums del LVM.
També podem fer servir directament les ordres de LVM des del terminal:
| Ordre | Descripció |
|---|---|
pvchange |
Canvia atributs d’un volum físic. |
pvck |
Comprova metadades del volum físic. |
pvcreate |
Inicialitza un disc o partició per ser usat com a LVM. |
pvdisplay |
Mostra els atributs d’un volum físic. |
pvmove |
Mou extensions físiques. |
pvremove |
Elimina un volum físic. |
pvresize |
Canvia la mida d’un disc o partició en ús per LVM2. |
pvs |
Informa sobre els volums físics. |
pvscan |
Analitza tots els discos a la recerca de volums físics. |
vgcfgbackup |
Crea una còpia de seguretat de l’àrea del descriptor del grup de volums. |
vgcfgrestore |
Restaura una còpia de seguretat de l’àrea del descriptor del grup de volums. |
vgchange |
Canvia els atributs d’un grup de volums. |
vgck |
Comprova les metadades d’un grup de volums. |
vgconvert |
Converteix el format de metadades del grup de volums. |
vgcreate |
Crea un grup de volums. |
vgdisplay |
Mostra els atributs dels grups de volums. |
vgexport |
Fa grups de volums desconeguts per al sistema. |
vgextend |
Afegeix volums físics a un grup de volums. |
vgimport |
Fa grups de volums exportats coneguts pel sistema. |
vgimportclone |
Importa i canvia el nom del grup de volums duplicat (per exemple, una instantània de maquinari). |
vgmerge |
Combina dos grups de volums. |
vgmknodes |
Recrea el directori del grup de volums i arxius especials del volum lògic |
vgreduce |
Redueix un grup de volums mitjançant l’eliminació d’un o més volums físics. |
vgremove |
Elimina un grup de volums. |
vgrename |
Canvia el nom d’un grup de volums. |
vgs |
Informa sobre els grups de volums. |
vgscan |
Analitza tots els discos dels grups de volums i reconstrueix les caus. |
vgsplit |
Divideix un grup de volums en dos, movent els volums lògics del grup de volums a un altre movent tots els volums físics. |
lvchange |
Canvia els atributs d’un volum lògic. |
lvconvert |
Converteix un volum lògic de lineal a mirall o instantània. |
lvcreate |
Crea un volum lògic en un grup de volums existent. |
lvdisplay |
Mostra els atributs d’un volum lògic. |
lvextend |
Amplia la mida d’un volum lògic. |
lvmchange |
Canvia atributs del gestor de volums lògics. |
lvmdiskscan |
Analitza tots els dispositius visibles per LVM2. |
lvmdump |
Crea bolcats d’informació per a fins de diagnòstic. |
lvreduce |
Redueix la mida d’un volum lògic. |
lvremove |
Elimina un volum lògic. |
lvrename |
Canvia el nom d’un volum lògic. |
lvresize |
Canvia la mida d’un volum lògic. |
lvs |
Informa sobre els volums lògics. |
lvscan |
Analitza tots els discs a la recerca de volums lògics. |
Exemple 1
Els passos que haurem de seguir per ampliar amb l’eina kvpm són:
Exemple 2
Els passos que haurem de seguir per ampliar, per exemple, /home des del terminal són:
En aquest exemple tenim dos discs durs de 8 GB cadascú i hem creat un
grup de volums anomenat grup de 16 GB dins del qual s’han
definit tres volums lògics: arrel (6 GB), casa (9,6
GB) i intercanvi (0,4 GB). En el volum lògic arrel hem muntat
el / i en el volum lògic casa hem muntat /home. El volum lògic intercanvi s’ha fet servir
per al swap.
Amb l’ordre df veiem l’estat inicial
df -hS. fitxers Mida En ús Lliure %Ús Muntat a
/dev/mapper/grup-arrel 6,0G 3,0G 2,8G 52% /
udev 494M 4,0K 494M 1% /dev
tmpfs 201M 800K 200M 1% /run
none 5,0M 0 5,0M 0% /run/lock
none 501M 152K 501M 1% /run/shm
/dev/mapper/grup-casa 9,6G 274M 8,8G 3% /home
Després d’haver afegit físicament el nou disc, que és de 10 GB, el particionem
fdisk /dev/sdcEl dispositiu no conté ni taula de particions DOS vàlida, ni cap etiqueta de disc Sun, SGI o OSF
Building a new DOS disklabel with disk identifier 0x1b8c2b90.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Avís: el senyalador 0x0000 invàlid de la taula de particions 4 es corregirà amb w(escriu)
Ordre (m per a obtenir ajuda): o
Building a new DOS disklabel with disk identifier 0x4c5c816b.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Avís: el senyalador 0x0000 invàlid de la taula de particions 4 es corregirà amb w(escriu)
Ordre (m per a obtenir ajuda): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Nombre de partició (1-4, valor per defecte 1):
S'està utilitzant el valor per defecte 1
Primera sector (2048-20971519, valor per defecte 2048):
S'està utilitzant el valor per defecte 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, valor per defecte 20971519):
S'està utilitzant el valor per defecte 20971519
Ordre (m per a obtenir ajuda): w
S'ha modificat la taula de particions.
S'està cridant ioctl() per rellegir la taula de particions.
S'estan sincronitzant els discs.
Creem el volum físic
pvcreate /dev/sdc1Physical volume "/dev/sdc1" successfully created
Estenem el grup de volums
vgextend grup /dev/sdc1Volume group "grup" successfully extended
Estenem el volum lògic casa
lvextend /dev/mapper/grup-casa /dev/sdc1Extending logical volume casa to 19,53 GiB
Logical volume casa successfully resized
Redimensionem el volum lògic
resize2fs /dev/mapper/grup-casaresize2fs 1.42 (29-Nov-2011)
El sistema de fitxers a /dev/mapper/grup-casa està muntat a /home; cal un canvi de mida en línia
old_desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/grup-casa to 5120000 (4k) blocks.
The filesystem on /dev/mapper/grup-casa is now 5120000 blocks long.
Finalment, comprovem que la mida de /home s’ha
incrementat
df -hS. fitxers Mida En ús Lliure %Ús Muntat a
/dev/mapper/grup-arrel 6,0G 3,0G 2,8G 52% /
udev 494M 4,0K 494M 1% /dev
tmpfs 201M 800K 200M 1% /run
none 5,0M 0 5,0M 0% /run/lock
none 501M 152K 501M 1% /run/shm
/dev/mapper/grup-casa 20G 274M 19G 2% /home
| Característica | LVM | mdadm (RAID) | ZFS/Btrfs |
|---|---|---|---|
| Gestió d’espai | Excel·lent | Limitat | Integrat |
| Tolerància a fallades | No (combinar amb RAID) | Sí | Sí |
| Snapshots | Suportat | No | Natiu |
| Complexitat | Mitjana | Alta | Alta |
man lvm, man pvcreate, man vgcreate, man lvcreatelvmhelp i vgcfgbackup/restore per a
recuperació