LVM

De Wikillano

LVM

Instalación:

root@svn:~# apt-get install lvm2

Estado de los discos:

root@svn:~# fdisk -l

Disk /dev/sda: 2684 MB, 2684354560 bytes
255 heads, 63 sectors/track, 326 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1           7       56196   83  Linux
/dev/sda2               8         262     2048287+  83  Linux
/dev/sda3             263         326      514080    5  Extended
/dev/sda5             263         326      514048+  82  Linux swap / Solaris

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+  83  Linux
root@svn:~#

Tengo un disco /dev/sdb1 ya particionado y listo para usarse.

damos formato LVM al disco anterior:

root@svn:/lib# pvcreate  /dev/sdb1
	Physical volume "/dev/sdb1" successfully created
root@svn:/lib#

Ahora definiremos un grupo VG : volume group (VG) que englobará nuestros discos, en nuestro caso por ahora 1"/dev/sdb1"

root@svn:/lib# vgcreate vol1 /dev/sdb1
 Volume group "vol1" successfully created
root@svn:/lib#

con vgdisplay podemos ver los volúmenes creados VG y si le pasamos la opción -v (verbose) podremos ver los VLogicos. y discos físicos implicados.


root@svn:/lib# vgdisplay 
 --- Volume group ---
 VG Name               vol1
 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               4,99 GB
 PE Size               4,00 MB
 Total PE              1278
 Alloc PE / Size       0 / 0   
 Free  PE / Size       1278 / 4,99 GB
 VG UUID               Rk8nPx-jcFd-L0CH-b7I1-2vTX-CM1P-ai7W2v

Ahora toca crear la partición lógica (filesystem), en este caso creo una que se llama data y ocupará toda la capacidad 4,99G del vol1

El comando para realizar esta tarea es lvcreate

root@svn:~# lvcreate -L4,99G -n data vol1
 Rounding up size to full physical extent 4,99 GB
 Logical volume "data" created
root@svn:~#


Con el parámetro -L definimos el tamaño que tendrá el volumen mientras que con -n fijamos el nombre. Una vez hecho esto dispondremos de un nuevo punto de montaje en /dev/grupo_volumen/volumen_logico

También tenemos el comnado lvdisplay para ver los volúmenes lógico creados, en este caso vemos el que acabamos de crear.

root@svn:~# lvdisplay 
 --- Logical volume ---
 LV Name                /dev/vol1/data
 VG Name                vol1
 LV UUID                qsh6Qw-jFy8-QkhR-ZLWB-P5KJ-3qXS-oUMzPZ
 LV Write Access        read/write
 LV Status              available
 # open                 0
 LV Size                4,99 GB
 Current LE             1278
 Segments               1
 Allocation             inherit
 Read ahead sectors     0
 Block device           253:0


Despues de crear el volumenLógico tenemos que darle el formato que deseamos ext3 en mi caso.

root@svn:~# mkfs.ext3 /dev/vol1/data 
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
655360 inodes, 1308672 blocks
65433 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks: 
       32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: 
done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
root@svn:~#


ahora ya tenemos este volumen listo para montarlo y utilizarlo.

root@svn:~# mkdir /data
root@svn:~# mount -t ext3 /dev/vol1/data /data
root@svn:~#

comprobación:

root@svn:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             1,9G  390M  1,4G  22% /
varrun                 62M   48K   62M   1% /var/run
varlock                62M     0   62M   0% /var/lock
udev                   10M   68K   10M   1% /dev
devshm                 62M     0   62M   0% /dev/shm
/dev/sda1              52M   13M   37M  26% /boot
/dev/mapper/vol1-data
                     5,0G  139M  4,6G   3% /data


Estaría bien añadir la linea de montaje en el fstab para automatizar este proceso.

/dev/vol1/data  /data   ext3   rw,suid,exec    0       0


EJ: imaginar que ahora necesitamos más espacio en /data, en nuestro VG "vol1" ya no tiene más espacio para agrandar el VL "/data" pero podriamos comprar un HD nuevo y incluirlo en nuestro VG vol1, de esta manera obtendriamos espacio libre con el cual podríamos ampliar el filesystem /data.

estado actual de nuestra VG vol1:

root@svn:~# vgdisplay 
 --- Volume group ---
 VG Name               vol1
 System ID             
 Format                lvm2
 Metadata Areas        1
 Metadata Sequence No  2
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                1
 Open LV               1
 Max PV                0
 Cur PV                1
 Act PV                1
 VG Size               4,99 GB
 PE Size               4,00 MB
 Total PE              1278
 Alloc PE / Size       1278 / 4,99 GB
 Free  PE / Size       0 / 0   -------------------------------> no hay más espacio para asignar!
 VG UUID               Rk8nPx-jcFd-L0CH-b7I1-2vTX-CM1P-ai7W2v

Añadimos un disco nuevo de 500MB a nuestro sistema le damos formato etc...

aquí lo tenemos:

Disk /dev/sdc: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
  Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         512      524272   83  Linux
Le damos formato lvm
root@svn:~# pvcreate /dev/sdc1
 Physical volume "/dev/sdc1" successfully created
root@svn:~#

Agregamos el disco nuevo al VG Vol1 mediante vgextend:

root@svn:~# vgextend vol1 /dev/sdc1 
 Volume group "vol1" successfully extended

como se puede observar ahora disponemos de 500MB más.

root@svn:~# vgdisplay
 --- Volume group ---
 VG Name               vol1
 System ID             
 Format                lvm2
 Metadata Areas        2
 Metadata Sequence No  3
 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               5,49 GB
 PE Size               4,00 MB
 Total PE              1405
 Alloc PE / Size       1278 / 4,99 GB
 Free  PE / Size       127 / 508,00 MB
 VG UUID               Rk8nPx-jcFd-L0CH-b7I1-2vTX-CM1P-ai7W2v

ahora vamos a agrandar nuestro VL /data co nel comando lvextend Para redimensionar la partición siempre tenemos que poner el tamaño que ya tiene más el que queremos añadir. en este caso yo añadire los 500MB a /data que tiene 4,99.

tenemos dos datos el PE / tamaño

Alloc PE / Size       1278 / 4,99 GB
Free  PE / Size       127 / 508,00 MB

para simplificar podemos sumar los datos PE y ejecutar lo siguiente


root@svn:~# lvextend -l 1405 /dev/vol1/data 
 Extending logical volume data to 5,49 GB
 Logical volume data successfully resized
root@svn:~#

como podemos comprobar el VL ya tiene el nuevo tamaño,

root@svn:~# lvdisplay 
 --- Logical volume ---
 LV Name                /dev/vol1/data
 VG Name                vol1
 LV UUID                qsh6Qw-jFy8-QkhR-ZLWB-P5KJ-3qXS-oUMzPZ
 LV Write Access        read/write
 LV Status              available
 # open                 1
 LV Size                5,49 GB
 Current LE             1405
 Segments               2
 Allocation             inherit
 Read ahead sectors     0
 Block device           253:0

pero si miramos el estado de las particiones vemos que no es así realmente:

/dev/mapper/vol1-data
                     5,0G  139M  4,6G   3% /data


ahora debemos darle formato a la parte que hemos añadido con el comando resize2fs

root@svn:~# resize2fs /dev/vol1/data 
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vol1/data is mounted on /data; on-line resizing required
Performing an on-line resize of /dev/vol1/data to 1438720 (4k) blocks.
The filesystem on /dev/vol1/data is now 1438720 blocks long.

Listo!

/dev/mapper/vol1-data
                     5,5G  139M  5,0G   3% /data

También existe la manera de reducir nuestros volumenes lógicos, en el caso de que no se esten utilizando ya que podemos perder información:

root@svn:~# lvreduce -L3G /dev/vol1/data
 WARNING: Reducing active and open logical volume to 3,00 GB
 THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce data? [y/n]: n
 Logical volume data NOT reduced

NOTA FINAL:

También podemos crear otra VG, y en ella añadir discos y crear mas VL.

Herramientas personales