Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Administrar un servidor GNU/Linux con LVM (3ªEntrega 3/3)

Leopoldo Álvarez Huerta
  • Escrito por Leopoldo Álvarez Huerta el 13 de Marzo de 2014
  • 4 min de lectura | Linux
Administrar un servidor GNU/Linux con LVM (3ªEntrega 3/3)

Tras las dos primeras entregas de esta mini-guía ( entrega 1 y entrega 2 ), continuamos con el tercer post para dar la misma por finalizada, y, sentando las bases para poder continuar con nuestro trabajo en sistemas basados en LVM.

En este post veremos diferentes comandos, necesarios para una administración de nuestro servidor.

Comandos de administración entornos LVM

Diferentes comandos para crear y eliminar un grupo de volúmenes o un volumen lógico, así como la redimensión de un volumen lógico. Vamos a empezar con la creación de un nuevo volumen. Las distribuciones utilizadas (SuseLinux Exterprise Server 11 y OpenSuse 13.1), permiten realizar estos trabajos desde el entorno gráfico, aunque en la guía veremos como realizar estas acciones desde línea de comandos..

Antes de nada, una captura de como arrancar YAST2 desde el entorno gráfico y una visión rápida del particionador.

yast y su partitioner

Crear un volumen lógico

Para crear un volumen lógico es necesario primero crear los volúmenes físicos que se necesitarán, y luego, el grupo de volúmenes . Finalmente se podrá crear el volumen lógico que se busca y asignar un sistema de archivos al mismo.

Si disponemos de espacio en el disco, bien porque hemos redimensionado el existente o porque no lo habiamos utilizado todo en un principio, podremos crear un volúmen lógico también, pero en este este paso vamos a suponer que tenemos un disco rígido nuevo, sin particionar. El disco en cuestión se identifica en el sistema como /dev/hd(x) o /dev/sd(x). En nuestro caso será /dev/sdb en la imagen a continuación (añadimos otro disco sata) y en los ejemplos de CLI (hdb).

Nuevo disco sdb

Crear el volumen físico.

poldix:~# pvcreate /dev/hdb
Physical volume "/dev/hdb" successfully created Vemos desde el partitioner como hay un nuevo disco "sdb", recordamos que teniamos el "sda", donde se encontraban las particiones "sda1" (/boot sin LVM) y "sda2" (entorno LVM) Disco sdb

Crear el grupo de volúmenes.

poldix:~# vgcreate testing /dev/hdb
Volume group "testing" successfully created

Crear un volumen lógico.

poldix:~# lvcreate testing -L 1.99G -n storage
Rounding up size to full physical extent 1.99 GB
Logical volume "storage" created

poldix:~# ls -l /dev/testing/storage
lrwxrwxrwx 1 root root 27 2010-06-10 16:01 /dev/testing/storage -> /dev/mapper/testing-storage

Crear el sistema de archivos en el volumen lógico.

poldix:~# mkfs.ext3 /dev/mapper/testing-storage
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
130560 inodes, 522240 blocks
26112 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

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

Agregar el nuevo volumen al FSTAB.

poldix:~# vi /etc/fstab
/dev/mapper/testing-storage /storage ext3 defaults 0 2

Montar el nuevo sistema de archivos y probarlo.

poldix:~# mkdir /storage
poldix:~# mount /storage/
poldix:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/testing-storage
                      2.0G   36M  1.9G   2% /storage
poldix:~# echo "prueba" > /storage/archivo.txt
poldix:~# cat /storage/archivo.txt
prueba

Aumentar un volumen lógico

En este punto vamos a explicar como se redimensiona un volumen lógico que hemos creado en uno de los puntos anteriores, y, en puntos posteriores lo reduciremos. He de destacar que el primero de los redimensionados será llevado a cabo sin desmontar el volumen lógico .

En este punto se considerará que se tiene un disco rígido adicional identificado como /dev/hdc y que el mismo tiene dos particiones, /dev/hdc1 y /dev/hdc2. Se utilizará la primera de ellas para extender el volumen creado en los pasos anteriores.

Crear volumen físico.

Como hemos visto anteriormente, creamos un volumen físico, que ya hemos visto cómo.
poldix:~# pvcreate /dev/hdc1
Physical volume "/dev/hdc1" successfully created

Extender el grupo de volúmenes.

En este paso se le indica al grupo de volúmenes " testing" que se le agregará un nuevo volumen físico (hdc1).
poldix:~# vgextend testing /dev/hdc1
Volume group "testing" successfully extended

Aquí veríamos que el grupo de volúmenes está extendido en más de una partición o volumen físico.

Extender el volumen lógico.

El siguiente comando selecciona el volumen “ storage “ya existente y le agrega 0.95G de tamaño (si no se indica el “+” se asignará el tamaño indicado en vez de añadirle más), tomados a partir de la integración del nuevo volumen físico.

poldix:~# lvextend -L +0.95G /dev/testing/storage
  Rounding up size to full physical extent 976.00 MB
  Extending logical volume storage to 2.95 GB
  Logical volume storage successfully resized
/pre>

Redimensionar el sistema de archivos.

Hasta aquí está todo bien, sin embargo, aún nuestro volumen no ha crecido en tamaño, según muestra la salida del comando df .
poldix:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/testing-storage
                      2.0G   36M  1.9G   2% /storage

Lo que ocurre es que el volumen ya cuenta con una mayor capacidad de almacenamiento, pero el sistema de archivos que se creó está limitando el tamaño del mismo. Por ello, es necesario extender el sistema de archivos existente. Este paso se realizará en caliente (on-line), es decir, sin desmontar el volumen .

poldix:~# resize2fs /dev/testing/storage
resize2fs 1.41.3 (12-Oct-2008)
Filesystem at /dev/testing/storage is mounted on /storage; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/testing/storage to 772096 (4k) blocks.
The filesystem on /dev/testing/storage is now 772096 blocks long.
poldix:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/testing-storage
                      2.9G   36M  2.8G   2% /storage
poldix:~# cat /storage/archivo.txt
prueba

Como puede verse, el sistema de archivos ha sido extendido sin desmontar el volumen y los datos que había en ese filesystem se conservan (se creó el fichero en puntos anteriores en la creación y montaje del volumen lógico)

Eliminar un volumen lógico.

poldix:/home/poldo# umount /storage/
poldix:/home/poldo# lvremove /dev/testing/storage
Do you really want to remove active logical volume "storage"? [y/n]: y
Logical volume "storage" successfully removed

Eliminar un grupo de volúmenes.

poldix:/home/poldo # vgremove testing
Volume group "testing" successfully removed

Eliminar un volumen físico.

poldix:/home/poldo # pvremove /dev/hdb
Labels on physical volume "/dev/hdb" successfully wiped

Disminuir un volumen

Cuando se trató el tema de aumentar el tamaño de un volumen se ha visto que los pasos básicamente consistían en extender el tamaño del grupo de volúmenes, luego el tamaño del volumen lógico a expandir, y, finalmente el tamaño del sistema de archivos.

Eso si no hemos reducido el tamaño de un LV y queremos aumentar otro LV dentro del mismo VG.

Para el caso de reducir un volumen los pasos son los mismos pero en orden inverso, aunque no es necesario reducir el grupo de volúmenes (eso dependerá de cada situación y su necesidad).

En la siguiente salida se puede verificar que el filesystem está montado y tiene un tamaño total de 2.9G.

poldix:/home/poldo# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/testing-storage
                     2.9G   36M  2.8G   2% /storage

Ahora lo que habría que hacer entonces es redimensionar el filesystem. Para poder hacerlo el FS no debe estar montado, de lo contrario daría un error al intentar la ejecución, tal como se muestra a continuación:

poldix:/home/poldo# resize2fs /dev/testing/storage 1G
resize2fs 1.41.3 (12-Oct-2008)
Filesystem at /dev/testing/storage is mounted on /storage; on-line resizing required
On-line shrinking from 772096 to 262144 not supported.

Se ve claramente que la reducción del filesystem de forma on-line no puede llevarse a cabo. Entonces sí es necesario desmontarlo y luego hacer la reducción. Es recomendable hacer un check del filesystem antes de reducirlo.

poldix:/home/poldo# umount /dev/mapper/testing-storage
poldix:/home/poldo# e2fsck -f /dev/mapper/testing-storage
e2fsck 1.41.3 (12-Oct-2008)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/testing-storage: ***** FILE SYSTEM WAS MODIFIED ***** /dev/mapper/testing-storage: 12/195840 files (0.0% non-contiguous), 21270/772096 blocks poldix:/home/poldo# resize2fs /dev/mapper/testing-storage 1G resize2fs 1.41.3 (12-Oct-2008) Resizing the filesystem on /dev/mapper/testing-storage to 262144 (4k) blocks. The filesystem on /dev/mapper/testing-storage is now 262144 blocks long.

Con los pasos anteriores hemos logrado reducir el tamaño del sistema de archivos a 1GB. Dicha modificación puede confirmarse volviendo a montar el filesystem y viendo que ahora el tamaño es de 1008M contra los 2.9G que se mostraban antes.

poldix:/home/poldo# mount /storage/
poldix:/home/poldo# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/testing-storage
                     1008M   35M  923M   4% /storage
poldix:/home/poldo# cat /storage/archivo.txt
prueba
Ahora bien, hasta aquí sólo se redujo el filesystem y no se modificó nada del volumen lógico, por lo que se supone que el mismo se haya mantenido sin cambios. Se puede verificar esto mediante el siguiente comando:
poldix:/home/poldo# lvdisplay /dev/testing/storage | grep Size
LV Size                2.95 GB

Entonces, vamos a reducir efectivamente el volumen. Hay que indicarle con el comando lvreduce cuál será su nuevo tamaño. En este caso, 1GB.

poldix:/home/poldo# lvreduce -L 1GB /dev/testing/storage
  WARNING: Reducing active and open logical volume to 1.00 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce storage? [y/n]: y
  Reducing logical volume storage to 1.00 GB
  Logical volume storage successfully resized
poldix:/home/poldo# df -h Filesystem            Size  Used Avail Use% Mounted on /dev/mapper/testing-storage 1008M   35M  923M   4% /storage poldix:/home/poldo# lvdisplay /dev/testing/storage | grep Size LV Size                1.00 GB

Llegados a este punto podemos comprobar como se ha reducido tanto el tamaño del filesystem como el del volúmen. Faltaría asegurarse que los datos sigan estando bien. Para ello  podemos comprobar, por ejemplo, que el contenido de “archivo.txt”  es legible.

poldix:/home/poldo# cat /storage/archivo.txt
prueba

Obviamente, lo anterior no asegura que todo esté bien, pero sirve a modo de ejemplo para el minitutorial. El archivo se creó como una demostración de que los datos se mantienen, operando con los diferentes comandos de LVM, reduciendo y aumentando un volumen lógico así como desmontando los FS mapeados.

Podemos utilizar con uno de los comandos vistos en la anterior entrega 2 , que se redujeron el filesystem y el volúmen lógico pero que el grupo de volúmenes sigue teniendo la misma dimensión. Existe la la diferencia que en este caso tiene espacio libre que podrá ser asignado a un nuevo volumen, por ejemplo. Esta información puede verse en las variables VG Size , Alloc Size , Free Size .

poldix:/home/poldo# vgdisplay testing --- Volume group --- VG Name               testing System ID Format                lvm2 Metadata Areas        2 Metadata Sequence No  5 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               2.95 GB PE Size               4.00 MB Total PE              755 Alloc PE / Size       256 / 1.00 GB Free  PE / Size       499 / 1.95 GB VG UUID               epQoNY-6JWP-1vUX-IZm0-LRwo-4fR4-AEEo1p Recuerda que si conseguir más conocimientos sobre sistemas de ficheros Unix o aumentar tu curriculum en Linux haz click aquí.

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars