• Categoría: Linux
  • Visto: 28699

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 
Linux

El Logical Volume Manager (LVM), nos permite el uso de volúmenes lógicos en Linux. Un volumen lógico está compuesto por particiones de disco o discos enteros. LVM nos va a permitir tener una visión de alto nivel del almacenamiento de nuestro servidor en lugar del tradicional uso de discos y particiones.

 

Vamos a ver paso a paso como podemos implementar y administrar sistemas de archivos con LVM.

 

Indice:

  1. Discos o particiones.

  2. Inicializar volúmenes físicos - physical volume PV.

  3. Crear grupo de volúmenes - volume group VG.

  4. Crear volúmenes lógicos - logical volume LV.

  5. Reducir volúmenes lógicos - logical volume LV.

  6. Crear filesystem basado en LVM.

  7. Mantenimiento de filesystem.

  8. Mantenimiento de volume group.

1.  Discos o particiones.

 

Para trabajar con LVM podemos hacerlo con particiones de disco o discos enteros, esto dependerá de la cantidad de discos que tengamos y de su tamaño. Siempre que se pueda es mejor trabajar con discos enteros que con particiones de disco.

 

En el tutorial vamos a trabajar con una partición y un disco entero para ver que con LVM podemos usar sin problemas ambas soluciones

 

El particionamiento de disco se realiza con la herramienta fdisk, para crear una partición lo haremos así.

 

Con fdisk -l obtenemos una lista de los discos disponibles.

 


#fdisk -l
Disco /dev/sda: 10.7 GB, 10737418240 bytes
255 cabezas, 63 sectores/pista, 1305 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes

Disposit. Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         892     7164958+  83  Linux
/dev/sda2             893        1147     2048287+  82  Linux swap

Disco /dev/sdb: 5368 MB, 5368709120 bytes
255 cabezas, 63 sectores/pista, 652 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Disposit. Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1         652     5237158+  83  Linux
Disco /dev/sdc: 5368 MB, 5368709120 bytes
255 cabezas, 63 sectores/pista, 652 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Disposit. Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1         652     5237158+  83  Linux
Disco /dev/sdd: 5368 MB, 5368709120 bytes
255 cabezas, 63 sectores/pista, 652 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Disposit. Boot      Start         End      Blocks   Id  System
/dev/sdd1   *           1         652     5237158+  83  Linux


 

El siguiente paso es crear una partición, vamos a crear una partición de 2GB en el disco /dev/sdb, ejecutamos fdisk /dev/sdb y el prompt de fdisk tecleamos la n de nuevo y seguimos los pasos del cuadro de abajo.

 


#fdisk /dev/sdb

Orden (m para obtener ayuda): n
Acción de la orden
e   Partición extendida
p   Partición primaria (1-4)
p
Número de partición (1-4): 1
Primer cilindro (1-652, default 1):
Using default value 1
Último cilindro o +tamaño o +tamañoM o +tamañoK (1-652, default 652): +2048M

Orden (m para obtener ayuda): p

Disco /dev/sdb: 5368 MB, 5368709120 bytes
255 cabezas, 63 sectores/pista, 652 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes

Disposit. Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         250     2008093+  83  Linux


 

Importante

*Importante con q salimos sin guardar cambios, con w salimos y guardamos cambios

 

Repetiríamos el proceso por cada partición que deseáramos crear y listo, salimos de fdisk con w para que nos guarde los cambios. Para este tutorial vamos a utilizar la partición que hemos creado de 2 GB /dev/sdb1 y un disco entero de 5GB, el /dev/sdc1.

 

2.  Inicializar volúmenes físicos - physical volume PV.

 

Los dispositivos que vamos a usar son /dev/sdb1 (2GB) y /dev/sdc1 (5GB) y utilizaremos el comando pvcreate para inicializarlos.

 

Desde el prompt del sistema ejecutamos lo siguiente:

 


#pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
#pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created


 

Una vez creados con el comando pvdisplay podemos ver las características de los physical volumen.

 

3. Crear grupo de volúmenes - volume group VG.

 

Un grupo de volúmenes es una agrupación tanto física como lógica de volúmenes físicos, como veremos más adelante cuando creemos un filesystem le asignaremos espacio de un grupo de volúmenes, si nuestro grupo de volúmenes se queda sin espacio libre con añadirle otro physical volume podremos ampliar los filesystem que se nos han quedado sin espacio, esta es una de las ventajas de LVM respecto al uso tradicional de particiones o discos de forma directa.

 

Vamos a crear un volume group para una instalación por ejemplo de software Oracle 10g u Oracle 11g y la posterior creación de una BBDD Oracle 10g u Oracle 11g.

 

Nuestro volume group se va a llamar vgoraclesoft y va a contener los dos physical volume que hemos creado.

 


#vgcreate vgoraclesoft /dev/sdb1 /dev/sdc1
Volume group "vgoraclesoft" successfully created


 

4.  Crear volúmenes lógicos - logical volume LV.

 

Una que ya tenemos nuestro volumen group creado vamos a crear un logical volume que usaremos para montar un filesystem que contendrá una instalación de Oracle 10g u Oracle 11g.

 

Nuestro primer logical volume que se llamará lvu01, tendrá 4GB, de espacio y en él montaremos posteriormente el filesystem /u01.

 


#lvcreate –L 4G -n lvu01 vgoraclesoft
Logical volume "lvu01" created


 

5. Reducir volúmenes lógicos - logical volume LV.

 

El comando para reducir un volumen lógico (Logical Volume) es lvreduce, pero si contiene un File-System, montado o desmontado, sobre él, tendrás también que reducir el sistema de archivos (File-system) por lo que se vuelve una tarea crítica y que puede terminar en un desastre sino se tiene cuidado.

 

Mi recomendación es que antes de reducir piensa bien si es realmente necesario, también ten en cuenta que para reducir hay que desmontar el File-system del LV a reducir, por lo que no abra acceso a él durante el proceso.

 

Si has creado un LV nuevo y todavía no lo has usado puedes directamente borrarlo y crearlo con el tamaño adecuado, o puedes usar el comando lvreduce para reducir el tamaño, ver el Paso 4.


Lo primero es analizar el File-system a reducir, tamaño actual, espacio ocupado y espacio libre, utiliza el comando lvs para ver los LVs que tienes y así identificar el que quieres reducir y el comando df -h para la ver la información detallada del File-system montado sobre él.

 

Para desarrollar la reducción tengo el siguiente escenario.

 

El LV lvoltest de 5GB de tamaño.

 


# lvs
  LV       VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  LogVol00 vg00 -wi-ao---- 4,00g
  LogVol01 vg00 -wi-ao---- 3,00g
  lvoltest vg00 -wi-ao---- 5,00g


 

El File-system test con 4,8G de espacio total montado sobre el LV lvoltest, 1,1 GB de espacio ocupado y 3,6 GB de espacio libre.

 


# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg00-LogVol01
                      2,9G  823M  2,0G  30% /
tmpfs                 932M     0  932M   0% /dev/shm
/dev/sda1             190M   56M  125M  31% /boot
/dev/mapper/vg00-lvoltest
                      4,8G  1,1G  3,6G  23% /test


 

Importante

Antes de empezar, bloquea el acceso al File-system y haz una copia de seguridad, imprescindible.

 

Los pasos para reducir un LV son los siguientes:

 

Paso 1. Desmontar el punto de montaje del File-system que vas a reducir.

 


# umount -v /test
Se ha ejecutado umount en /dev/mapper/vg00-lvoltest


 

Paso 2. Verificar el File-system una vez desmontado.

 


#e2fsck -ff /dev/mapper/vg00-lvoltest
e2fsck 1.41.12 (17-May-2010)
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
/dev/mapper/vg00-lvoltest: 14/327680 ficheros (0.0% no contiguos), 318499/1310720 bloques


 

Paso 3. Reducir el sistema de archivos.

 

Voy a reducir 1 GB. El comando resize2fs necesita el tamaño de cómo debe quedar el File-System, es decir, 5GB - 1GB  = 4GB, 4 GB será el valor que incluiré.

 


#resize2fs /dev/mapper/vg00-lvoltest 4G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg00-lvoltest to 1048576 (4k) blocks.
El sistema de ficheros en /dev/mapper/vg00-lvoltest tiene ahora 1048576 bloques.


 

Paso 4. Reducir el tamaño del volumen lógico (LV).

 

Reduzco en 1 GB. El comando para reducir el LV requiere el tamaño a reducir, es decir, 1GB.

 


#lvreduce -L -1G /dev/mapper/vg00-lvoltest
  WARNING: Reducing active logical volume to 4,00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvoltest? [y/n]: y
  Size of logical volume vg00/lvoltest changed from 5,00 GiB (1280 extents) to 4,00 GiB (1024 extents).
  Logical volume lvoltest successfully resized


 

Paso 5. Volver a verificar el File-system para asegurarnos de que no hay errores.

 


#e2fsck -ff /dev/mapper/vg00-lvoltest
e2fsck 1.41.12 (17-May-2010)
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
/dev/mapper/vg00-lvoltest: 14/262144 ficheros (0.0% no contiguos), 314388/1048576 bloques


 

Paso 6. Volver a montar el sistema de archivos ya reducido.

 


#mount /dev/vg00/lvoltest /test

 

El File-system y logical volume tienen 1GB menos de espacio total.

 


# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg00-LogVol01
                      2,9G  823M  2,0G  30% /
tmpfs                 932M     0  932M   0% /dev/shm
/dev/sda1             190M   56M  125M  31% /boot
/dev/mapper/vg00-lvoltest
                      3,9G  1,1G  2,7G  29% /test


 


# lvdisplay /dev/mapper/vg00-lvoltest
  --- Logical volume ---
  LV Path                /dev/vg00/lvoltest
  LV Name                lvoltest
  VG Name                vg00
  LV UUID                LUgcrC-eltH-zBN2-OnC7-ThH8-eae5-d5NX1b
  LV Write Access        read/write
  LV Creation host, time lcendev003, 2017-05-15 14:48:32 +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:2


 

6.  Crear filesystem basado en LVM.

 

Una vez tenemos creado logical volumen vamos a crear filesystem /u01 sobre el logical volumen lvu01.

 


#mkfs ext3 /dev/vgoraclesoft/lvu01

 

Una vez tenemos el filesystem creado vamos a crear el punto de montaje. Los pasos son crear el directorio /u01 y montar el filesystem /u01.

 


#mkdir –p /u01
#mount /dev/vgoraclesoft/lvu01 /u01


 

Para terminar esta parte ponemos los permisos y grupo adecuados al filesystem /u01.

 


#chown oracle:dba /u01
#chmod 755 /u01


 

El nuevo filesystem /u01 queda de esta manera, usamos el comando Linux/Unix df –h.

 


#df –h /u01
Filesystem             size   used  avail capacity  Mounted on
/dev/vgoraclesoft/lvu01
4G      0G     4G        0%   /u01


 

7.  Mantenimiento de filesystem.

 

- Ampliación de un filesystems

 

Lo habitual en el día día en la administración de un sistema Linux es que algún filesystem este cerca de llenarse o incluso se llegue a estar lleno por completo.

 

¿Como ampliamos un filesystem? Buena pregunta, realmente lo que haremos es ampliar el logical volume correspondiente. Antes de realizar la ampliación deberíamos ver el espacio libre que nos queda en el volumne group,   para ello usaremos el comando vgdisplay de siguiente manera:

 


#vgdisplay vgoraclesoft

 

Como todavía tenemos espacio libre vamos a añadirle por ejemplo 500MB al logical volumen lvu01.

 


#lvresize –L 500M /dev/vgoraclesoft/lvu01
Extending logical volume lvu01 to 500 MB
Logical volume lv01 successfully resized


 

Y por último refrescamos el filesystem /u01 para que tome la ampliación.

 


#resize2fs /dev/vgoraclesoft/lvu01
resize2fs 1.40.2 (12Jul2007)
Filesystem at /dev/vgoraclesoft/lvu01 is mounted on /u01; online
resizing required
old desc_blocks = 2, new_desc_blocks = 2
Performing an online
resize of /dev/vgoraclesoft/lvu01 to 491520 (1k) blocks.
The filesystem on /dev/vgoracleu01/lvu01 is now 491520 blocks long.


 

8.  Manatenimiento de volume group.

 

Añadir un disco a un volume group.

 

Si nuestro volume group se queda sin espacio libre le añadiremos una partición o un disco entero.

 

una vez tengamos preparado el phisical volume lo añadiremos nuestro volume group vgoraclesoft.

 


#vgextend –v vgoraclesoft /dev/sdd1
Checking for volume group "vgoraclesoft"
Archiving volume group "vgoraclesoft" metadata (seqno 5).
Adding physical volume '/dev/sdd1' to volume group 'vgoraclesoft'
Volume group "vgoraclesoft" will be extended by 1 new physical volumes
Creating volume group backup "/etc/lvm/backup/vgdatos" (seqno 6).
Volume group "vgoraclesoft" successfully extended