IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Contingut

Introducció

Una alternativa al sistema tradicional de particions és Logical Volume Managment aka LVM. Per tal d'utilitzar LVM s'ha d'assignar el codi:

0x8e

a una o varies particions. Aleshores s'utilitzen una sèrie d'utilitats com pvcreate, vgcreate, lvcreate, lvscan... per tal de gestionar les particions reals (segons la terminologia LVM volums físics) i agrupar-les en grups de vòlums i crear vòlums lògics (grups de dades que poden ser de múltiples particions però que són vistos pel sistema con una sola partició).

El dispositius lògics creats es poden accedir des de:

/dev/mapper

Per exemple:

/dev/mapper/myvol-home.

LVM complica força la configuració però té els següents avantatges:

  • Permet canviar la mida de les particions lògiques de forma fàcil
  • Les particions pasesn a ser com a fitxers que es poden fer més grans o més petits i poden estar guardats en una partició o en varies (o fins i tot en diferents discs).
  • És molt útil quan a priori no sabem la mida que necessitem de les particions o en màquines que sabem que el futur poden augmentar el seu espai de disc.

Un dels principals inconvenients és que pot complicar la tasca de recuperació d'un desastre (p. ex error de disc). si un vòlum lógic ocupa més d'un disc si un disc dur falla pot provocar un error a tot el sistema de fitxers virtual.

Terminologia LVM

LVMTerminologia.jpg

Recursos:

Instal·lació

$ sudo apt-get install lvm2

Vegeu també

  • dmsetup (low level logical volume management )

Fitxers

$ dpkg -L lvm2
/.
/etc
/etc/lvm
/etc/lvm/lvm.conf
/etc/init.d
/etc/init.d/lvm2
/sbin
/sbin/lvm
/sbin/lvmdump
/usr
/usr/share
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/lvchange.8.gz
/usr/share/man/man8/lvconvert.8.gz
/usr/share/man/man8/lvcreate.8.gz
/usr/share/man/man8/lvdisplay.8.gz
/usr/share/man/man8/lvextend.8.gz
/usr/share/man/man8/lvm.8.gz
/usr/share/man/man8/lvmchange.8.gz
/usr/share/man/man8/lvmdiskscan.8.gz
/usr/share/man/man8/lvmdump.8.gz
/usr/share/man/man8/lvreduce.8.gz
 /usr/share/man/man8/lvremove.8.gz
/usr/share/man/man8/lvrename.8.gz
/usr/share/man/man8/lvresize.8.gz
/usr/share/man/man8/lvs.8.gz
/usr/share/man/man8/lvscan.8.gz
/usr/share/man/man8/pvchange.8.gz
/usr/share/man/man8/pvck.8.gz
/usr/share/man/man8/pvcreate.8.gz
/usr/share/man/man8/pvdisplay.8.gz
/usr/share/man/man8/pvmove.8.gz
/usr/share/man/man8/pvremove.8.gz
/usr/share/man/man8/pvresize.8.gz
/usr/share/man/man8/pvs.8.gz
/usr/share/man/man8/pvscan.8.gz
/usr/share/man/man8/vgcfgbackup.8.gz
/usr/share/man/man8/vgcfgrestore.8.gz
/usr/share/man/man8/vgchange.8.gz
/usr/share/man/man8/vgck.8.gz
/usr/share/man/man8/vgconvert.8.gz
/usr/share/man/man8/vgcreate.8.gz
/usr/share/man/man8/vgdisplay.8.gz
/usr/share/man/man8/vgexport.8.gz
/usr/share/man/man8/vgextend.8.gz
/usr/share/man/man8/vgimport.8.gz
/usr/share/man/man8/vgmerge.8.gz
/usr/share/man/man8/vgmknodes.8.gz
/usr/share/man/man8/vgreduce.8.gz
/usr/share/man/man8/vgremove.8.gz
/usr/share/man/man8/vgrename.8.gz
/usr/share/man/man8/vgs.8.gz
/usr/share/man/man8/vgscan.8.gz
/usr/share/man/man8/vgsplit.8.gz
/usr/share/man/man5
/usr/share/man/man5/lvm.conf.5.gz
/usr/share/initramfs-tools
/usr/share/initramfs-tools/hooks
/usr/share/initramfs-tools/hooks/lvm2
/usr/share/initramfs-tools/scripts
/usr/share/initramfs-tools/scripts/local-top
/usr/share/initramfs-tools/scripts/local-top/lvm2
/usr/share/doc
/usr/share/doc/lvm2
/usr/share/doc/lvm2/examples
/usr/share/doc/lvm2/examples/example.conf.gz
/usr/share/doc/lvm2/pvmove_outline.txt
/usr/share/doc/lvm2/testing.txt
/usr/share/doc/lvm2/copyright
/usr/share/doc/lvm2/changelog.Debian.gz
/usr/share/doc/lvm2/changelog.gz
/usr/share/doc/lvm2/tagging.txt.gz
/sbin/lvchange
/sbin/lvconvert
/sbin/lvcreate
/sbin/lvdisplay
/sbin/lvextend
/sbin/lvmchange
/sbin/lvmdiskscan
/sbin/lvmsadc
/sbin/lvmsar
/sbin/lvreduce
/sbin/lvremove
/sbin/lvrename
/sbin/lvresize
/sbin/lvs
/sbin/lvscan
/sbin/pvchange
/sbin/pvck
/sbin/pvcreate
/sbin/pvdisplay
/sbin/pvmove
/sbin/pvremove
/sbin/pvresize
/sbin/pvs
/sbin/pvscan
/sbin/vgcfgbackup
/sbin/vgcfgrestore
/sbin/vgchange
/sbin/vgck
/sbin/vgconvert
/sbin/vgcreate
/sbin/vgdisplay
/sbin/vgexport
/sbin/vgextend
/sbin/vgimport
/sbin/vgmerge
/sbin/vgmknodes
/sbin/vgreduce
/sbin/vgremove
/sbin/vgrename
/sbin/vgs
/sbin/vgscan
/sbin/vgsplit

Ordres

pvdisplay

Permet consultar els dispositius físics (PV o Physical Volumes) que pot utilitzar LVM:

Parametres que ens permet el pvdisplay, ho veurem amb:

$ sudo pvdisplay --help
$ sudo pvdisplay --help
 pvdisplay: Display various attributes of physical volume(s)
pvdisplay
	[-c|--colon]
	[-d|--debug]
	[-h|--help]
	[--ignorelockingfailure]
	[-m|--maps]
	[--nosuffix]
	[-s|--short]
	[--units hHbBsSkKmMgGtTpPeE]
	[-v|--verbose]
	[--version]
	[PhysicalVolumePath [PhysicalVolumePath...]]
pvdisplay --columns|-C
	[--aligned]
	[-a|--all]
	[-d|--debug]
	[-h|--help]
	[--ignorelockingfailure]
	[--noheadings]
	[--nosuffix]
	[-o|--options [+]Field[,Field]]
	[-O|--sort [+|-]key1[,[+|-]key2[,...]]]
	[--separator Separator]
	[--unbuffered]
	[--units hHbBsSkKmMgGtTpPeE]
	[-v|--verbose]
	[--version]
	[PhysicalVolumePath [PhysicalVolumePath...]]


$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/block/104:3
  VG Name               xen_vm
  PV Size               459,65 GB / not usable 1,67 MB
  Allocatable           yes 
  PE Size (KByte)       4096
  Total PE              117671
  Free PE               19556
  Allocated PE          98115
  PV UUID               sP1cb0-XGIE-whWp-XrBj-DsxZ-GyGj-kpH54y


On Total PE es el nobre total que te el disc i muliplicat pel PE size (4MB) ens dona el PV size

On free PE indica l'espai físic lliure del que disposeu. Cal fer el càlcul aproximat o utilitzar:

$ sudo pvdisplay -s
Device "/dev/block/104:3" has a capacity of 131,44 GB

vgdisplay

--Ramonmontoya (discussió) 20:13, 25 set 2012 (CEST)

Permet consultar els grups de volums lògics (VG o Volume Groups) existents a LVM:

$ sudo vgdisplay
 --- Volume group ---
 VG Name               pve
 System ID             
 Format                lvm2
 Metadata Areas        1
 Metadata Sequence No  4
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                3
 Open LV               3
 Max PV                0
 Cur PV                1
 Act PV                1
 VG Size               465,26 GiB
 PE Size               4,00 MiB
 Total PE              119106
 Alloc PE / Size       115012 / 449,27 GiB
 Free  PE / Size       4094 / 15,99 GiB
 VG UUID               kB2Eqb-IZ7o-KkvO-Xwng-Np7B-hcgI-Zooc5I

lvdisplay

Permet consultar els volums lògics (LV o Logical Volumes) existents a LVM:

$ sudo lvdisplay 
 --- Logical volume ---
 LV Path                /dev/pve/swap
 LV Name                swap
 VG Name                pve
 LV UUID                mgXaS6-qcTD-v4pi-i4ZE-fNgr-YrRJ-Anh1D0
 LV Write Access        read/write
 LV Creation host, time proxmox, 2012-05-03 14:31:47 +0200
 LV Status              available
 # open                 1
 LV Size                4,00 GiB
 Current LE             1024
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           253:1
  
 --- Logical volume ---
 LV Path                /dev/pve/root
 LV Name                root
 VG Name                pve
 LV UUID                Z8jo0k-po9V-gkhw-p91K-GZ79-0nMw-Rn65Cq
 LV Write Access        read/write
 LV Creation host, time proxmox, 2012-05-03 14:31:48 +0200
 LV Status              available
 # open                 1
 LV Size                96,00 GiB
 Current LE             24576
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           253:0
  
 --- Logical volume ---
 LV Path                /dev/pve/data
 LV Name                data
 VG Name                pve
 LV UUID                N9ao6A-ly0v-0HYo-Ps5J-OCSc-1vOS-JSR2zf
 LV Write Access        read/write
 LV Creation host, time proxmox, 2012-05-03 14:31:48 +0200
 LV Status              available
 # open                 1
 LV Size                349,27 GiB
 Current LE             89412
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           253:2

pvcreate

El que fa aquesta ordre és preparar un dispositiu físic (ja siqui un disc sencer o una partició) per a ser utilitzat amb LVM:

$ sudo pvcreate /dev/sdb5
 Physical volume "/dev/sdb5" successfully created

$ sudo pvdisplay
...
  
 "/dev/sdb5" is a new physical volume of "931,27 GiB"
 --- NEW Physical volume ---
 PV Name               /dev/sdb5
 VG Name               
 PV Size               931,27 GiB
 Allocatable           NO
 PE Size               0   
 Total PE              0
 Free PE               0
 Allocated PE          0
 PV UUID               3OE4ts-dupk-BECn-vpeK-lSKP-BFeJ-0bezdj

Recursos:

vgcreate

Serveix per crear grups de volums:

$ sudo vgcreate sol1 /dev/sdb5
 Volume group "sol1" successfully created
$ sudo vgdisplay
 --- Volume group ---
 VG Name               sol1
 System ID             
 Format                lvm2
 Metadata Areas        1
 Metadata Sequence No  1
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                0
 Open LV               0
 Max PV                0
 Cur PV                1
 Act PV                1
 VG Size               931,27 GiB
 PE Size               4,00 MiB
 Total PE              238405
 Alloc PE / Size       0 / 0   
 Free  PE / Size       238405 / 931,27 GiB
 VG UUID               f2h6ru-wFyQ-p6zO-QMwk-9kP3-sC5t-jGUp7V
 ...

lvcreate

  • Permet crear els volums lògics (LV) a partir dels volums físics (PV)

Crear un LV amb tot l'espai disponible

$ lvcreate -n NAME -l 100%FREE vg0

Recursos:

lvscan

lvresize

lvextend

vgextend

Permet afegir un PV a un VG ja existent (amplia la capacitat física del VG):

$ sudo vgextend my_volume_group /dev/sda1

vgchange

Activar un VG:

pvremove

vgremove

És recomanable desactivar el VG abans d'esborrar:

$ sudo vgchange -a n my_volume_group
       

I ara podeu esborrar-lo amb:

$ sudo vgremove my_volume_group
       

lvremove

Exemples

Consultar l'espai lliure físic real

Si per exemple utilitzeu LVM en un entorn Xen on les "particions" LVM no estan muntades, l'ordre df no us mostrarà l'espai que hi ha lliure realment.

Consulteu pvdisplay.

Muntar una partició LVM des una ubuntu LIVE. Recuperació del sistema

Les particions LVM no es poden muntar directament des de una LIVE-CD. Aquí podeu trobar les passes per a accedir a una partició LVM des de un LIVE-Cd d'Ubuntu.

Carregueu la live-cd i obriu una línia de comandes. Primer de tot cal que tingueu accés de xarxa per instal·lar un paquet. Podeu configurar la xarxa amb:

$ sudo ifconfig eth0 IP netmask MASCARA up
$ sudo route add default gw IP_GATEWAY
$ sudo nano /etc/resolv.conf

Al fitxer resolv.con afegiu una línia amb:

nameserver IP_SERVIDOR_DNS

Ara instal·leu el suport per a LVM:

$ sudo apt-get install lvm2

Segurament haureu de carregar el mòdul del kernel:

$ sudo modprobe dm-mod

Podeu consultar els discs durs amb:

$ sudo fdisk -lu

Ara consulteu el volums físics amb:

$ sudo pvscan
PV /dev/sda2 VG VolGroup00 lvm2 [74.41 GB / 32.00 MB free]
Total: 1 [74.41 GB] / in use: 1 [74.41 GB] / in no VG: 0 [0 ]

I els grups de volum amb:

$ sudo vgscan
Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2

Activeu els grups de volum amb:

$ sudo vgchange -a y
2 logical volume(s) in volume group "VolGroup00" now active

Mostreu els volums lògics amb:

$ sudo lvscan 
ACTIVE '/dev/VolGroup00/LogVol00' [72.44 GB] inherit
ACTIVE '/dev/VolGroup00/LogVol01' [1.94 GB] inherit

Munteu la partició amb:

$ sudo mount /dev/VolGroup00/LogVol00 /mnt

Ara a la carpeta /mnt/VolGroup00/LogVol00 teniu els fitxers de la partició LVM.

Recursos


Creació d'un volum lògic format per 2 discs durs físics

Anem a suposar que tenim 2 discs durs qualsevol. En el nostre exemple, de fet, utilitzarem 2 volums de RAID (realment tenim 4 discs) anomenats /dev/md0 i /dev/md1. Sense raid l'exemple funcionaria igualment utilitzant per exemples 2 discs durs SATA (/dev/sda1 i /dev/sdb1).

Primer cal iniciar els discos físics per utilitzar LVM:

$ sudo pvcreate /dev/md0 /dev/md1

pv---> physical volume.

Ara cal crear el volum group (vg):

$ sudo vgcreate datavg /dev/md0 /dev/md1 

On datavg és el nom que li volem donar al volum.

I ara cal crear el volum logic (logical volume - lv -):

$ sudo lvcreate --name datalv --size 465,63G datavg

Cal tenir en compte que la mida s'ha d'expressar en GiB i no pas GB. Per exemple un disc de 500G és un disc de 465,63. El factor de conversió és 0.93125.

Ara podem consultar el volum amb:

$ sudo lvdisplay
 --- Logical volume ---
 LV Name                /dev/datavg/datalv
 VG Name                datavg
 LV UUID                7qHDvB-3F4R-wNVP-valt-MXEq-NWIl-3paokl
 LV Write Access        read/write
 LV Status              available
 # open                 0
 LV Size                465,63 GB
 Current LE             119202
 Segments               2
 Allocation             inherit
 Read ahead sectors     0
 Block device           254:4

Ara cal crear el sistema de fitxers. En aquesta cas volem ext3:

$ sudo mkfs.ext3 -m 0 /dev/datavg/datalv

Els dispositius LVM els trobarem a:

/dev/mapper/

Per muntar un dispositiu LVM o podem fer amb:

$ mkdir /mnt/data
$ mount /dev/mapper/datavg-datalv /mnt/data/
$ chmod 777 /mnt/data/

O podem fer que es munti de forma permanent editant el fitxer /etc/fstab:

$ sudo joe /etc/fstab

i afegim la línia:

/dev/mapper/datavg-datalv /mnt/data ext3 rw,noatime 0 0

Afegir un disc dur extra amb LVM a Proxmox

Consulteu Proxmox#Afegir_un_segons_disc_virtual

Exemples d'storages LVM amb Proxmox

Canviar el nom d'un grup de volums

Cal que les particions no estiguin en ús, es pot posar un LIVE-CD o fer

$ sudo init 1
$ sudo umount /dev/cop/root
$ sudo lvchange -an /dev/cop/root
$ sudo vgrename cop nou_nom
$ sudo lvchange -a y

NOTA: Si és la partició root només es podrà fer amb un LIVE-CD i aleshores són dos passos:

$ sudo apt-get install lvm2
$ sudo vgrename cop xen_vm

SkoleLinux i VLM

SkoleLinux utilitza LVM. Lvm permet crear unitats lògiques a partir d'un o més disc durs i permet redimensionar particions en calent.

SkoleLinux utilitza LVM per separar el que són els fitxers de sistema del fitxers data. Per aixo s'han creat dos grups de volums (vg)

  • vg_system
  • vg_data

i diversos volums lògics:

Pel grup system

  • lv_usr -> Carpeta /usr
  • lv_var -> Carpeta /var
  • lv_ltsp_swap -> Swap files per ltsp (només perfil lstpserver)
  • lv_squid -> Fitxers del proxy squid?

Pel grup data

  • lv_home0 -> Les HOMES dels usuaris
  • lv_backup -> Les copies de seguretat d'SkoleLinux

Ho podem veure si executem al servidor:

$ df -h
fitxers                  Tamany   En  Lliure  %   Muntat en
/dev/hdc1                   464M  159M  280M  37% /
/dev/vg_system/lv_usr       2,7G  1,4G  1,2G  55% /usr
/dev/vg_data/lv_backup      1,6G  978M  517M  66% /skole/backup
/dev/vg_data/lv_home0       1008M  104M  854M  11% /skole/tjener/home0
/dev/vg_system/lv_var       1,1G  926M   92M  92% /var
/dev/vg_system/lv_ltsp_swap 977M  145M  783M  16% /var/opt/ltsp/swapfiles
/dev/vg_system/lv_squid     882M  121M  717M  15% /var/spool/squid

Afegir volums físics a un grup de volums

Per exemple per afegir dos RAIDs:

$ sudo vgextend vg_ubuntu_sala /dev/md0 /dev/md1 
 Volume group "vg_ubuntu_sala" successfully extended

Consulteu amb vgdisplay que el canvi s'ha dut a terme correctament:

Modificar la mida de les LVM

El procediment per modificar el tamany de les LVM és diferent depenent del tipus de particio. Si es una partició com /usr no es podra fer el canvi de tamany "en calent" i abans caldra asegurar-se de que nno hi ha cap usuari conectat i pasar al nivell 1 amb la comnanda init 1.

Aquí trobem les passes a seguir per modificar la mida de la partició /usr.

Si el nostre sistema ens dona un error al utilitzar la comanda e2fsadm es que només servia per SkoleLinux Woody. Per Sarge cal utilitzar una comanda similar a:

lvextend --size  1G /dev/vg_system/lv_usr
resize2fs /dev/vg_system/lv_usr

Disminuir un grup lògic que contingui l'arrel del sistema

Cal entrar amb un LIVE-CD i executar:

$ sudo apt-get install lvm2
$ sudo -i
# lvm vgchange -a y
# lvdisplay
# e2fsck -f /dev/VolGroup00/LogVol00
# resize2fs -f /dev/VolGroup00/LogVol00 10G
# lvreduce -L10G /dev/VolGroup00/LogVol00


Reduir la mida d'un volum lògic (lv) de dades

NOTA: Aquest exemple només s'aplica a volums lògics que no continguin dades de sistema operatiu, és a dir que poguem estar sense aquesta "partició" una estona sense que el sistema deixi de funcionar

Primer s'ha de desmuntar el volum (en cas que ho estigui). Consultem els dispositius muntats amb mount:

 $ mount
/dev/cciss/c0d0p1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
overflow on /tmp type tmpfs (rw,size=1048576,mode=1777)
/dev/mapper/xen_vm-repositori_maquina_virtual on /mnt/repositori_maquina_virtual type ext3 (rw)

En el nostre cas el dispositiu és:

/dev/mapper/xen_vm-repositori_maquina_virtual

Per desmuntar-lo:

$ sudo umount /dev/mapper/xen_vm-repositori_maquina_virtual

Sempre abans de modificar un sistema de fitxers és molt recomanable comprovar que no hi hagin error. No feu canvis mai en un sistema de fitxers amb errors o podríeu perdre les dades del sistema de fitxers:

$ sudo e2fsck -f /dev/mapper/xen_vm-repositori_maquina_virtual
e2fsck 1.41.3 (12-Oct-2008)
Pas 1: comprovació de nodes-i, blocs i mides
Pas 2: comprovació de l'estructura del directori
Pas 3: comprovació de la connectivitat dels directoris
Pas 4: comprovació dels nombres de referències
Pas 5: comprovació del resum de la informació del grup
/dev/mapper/xen_vm-repositori_maquina_virtual: 21/327680 fitxers (0.0% no contigus), 212451/1310720 blocs

Ara cal reduir la mida del sistema de fitxers:

$ sudo resize2fs /dev/mapper/xen_vm-repositori_maquina_virtual 1000M
resize2fs 1.41.3 (12-Oct-2008)
Resizing the filesystem on /dev/mapper/xen_vm-repositori_maquina_virtual to 256000 (4k) blocks.
The filesystem on /dev/mapper/xen_vm-repositori_maquina_virtual is now 256000 blocks long.

NOTA: Mai reduïu el sistema de fitxers a menys de les dades que estan ocupant espai en aquell sistema de fitxers sinó podeu perdre dades.

Ara cal canviar la mida del volum lògic:

$ sudo lvresize -L 1G /dev/mapper/xen_vm-repositori_maquina_virtual
 WARNING: Reducing active logical volume to 1,00 GB
 THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce repositori_maquina_virtual? [y/n]: y
 Reducing logical volume repositori_maquina_virtual to 1,00 GB
 Logical volume repositori_maquina_virtual successfully resized

Comproveu el canvi:

$ sudo lvdisplay /dev/mapper/xen_vm-repositori_maquina_virtual
 --- Logical volume ---
 LV Name                /dev/xen_vm/repositori_maquina_virtual
 VG Name                xen_vm
 LV UUID                UOs4Ft-cdGD-RULl-HSDP-jyJj-ncUl-8xyRad
 LV Write Access        read/write
 LV Status              available
 # open                 0
 LV Size                1,00 GB
 Current LE             256
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           254:6

Ara torneu a muntar el volum:

$ sudo mount /dev/xen_vm/repositori_maquina_virtual /mnt/repositori_maquina_virtual

Comproveu els canvis:

$ df -h
S. fitxers            Mida En ús Lliure %Ús Muntat a
/dev/cciss/c0d0p1     2,3G  1,2G  1,1G  52% /
tmpfs                 1,9G     0  1,9G   0% /lib/init/rw
udev                   10M  852K  9,2M   9% /dev
tmpfs                 1,9G     0  1,9G   0% /dev/shm
overflow              1,0M     0  1,0M   0% /tmp

Recursos:

Augmentar la mida d'un volum lògic (lv) de dades

L'ordre a utilitzar és lvextend. Per exemple per augmentar 2GB un volum lògic:

$ sudo lvextend -L+2G /dev/xen_vm/TortosaINSEbreSrvr1
 Extending logical volume TortosaINSEbreSrvr1 to 6,00 GB
 Logical volume TortosaINSEbreSrvr1 successfully resized

Primer s'ha de desmuntar el volum (en cas que ho estigui). Consultem els dispositius muntats amb mount:

 $ mount
...
/dev/mapper/xen_vm-TortosaINSEbreSrvr1 on /mnt/TortosaINSEbreSrvr1 type ext3 (rw)

En el nostre cas el dispositiu és:

/dev/mapper/xen_vm-TortosaINSEbreSrvr1

Per desmuntar-lo:

$ sudo umount /dev/mapper/xen_vm-TortosaINSEbreSrvr1

Sempre abans de modificar un sistema de fitxers és molt recomanable comprovar que no hi hagin error. No feu canvis mai en un sistema de fitxers amb errors o podríeu perdre les dades del sistema de fitxers:

$ sudo e2fsck -f /dev/mapper/xen_vm-TortosaINSEbreSrvr1

Ara cal augmentar la mida del sistema de fitxers:

$ sudo resize2fs /dev/mapper/xen_vm-TortosaINSEbreSrvr1

NOTA: Si no poseu cap mida el sistema de fitxers s'ajusta per agafar la mida de tot el dispositiu.

Comproveu el canvi:

$ sudo lvdisplay /dev/mapper/xen_vm-TortosaINSEbreSrvr1
 --- Logical volume ---
 LV Name                /dev/xen_vm/TortosaINSEbreSrvr1
 VG Name                xen_vm
 LV UUID                eT1vml-8kAp-JjgU-D6J2-9S6T-ADTI-5owlnF
 LV Write Access        read/write
 LV Status              available
 # open                 0
 LV Size                6,00 GB
 Current LE             1536
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           254:1


Ara torneu a muntar el volum:

$ sudo mount /dev/mapper/xen_vm-TortosaINSEbreSrvr1 /mnt/TortosaINSEbreSrvr1

I comproveu el canvi:

$ df -h
S. fitxers            Mida En ús Lliure %Ús Muntat a
...
/dev/mapper/xen_vm-TortosaINSEbreSrvr1 6,0G  137M  5,5G   3% /mnt/TortosaINSEbreSrvr1

Recursos:

Exemple. Augmentar l'espai de la home

Primer cal consultar quan d'espai hi ha lliure en el grup de volums al qual pertany el volum lògic home. Consulteu primer a quin volum grup pertany:

$ sudo lvdisplay
 --- Logical volume ---
 LV Name                /dev/vg_ubuntu_sala/lv_home
 VG Name                vg_ubuntu_sala
 LV UUID                1yRzDv-epQx-3lPj-c9wG-AoRj-zKOg-c0Z0JA
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                39,06 GB
 Current LE             10000
 Segments               1
 Allocation             inherit
 Read ahead sectors     0
 Block device           254:2

I ara consulteu l'espai lliure del grup de volum (en l'exemple vg-ubuntu-sala):

$ sudo vgdisplay
 --- Volume group ---
 VG Name               vg_ubuntu_sala
 System ID             
 Format                lvm2
 Metadata Areas        3
 Metadata Sequence No  6
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                4
 Open LV               4
 Max PV                0
 Cur PV                3
 Act PV                3
 VG Size               652,42 GB
 PE Size               4,00 MB
 Total PE              167019
 Alloc PE / Size       20250 / 79,10 GB
 Free  PE / Size       146769 / 573,32 GB
 VG UUID               PHPpVz-tohT-c3pt-Ldbm-AyCx-iBy2-Aovp16

En aquest cas tenim 573 G lliures...

El podem augmentar a una mida fixa:

# lvextend --size  250G /dev/vg_ubuntu_sala/lv_home

O especificar en quina quantitat volem augmentar:

# lvextend --size  +50G /dev/vg_ubuntu_sala/lv_home

Ara hem augmentat la mida de la "partició" (recordeu que no són particions reals sinó volums lògics). Ara cal augmentar la mida del sistema de fitxers que hi ha dins del volum lògic.

Primer es recomanable comprovar que no hi hagi errors:

# e2fsck -f /dev/xen_vm/tallafocsASI

I ara ja podem augmentar la mida:

# resize2fs /dev/vg_ubuntu_sala/lv_home

Desfer el pas anterior

$ lvreduce --size 250G /dev/vg_ubuntu_sala/lv_home

Eliminacions

Eliminar un volum lògic

Exemple per eliminar un volum lògic anomenat lv_xarxantoni que esta als grup de volums data (vg_data).

Primer desmuntem el volum lògic.

$ umount /xarxantoni/backup

Comprovem que s'ha desmuntat amb:

$ df -h

o

$ mount

Consultem el nom dels volumns lògics per saber quin volem esborrar:

$ sudo lvdisplay

Executem lvremove

$ lvremove /dev/vg_data/lv_xarxantoni
File descriptor 3 left open
File descriptor 4 left open
Do you really want to remove active logical volume "lv_xarxantoni"? [y/n]: y
Logical volume "lv_xarxantoni" successfully removed

Ara cal que el treim del fitxer /etc/fstab si el teniem aquí posar per muntar-se al iniciar l'ordinador.

Moure un VG d'una màquina a un altre

NOTA: El procediment compte amb que es treu el disc físic de la màquina origen i es posa a la destinació

Moure tots els LV d'un VG a un altre VG

Es pot utilitzar l'ordre pvmove per abans cal utilitzar vgmerge (pvmove només permet moure entre disc físics que pertanyen al mateix VG). Les ordres:

Primer cal fer el merge

$ sudo vgmerge -v vg_vms vg_vms1
    Checking for volume group "vg_vms"
   Checking for volume group "vg_vms1"
   Archiving volume group "vg_vms1" metadata (seqno 74).
   Archiving volume group "vg_vms" metadata (seqno 1).
   Writing out updated volume group
   Creating volume group backup "/etc/lvm/backup/vg_vms" (seqno 2).
 Volume group "vg_vms1" successfully merged into "vg_vms"

IMPORTANT: On el segon vg és l'origen de les dades i el primer és la destinació!

$ sudo pvmove - /dev/sdz42; pvmove /dev/sdz43; …
$ sudo vgreduce xen1_images /dev/sdz42 /dev/sdz43 …

Opcionalment potser voleu eliminar els antics PVs:

$ sudo pvremove /dev/sdz42 /dev/sdz43 …

Recursos:

Snapshot

Els volums lògics snapshot són especials, ja que serveixen per contenir els canvis que hi ha a un volum lògic LVM mentrestant es fa una còpia del volum lògic. Permeten fer còpies consistents d'un volum lògic.

$ sudo lvcreate -L 1G -s -n lv_snapshot /dev/vg_xen/lv_xen_snaptest

La comanda anterior crear un nou volum lògic de tipus snapshot (-s) a partir del volum lògic lv_xen_snaptest (ja existent prèviament). El nou del nou volum lògic és lv_snapshot i ocupa 1G.

NOTA: Cal tenir en compte que la mida del volum lògic snapshot no ha de ser la mida del volum lògic original. Simplement ha de ser prou gran per contenir els canvis que poden haver-hi al volum lògic original mentrestant fem la còpia. Depén de cada sistema però si no tardem gaire en fer la copia, no cal gaire espai.

Ara es pot fer una còpia de seguretat amb:

$ sudo dd if=/dev/vg_xen/lv_snapshot | bzip2 | dd of=/path/to/dr_image.bz2

Un cop s'ha fet la còpia s'ha d'alliberar (release) el volum lògic creat:

$ sudo lvremove lv_snapshot 

NOTA: Si un volum snapshot arriba a omplir-se, el volum s'allibera automàticament

.

Un exemple complet pas a pas:

# lvcreate -L592M -s -n dbbackup /dev/ops/databases 
lvcreate -- WARNING: the snapshot must be disabled if it gets full
lvcreate -- INFO: using default snapshot chunk size of 64 KB for "/dev/ops/dbbackup"
lvcreate -- doing automatic backup of "ops"
lvcreate -- logical volume "/dev/ops/dbbackup" successfully created     
# mkdir /mnt/ops/dbbackup
# mount /dev/ops/dbbackup /mnt/ops/dbbackup
mount: block device /dev/ops/dbbackup is write-protected, mounting read-only
# tar -cf /dev/rmt0 /mnt/ops/dbbackup
tar: Removing leading `/' from member names
# umount /mnt/ops/dbbackup
# lvremove /dev/ops/dbbackup 
lvremove -- do you really want to remove "/dev/ops/dbbackup"? [y/n]: y
lvremove -- doing automatic backup of volume group "ops"
lvremove -- logical volume "/dev/ops/dbbackup" successfully removed
         

Inseriu ací text sense format

Disc dur Adicional

Si tenim dos discs durs al servidor:

/dev/sda
/dev/sdb

SkoleLinux només particiona el primer disc de la següent manera:

/dev/sda1:     Esta montat el root (/)
/dev/sda2:     Swap?
/dev/sda5:     VG vg_system   lvm2 [10,59 GB / 2,31 GB free]
/dev/sda6:     VG vg_data     lvm2 [63,43 GB / 30,86 GB free]

Tal com ens mostra la comanda /sbin/pvscan:

@tjener:~$ sudo /sbin/pvscan
PV /dev/sda6   VG vg_data     lvm2 [63,43 GB / 30,86 GB free]
PV /dev/sda5   VG vg_system   lvm2 [10,59 GB / 2,31 GB free]
Total: 2 [74,02 GB] / in use: 2 [74,02 GB] / in no VG: 0 [0   ]

LVM no es pot utilitzar encara amb / perque eines com el grub o lilo que carreguen el sistema no son capaçes d'utilitzar LVM.

Per afegir el segon disc a LVM cal seguir les passes del següent link (http://www.skolelinux.no/~klaus/newnotater_Sarge/x2007.html#newdisk).

Un cop afegit podem seguir les pases de http://www.skolelinux.no/~klaus/newnotater_Sarge/x2007.html#newlv per tal de crear un nou LV que aprofiti aquest nou espai.

--acacha 06:51, 20 març 2010 (UTC)

Eliminar un volume group

Consulteu quins volums teniu disponibles:

$ sudo vgdisplay

I l'elimineu amb vgremove:

$ sudo vgremove nom_volumgroup

NOTA: Abans d'esborrar el volum group, heu de tenir en compte que no hi hagin volums lògics que n'estiguin fent ús.

Exemples

Crear un sistema LVM en un disc dur addicional acabat d'afegir (i sense particionar)

En un sistema sense LVM s'afegeix un segon disc dur nou que ni tant sols està particionat.

Podeu consultar els discs amb:

$ sudo fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00099623

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         993     7976241   83  Linux
/dev/sda2             994        1044      409657+   5  Extended
/dev/sda5             994        1044      409626   82  Linux swap / Solaris

Disk /dev/sdb: 110.6 GB, 110627913728 bytes
255 heads, 63 sectors/track, 13449 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Podeu comprovar si esta o no muntat amb:

$ mount 
$ mount
/dev/sda1 on / type ext3 (rw,relatime,errors=remount-ro)
...

Seguint l'article:

Com_crear/gestionar_particions_en_Linux

Creem una partició de tipus ext3.

$ sudo fdisk /dev/sdb

Si encara no teniu LVM, instal·leu-lo amb:

$ sudo apt-get install lvm2

Segurament haureu de carregar el mòdul del kernel:

$ sudo modprobe dm-mod

Ara creem el volum físic (pv --> Phisycal Volume ) de LVM:

$ sudo pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

El podeu consultar amb

$ sudo pvscan 
 PV /dev/sdb1                      lvm2 [103,02 GB]
 Total: 1 [103,02 GB] / in use: 0 [0   ] / in no VG: 1 [103,02 GB]

Ara cal crear el volum group (vg) amb:

$ sudo vgcreate xen_vm /dev/sdb1
  Volume group "xen_vm" successfully created

En aquest cas el vg és per emmagatzemar màquines virtuals de Xen. Un altre cop el podeu consultar amb:

$ sudo vgscan 
 Reading all physical volumes.  This may take a while...
 Found volume group "xen_vm" using metadata type lvm2

Per a Xen no cal fer res més ja que les xen-tools, creen el volums lògics (lv) de LVM automaticament al crear les màquines virtuals. En tot cas per crear un volum lògic es faria amb la comanda:

$ sudo lvcreate --name NOM_DEL_LV --size MIDA_DEL_VOLUM (p.ex: 465,63G) xen_vm

Un exemple podria ser:

$ sudo lvcreate --name lv_drbl --size 30G vg_ubuntu_sala

Cal tenir en compte que la mida s'ha d'expressar en GiB i no pas GB. Per exemple un disc de 500G és un disc de 465,63. El factor de conversió és 0.93125.

Ara podem consultar el volum amb:

$ sudo lvdisplay

Afegir un LV ext3 a un VG existent

Podeu consultar el CG amb:

$ sudo vgdisplay

En el nostre cas volem afegir un LV al VG vg_ubuntu_sala. El crearem de 30G:

$ sudo lvcreate --name lv_drbl --size 30G vg_ubuntu_sala

El podeu consultar amb:

$ sudo lvdisplay

Ara cal fer-lo ext3:

$ sudo mkfs.ext3 -m 0 /dev/vg_ubuntu_sala/lv_drbl

El volem muntar a la carpeta /tftpboot:

$ sudo mkdir /tftpboot

Editem el fitxer fstab

$ sudo joe /etc/fstab

I afegim la línia:

/dev/mapper/vg_ubuntu_sala-lv_drbl /tftpboot      ext3    defaults        0       2

Ara ja el podem muntar amb:

$  sudo mount -a

TroubleShooting

Reaprofitar discos amb LVM

El problema és que els particions lògiques LVM continuen apareixent... Fins i tot si es fa una taula de particions nova amb fdisk. La informació de LVM es troba al disc, als primers sectors però no pas la taula de particions física.

Pel procediment ordenat es poden eliminar les particions LVM (lvremove, vgremove,pvremove, etc) o es pot tirar pel dret amb:

# dd if=/dev/zero of=/dev/sdb bs=1k count=3
# blockdev --rereadpt /dev/sdb

Així es carregarem també la taula de particions físiques, creeu-lo :

# fdisk /dev/sdb

I ha calgut reiniciar.

vgcreate Volume group already exists in filesystem

Al eliminar un grup de volum amb vgremove la carpeta corresponent a /dev no s'esborra?

NOTA: En el meu m'ha passat al canviar de nom un antic VG: sudo vgimportclone -n vg_vms1 /dev/sdd

$ sudo vgcreate vg_vms /dev/sdb
 /dev/vg_vms: already exists in filesystem
 New volume group name "vg_vms" is invalid
 Run `vgcreate --help' for more information.

Simplement cal fer:

$ sudo rm -rf /dev/vg_vms

Device /usr is busy

Tot i estar a nivell d'execució 1 ens podem trobar que ens diqui que la unitat esta "busy" quan intentem desmuntarla. Es pot utilitzar la comanda fuser per veure quin processos utilitzen certs fitxers:

$ fuser -avm /usr

Dos discos clonats (dd) problemes LVM (duplicate UUID)

$ sudo pvscan
 PV /dev/sda5   VG sol   lvm2 [931,27 GiB / 44,00 MiB free]
 Total: 1 [931,27 GiB] / in use: 1 [931,27 GiB] / in no VG: 0 [0   ]

Canviar el UUID:

$ sudo pvdisplay 
 --- Physical volume ---
 PV Name               /dev/sda5
 VG Name               sol
 PV Size               931,27 GiB / not usable 4,00 MiB
 Allocatable           yes 
 PE Size               4,00 MiB
 Total PE              238405
 Free PE               11
 Allocated PE          238394
 PV UUID               SNiN0S-oRSF-CxI8-xf0s-vIMg-o9Dj-zPvXvI
  
$ sudo pvchange -u /dev/sda5
 Physical volume "/dev/sda5" changed
 1 physical volume changed / 0 physical volumes not changed
$ sudo pvdisplay 
 --- Physical volume ---
 PV Name               /dev/sda5
 VG Name               sol
 PV Size               931,27 GiB / not usable 4,00 MiB
 Allocatable           yes 
 PE Size               4,00 MiB
 Total PE              238405
 Free PE               11
 Allocated PE          238394
 PV UUID               Y5dSu2-q32P-JIzU-30Xl-SqGn-SNmx-hFdmw8
  
$ sudo vgscan
 Reading all physical volumes.  This may take a while...
 Found volume group "sol" using metadata type lvm2
$ sudo vgdisplay 
 --- Volume group ---
 VG Name               sol
 System ID             
 Format                lvm2
 Metadata Areas        1
 Metadata Sequence No  4
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                2
 Open LV               0
 Max PV                0
 Cur PV                1
 Act PV                1
 VG Size               931,27 GiB
 PE Size               4,00 MiB
 Total PE              238405
 Alloc PE / Size       238394 / 931,23 GiB
 Free  PE / Size       11 / 44,00 MiB
 VG UUID               y3JYYt-ryXM-l9q5-HBVG-3SIP-Ih5L-iXXcxv
  
$ sudo vgchange -u sol
 Volume group has active logical volumes

Desactivar:

$ sudo vgchange -a n
 0 logical volume(s) in volume group "sol" now active
$ sudo lvscan
 inactive          '/dev/sol/root' [920,26 GiB] inherit
 inactive          '/dev/sol/swap_1' [10,97 GiB] inherit

Ara si:

$ sudo vgchange -u sol
 Volume group "sol" successfully changed
$ sudo vgdisplay 
 --- Volume group ---
 VG Name               sol
 System ID             
 Format                lvm2
 Metadata Areas        1
 Metadata Sequence No  5
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                2
 Open LV               0
 Max PV                0
 Cur PV                1
 Act PV                1
 VG Size               931,27 GiB
 PE Size               4,00 MiB
 Total PE              238405
 Alloc PE / Size       238394 / 931,23 GiB
 Free  PE / Size       11 / 44,00 MiB
 VG UUID               DW7vzQ-RJDF-Alvo-EkYt-XcmG-2vBJ-Qixrf1

Obtenir una copia de la configuració LVM:

$ sudo vgcfgbackup -f sol.cfg sol
 Volume group "sol" successfully backed up.
$ sudo cat sol.cfg 
# Generated by LVM2 version 2.02.66(2) (2010-05-20): Sun Oct 23 15:36:55 2011

contents = "Text Format Volume Group"
version = 1

description = "vgcfgbackup -f sol.cfg sol" 

creation_host = "ubuntu"	# Linux ubuntu 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64
creation_time = 1319384215	# Sun Oct 23 15:36:55 2011

sol {
	id = "DW7vzQ-RJDF-Alvo-EkYt-XcmG-2vBJ-Qixrf1"
	seqno = 5
	status = ["RESIZEABLE", "READ", "WRITE"]
	flags = []
	extent_size = 8192		# 4 Megabytes
	max_lv = 0
	max_pv = 0

	physical_volumes {

		pv0 {
			id = "Y5dSu2-q32P-JIzU-30Xl-SqGn-SNmx-hFdmw8"
			device = "/dev/sda5"	# Hint only

			status = ["ALLOCATABLE"]
			flags = []
			dev_size = 1953021952	# 931,273 Gigabytes
			pe_start = 384
			pe_count = 238405	# 931,27 Gigabytes
		}
	}

	logical_volumes {

		root {
			id = "5hY6mc-6HkI-gOTT-d6Fi-QR4k-GYHM-pbdkrx"
			status = ["READ", "WRITE", "VISIBLE"]
			flags = []
			segment_count = 1

			segment1 {
				start_extent = 0
				extent_count = 235586	# 920,258 Gigabytes

				type = "striped"
				stripe_count = 1	# linear

				stripes = [
					"pv0", 0
				]
			}
		}

		swap_1 {
			id = "41wEbP-De05-MCrM-TIzD-nmlf-DAo7-iR0hn1"
			status = ["READ", "WRITE", "VISIBLE"]
			flags = []
			segment_count = 1

			segment1 {
				start_extent = 0
				extent_count = 2808	# 10,9688 Gigabytes

				type = "striped"
				stripe_count = 1	# linear

				stripes = [
					"pv0", 235586
				]
			}
		}
	}
} 

Augmentem els UUID en un

$ sudo nano sol.cfg 

Apliquem els canvis:

$ sudo pvcreate -ff --uuid DW7vzQ-RJDF-Alvo-EkYt-XcmG-2vBJ-Qixrf1 --restorefile sol.cfg /dev/sda5
 Can't find uuid DW7vzQ-RJDF-Alvo-EkYt-XcmG-2vBJ-Qixrf1 in backup file sol.cfg
 Run `pvcreate --help' for more information.
 You have a memory leak (not released memory pool):
  [0xd78140]
 You have a memory leak (not released memory pool):
  [0xd78140]
$ sudo vgcfgrestore -f sol.cfg sol
 Restored volume group sol

Ara podeu canviar el nom:

$ sudo vgrename sol sol-back
Volume group "sol" successfully renamed to "sol-back"

Ja es poden muntar els dos dics alhora. Ara al reiniciar es pot fer:

$ sudo pvscan
 PV /dev/sdb5   VG sol        lvm2 [931.27 GiB / 44.00 MiB free]
 PV /dev/sda5   VG sol-back   lvm2 [931.27 GiB / 44.00 MiB free]
 Total: 2 [1.82 TiB] / in use: 2 [1.82 TiB] / in no VG: 0 [0   ]
$ sudo vgscan
 Reading all physical volumes.  This may take a while...
 Found volume group "sol" using metadata type lvm2
 Found volume group "sol-back" using metadata type lvm2
$ sudo lvscan
 inactive          '/dev/sol/root' [920.26 GiB] inherit
 inactive          '/dev/sol/swap_1' [10.97 GiB] inherit
 inactive          '/dev/sol-back/root' [920.26 GiB] inherit
 inactive          '/dev/sol-back/swap_1' [10.97 GiB] inherit
$ sudo vgchange -a y
 2 logical volume(s) in volume group "sol" now active
 2 logical volume(s) in volume group "sol-back" now active
$ sudo lvscan
 ACTIVE            '/dev/sol/root' [920.26 GiB] inherit
 ACTIVE            '/dev/sol/swap_1' [10.97 GiB] inherit
 ACTIVE            '/dev/sol-back/root' [920.26 GiB] inherit
 ACTIVE            '/dev/sol-back/swap_1' [10.97 GiB] inherit

Vegeu també

Enllaços externs