Sie sind auf Seite 1von 14

Ampliacin y reduccin de volmenes LVM (Red Hat 6 y CentOS 6)

Voy a mostrar cmo crear, ampliar y reducir volmenes LVM, todas estas acciones se han
realizado con RedHat 6 directamente desde la consola LVM. Creo que no es necesario decirlo, pero
es muy recomendable hacer una copia de seguridad de los discos originales por si acaso.
Lo primero que se ha de tener claro es la estructura que sigue LVM, trabaja con 3 tipos de
elementos:

Grupos de volmenes, todos los comandos relacionados con esto comienzan por vg*, un
grupo de volmenes puede contener 1 o ms volmenes lgicos. Y est compuesto por
volmenes fsicos.
Volmenes lgicos, todos los comandos relacionados comienzan por lv*, un volumen lgico
reside dentro de un grupo de volmenes
Volmenes fsicos, en este caso todos los comandos comienzan por pv*, un grupo de
volmenes se componen de 1 o ms volmenes fsicos.
Existen una gran cantidad de comandos para administrar los volmenes LVM:

[root@tester1 ~]# lvm


lvm> help
Available lvm commands:
Use 'lvm help <command></command>' for more information
dumpconfig Dump active configuration
formats List available metadata formats
help Display help for commands
lvchange Change the attributes of logical volume(s)
lvconvert Change logical volume layout
lvcreate Create a logical volume
lvdisplay Display information about a logical volume
lvextend Add space to a logical volume
lvmchange With the device mapper, this is obsolete and does nothing.
lvmdiskscan List devices that may be used as physical volumes
lvmsadc Collect activity data

lvmsar Create activity report


lvreduce Reduce the size of a logical volume
lvremove Remove logical volume(s) from the system
lvrename Rename a logical volume
lvresize Resize a logical volume
lvs Display information about logical volumes
lvscan List all logical volumes in all volume groups
pvchange Change attributes of physical volume(s)
pvresize Resize physical volume(s)
pvck Check the consistency of physical volume(s)
pvcreate Initialize physical volume(s) for use by LVM
pvdata Display the on-disk metadata for physical volume(s)
pvdisplay Display various attributes of physical volume(s)
pvmove Move extents from one physical volume to another
pvremove Remove LVM label(s) from physical volume(s)
pvs Display information about physical volumes
pvscan List all physical volumes
segtypes List available segment types
vgcfgbackup Backup volume group configuration(s)
vgcfgrestore Restore volume group configuration
vgchange Change volume group attributes
vgck Check the consistency of volume group(s)
vgconvert Change volume group metadata format
vgcreate Create a volume group
vgdisplay Display volume group information
vgexport Unregister volume group(s) from the system
vgextend Add physical volumes to a volume group
vgimport Register exported volume group with system
vgmerge Merge volume groups
vgmknodes Create the special files for volume group devices in /dev
vgreduce Remove physical volume(s) from a volume group

vgremove Remove volume group(s)


vgrename Rename a volume group
vgs Display information about volume groups
vgscan Search for all volume groups
vgsplit Move physical volumes into a new or existing volume group
version Display software and driver version information

Para trabajar con los ejemplos, se han conectado a la mquina 2 HD de 100Mb cada uno.
Creacin grupo de volmenes y volumen lgico con 1 disco fsico
Inicialmente tenemos un solo grupo de volmenes con 2 volmenes:

lvm> vgs
VG #PV #LV #SN Attr VSize VFree
vg_tester1 1 2 0 wz--n- 7,51g 0
lvm> lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv_root vg_tester1 -wi-ao 6,51g
lv_swap vg_tester1 -wi-ao 1,00g
lvm> lvscan
ACTIVE '/dev/vg_tester1/lv_root' [6,51 GiB] inherit
ACTIVE '/dev/vg_tester1/lv_swap' [1,00 GiB] inherit

Podemos ver los discos que hay disponibles con:

lvm> lvmdiskscan
/dev/ram0 [ 16,00 MiB]
/dev/root [ 6,51 GiB]

/dev/ram1 [ 16,00 MiB]


/dev/sda1 [ 500,00 MiB]
/dev/vg_tester1/lv_swap [ 1,00 GiB]
/dev/ram2 [ 16,00 MiB]
/dev/sda2 [ 7,51 GiB] LVM physical volume
/dev/ram3 [ 16,00 MiB]
/dev/ram4 [ 16,00 MiB]
/dev/ram5 [ 16,00 MiB]
/dev/ram6 [ 16,00 MiB]
/dev/ram7 [ 16,00 MiB]
/dev/ram8 [ 16,00 MiB]
/dev/ram9 [ 16,00 MiB]
/dev/ram10 [ 16,00 MiB]
/dev/ram11 [ 16,00 MiB]
/dev/ram12 [ 16,00 MiB]
/dev/ram13 [ 16,00 MiB]
/dev/ram14 [ 16,00 MiB]
/dev/ram15 [ 16,00 MiB]
/dev/sdb [ 102,40 MiB]
/dev/sdc [ 102,40 MiB]
4 disks
17 partitions
0 LVM physical volume whole disks
1 LVM physical volume

Se puede ver qu /dev/sdb y /dev/sdc se encuentran disponible para ser utilizados por lvm,
creamos un volumen fsico para ser usado por LVM:

lvm> pvcreate /dev/sdb

Physical volume "/dev/sdb" successfully created

Y luego un grupo de volmenes vgtest con el volumen fsico.

lvm> vgcreate vgtest /dev/sdb


Volume group "vgtest" successfully created

Ahora creamos un volumen lgico lv_1_vgtest dentro del grupo de volmenes vgtest:

lvm> lvcreate -L 100M -n lv_1_vgtest vgtest


Logical volume "lv_1_vgtest" created

Listamos los grupos de volmenes:

lvm> vgs
VG #PV #LV #SN Attr VSize VFree
vg_tester1 1 2 0 wz--n- 7,51g 0
vgtest 1 1 0 wz--n- 100,00m 0

Y los volmenes lgicos (el segundo comando muestra la ruta completa del dispositivo creado
/dev/*) con la asociacin al grupo de volmenes:

lvm> lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv_root vg_tester1 -wi-ao 6,51g
lv_swap vg_tester1 -wi-ao 1,00g

lv_1_vgtest vgtest -wi-a- 100,00m


lvm> lvscan
ACTIVE '/dev/vg_tester1/lv_root' [6,51 GiB] inherit
ACTIVE '/dev/vg_tester1/lv_swap' [1,00 GiB] inherit
ACTIVE '/dev/vgtest/lv_1_vgtest' [100,00 MiB] inherit

Podemos ver los volmenes fsicos y su asociacin con los grupos de volmenes:

lvm> pvscan
PV /dev/sdb VG vgtest lvm2 [100,00 MiB / 0 free]
PV /dev/sda2 VG vg_tester1 lvm2 [7,51 GiB / 0 free]
Total: 2 [7,61 GiB] / in use: 2 [7,61 GiB] / in no VG: 0 [0 ]

Ok ahora tenemos un volumen lgico en /dev/vgtest/lv_1_vgtest. Con 100Mb de espacio sin


formatear.
Lo formateamos y lo montamos:

[root@tester1 ~]# mkfs.ext4 /dev/vgtest/lv_1_vgtest


mke2fs 1.41.12 (17-May-2010)
Etiqueta del sistema de ficheros=
Tipo de SO: Linux
Tamao del bloque=1024 (bitcora=0)
Tamao del fragmento=1024 (bitcora=0)
Stride=0 blocks, Stripe width=0 blocks
25688 nodos-i, 102400 bloques
5120 bloques (5.00%) reservados para el superusuario
Primer bloque de datos=1
Nmero mximo de bloques del sistema de ficheros=67371008

13 bloque de grupos
8192 bloques por grupo, 8192 fragmentos por grupo
1976 nodos-i por grupo
Respaldo del superbloque guardado en los bloques:
8193, 24577, 40961, 57345, 73729
Escribiendo las tablas de nodos-i: hecho
Creating journal (4096 blocks): hecho
Escribiendo superbloques y la informacin contable del sistema de ficheros: hecho
Este sistema de ficheros se revisar automticamente cada 29 montajes o
180 das, lo que suceda primero. Utilice tune2fs -c o -i para cambiarlo.
[root@tester1 ~]# mount /dev/vgtest/lv_1_vgtest /mnt
[root@tester1 ~]# df -h
S.ficheros Size Used Avail Use% Montado en
/dev/mapper/vg_tester1-lv_root
6,5G 679M 5,5G 11% /
tmpfs 250M 0 250M 0% /dev/shm
/dev/sda1 485M 27M 433M 6% /boot
/dev/mapper/vgtest-lv_1_vgtest
97M 5,6M 87M 7% /mnt

Ampliacin del grupo de volmenes y volumen lgico con 1 disco fsico ms.
Supongamos que nos hemos quedado cortos de espacio y nos dan otro disco de 100Mb, queremos
que /dev/mapper/vgtest-lv_1_vgtest tengo finalmente 200Mb de espacio.
Para esto tenemos que hacer 4 cosas:

Crear un nuevo volumen fsico con /dev/sdc que ya lo tenemos pinchado


Ampliar el grupo de volmenes vgtest aadiendo un volumen fsico de 100Mb /dev/sdc
Ampliar el volumen lgico /dev/mapper/vgtest-lv_1_vgtest de 100Mb a 200Mb
Redimensionar el sistema de ficheros que se cre en /dev/mapper/vgtest-lv_1_vgtest para
que aproveche los 200Mb.

Vamos al asunto, creamos el nuevo volumen fsico (usamos /dev/sdc):

lvm> lvmdiskscan
/dev/ram0 [ 16,00 MiB]
/dev/root [ 6,51 GiB]
/dev/ram1 [ 16,00 MiB]
/dev/sda1 [ 500,00 MiB]
/dev/vg_tester1/lv_swap [ 1,00 GiB]
/dev/ram2 [ 16,00 MiB]
/dev/sda2 [ 7,51 GiB] LVM physical volume
/dev/vgtest/lv_1_vgtest [ 100,00 MiB]
/dev/ram3 [ 16,00 MiB]
/dev/ram4 [ 16,00 MiB]
/dev/ram5 [ 16,00 MiB]
/dev/ram6 [ 16,00 MiB]
/dev/ram7 [ 16,00 MiB]
/dev/ram8 [ 16,00 MiB]
/dev/ram9 [ 16,00 MiB]
/dev/ram10 [ 16,00 MiB]
/dev/ram11 [ 16,00 MiB]
/dev/ram12 [ 16,00 MiB]
/dev/ram13 [ 16,00 MiB]
/dev/ram14 [ 16,00 MiB]
/dev/ram15 [ 16,00 MiB]
/dev/sdb [ 102,40 MiB] LVM physical volume
/dev/sdc [ 102,40 MiB]
4 disks
17 partitions
1 LVM physical volume whole disk
1 LVM physical volume
lvm> pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created
lvm> lvmdiskscan
/dev/ram0 [ 16,00 MiB]
/dev/root [ 6,51 GiB]
/dev/ram1 [ 16,00 MiB]
/dev/sda1 [ 500,00 MiB]
/dev/vg_tester1/lv_swap [ 1,00 GiB]
/dev/ram2 [ 16,00 MiB]
/dev/sda2 [ 7,51 GiB] LVM physical volume

/dev/vgtest/lv_1_vgtest [ 100,00 MiB]


/dev/ram3 [ 16,00 MiB]
/dev/ram4 [ 16,00 MiB]
/dev/ram5 [ 16,00 MiB]
/dev/ram6 [ 16,00 MiB]
/dev/ram7 [ 16,00 MiB]
/dev/ram8 [ 16,00 MiB]
/dev/ram9 [ 16,00 MiB]
/dev/ram10 [ 16,00 MiB]
/dev/ram11 [ 16,00 MiB]
/dev/ram12 [ 16,00 MiB]
/dev/ram13 [ 16,00 MiB]
/dev/ram14 [ 16,00 MiB]
/dev/ram15 [ 16,00 MiB]
/dev/sdb [ 102,40 MiB] LVM physical volume
/dev/sdc [ 102,40 MiB] LVM physical volume
3 disks
17 partitions
2 LVM physical volume whole disks
1 LVM physical volume

Extensin del grupo de volmenes vgtest:

lvm> vgextend vgtest /dev/sdc


Volume group "vgtest" successfully extended
lvm> vgs
VG #PV #LV #SN Attr VSize VFree
vg_tester1 1 2 0 wz--n- 7,51g 0
vgtest 2 1 0 wz--n- 200,00m 100,00m
lvm> lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv_root vg_tester1 -wi-ao 6,51g
lv_swap vg_tester1 -wi-ao 1,00g
lv_1_vgtest vgtest -wi-ao 100,00m

Como se puede ver el grupo de volmenes tiene un tamao de 200Mb pero el volumen lgico
sigue siendo de 100Mb.

Extensin del volumen lgico lv_1_vgtest con:

lvm> lvextend -L200M /dev/vgtest/lv_1_vgtest


Extending logical volume lv_1_vgtest to 200,00 MiB
Logical volume lv_1_vgtest successfully resized
lvm> lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv_root vg_tester1 -wi-ao 6,51g
lv_swap vg_tester1 -wi-ao 1,00g
lv_1_vgtest vgtest -wi-ao 200,00m

Ahora solo nos queda el redimensionado del sistema de ficheros ext4 (se puede hacer con el
volumen montado):

[root@tester1 ~]# resize2fs /dev/vgtest/lv_1_vgtest


resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vgtest/lv_1_vgtest is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vgtest/lv_1_vgtest to 204800 (1k) blocks.
El sistema de ficheros en /dev/vgtest/lv_1_vgtest tiene ahora 204800 bloques.

El SO ya puede ver los 200Mb del volumen lgico:

[root@tester1 ~]# df -h
S.ficheros Size Used Avail Use% Montado en
/dev/mapper/vg_tester1-lv_root
6,5G 679M 5,5G 11% /
tmpfs 250M 0 250M 0% /dev/shm
/dev/sda1 485M 27M 433M 6% /boot
/dev/mapper/vgtest-lv_1_vgtest
194M 5,6M 179M 3% /mnt

Ahora vamos a aadir algunos ficheros en el punto de montaje /mnt que es donde est montado
/dev/mapper/vgtest-lv_1_vgtest, con la idea de eliminar algunos e intentar reducir el volumen
lgico sin perder datos.
Copiamos unos cuantos ficheros en el vg (151M) :

[root@tester1 ~]# cp /usr/lib/* /mnt/ -R


[root@tester1 mnt]# df -h
S.ficheros Size Used Avail Use% Montado en
/dev/mapper/vg_tester1-lv_root
6,5G 679M 5,5G 11% /
tmpfs 250M 0 250M 0% /dev/shm
/dev/sda1 485M 27M 433M 6% /boot
/dev/mapper/vgtest-lv_1_vgtest
194M 158M 27M 86% /mnt
[root@tester1 ~]# cd /mnt/
[root@tester1 mnt]# rm /mnt/locale/ -Rf
[root@tester1 mnt]# df -h
S.ficheros Size Used Avail Use% Montado en
/dev/mapper/vg_tester1-lv_root
6,5G 679M 5,5G 11% /
tmpfs 250M 0 250M 0% /dev/shm
/dev/sda1 485M 27M 433M 6% /boot
/dev/mapper/vgtest-lv_1_vgtest
194M 65M 120M 35% /mnt

Reduccin del grupo de volmenes y volumen lgico eliminamos 1 disco fsico.


Vamos a reducir el sistema de ficheros de 200Mb a 80Mb, hay que desmontar antes el volumen:

[root@tester1 ~]# umount /mnt


[root@tester1 ~]# e2fsck -f /dev/vgtest/lv_1_vgtest
e2fsck 1.41.12 (17-May-2010)
Paso 1: Verificando nodos-i, bloques y tamaos
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
No se encontr /lost+found. Crear<s>? si

Paso 3A: Optimizando directorios


Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de informacin de grupos
/dev/vgtest/lv_1_vgtest: ***** EL SISTEMA DE FICHEROS FUE MODIFICADO *****
/dev/vgtest/lv_1_vgtest: 2845/49400 ficheros (0.3% no contiguos), 71042/204800 bloques
[root@tester1 ~]# resize2fs /dev/vgtest/lv_1_vgtest 80M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vgtest/lv_1_vgtest to 81920 (1k) blocks.
El sistema de ficheros en /dev/vgtest/lv_1_vgtest tiene ahora 81920 bloques.

Lo que se ha hecho ha sido verificar antes el volumen y luego reducirlo.


Ahora podemos reducir el volumen lgico a 90Mb (el sistema de ficheros solo ocupa 80Mb),
aparece un mensaje indicando que podemos perder datos (ni que decir tiene que una copia de
seguridad es ms que recomendable):

lvm> lvreduce -L90M /dev/vgtest/lv_1_vgtest


Rounding up size to full physical extent 92,00 MiB
WARNING: Reducing active logical volume to 92,00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_1_vgtest? [y/n]: y
Reducing logical volume lv_1_vgtest to 92,00 MiB
Logical volume lv_1_vgtest successfully resized

Ok el volumen lgico ha sido reducido:

lvm> lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv_root vg_tester1 -wi-ao 6,51g
lv_swap vg_tester1 -wi-ao 1,00g
lv_1_vgtest vgtest -wi-a- 92,00m

No se ha perdido nada:

[root@tester1 ~]# mount /dev/vgtest/lv_1_vgtest /mnt


[root@tester1 ~]# df -h
S.ficheros Size Used Avail Use% Montado en
/dev/mapper/vg_tester1-lv_root
6,5G 679M 5,5G 11% /
tmpfs 250M 0 250M 0% /dev/shm
/dev/sda1 485M 27M 433M 6% /boot
/dev/mapper/vgtest-lv_1_vgtest
78M 64M 11M 86% /mnt

Ahora vemos el uso de los discos fsicos en cada grupo:

lvm> pvscan
PV /dev/sdb VG vgtest lvm2 [100,00 MiB / 8,00 MiB free]
PV /dev/sdc VG vgtest lvm2 [100,00 MiB / 100,00 MiB free]
PV /dev/sda2 VG vg_tester1 lvm2 [7,51 GiB / 0 free]
Total: 3 [7,70 GiB] / in use: 3 [7,70 GiB] / in no VG: 0 [0 ]

Se puede ver claramente que /dev/sdc puede ser liberado del grupo vgtest, no est en uso:

lvm> vgreduce vgtest /dev/sdc


Removed "/dev/sdc" from volume group "vgtest"
lvm> pvscan
PV /dev/sdb VG vgtest lvm2 [100,00 MiB / 8,00 MiB free]
PV /dev/sda2 VG vg_tester1 lvm2 [7,51 GiB / 0 free]
PV /dev/sdc lvm2 [102,40 MiB]
Total: 3 [7,71 GiB] / in use: 2 [7,61 GiB] / in no VG: 1 [102,40 MiB]

En este momento podemos eliminar el disco fsico con:

lvm> pvremove /dev/sdc


Labels on physical volume "/dev/sdc" successfully wiped
lvm> pvscan

PV /dev/sdb VG vgtest lvm2 [100,00 MiB / 8,00 MiB free]


PV /dev/sda2 VG vg_tester1 lvm2 [7,51 GiB / 0 free]
Total: 2 [7,61 GiB] / in use: 2 [7,61 GiB] / in no VG: 0 [0 ]

Finalmente el disco fsico /dev/sdc es posible desasignarlo de la mquina de forma definitiva, LVM

Das könnte Ihnen auch gefallen