miércoles, 20 de marzo de 2013

Administración de volúmenes lógicos (LVM)


1. ADMINISTRACIÓN DE VOLÚMENES LÓGICOS


2. LVM2


LVM2 es un administrador de volúmenes lógicos desarrollado para el kernel de Linux, compatible con su predecesor LVM1. En la actualidad, LVM está disponible en la mayoría de los sistemas Linux para utilizarlo al momento de la instalación. De hecho, sistemas como Debian utilizan LVM si se los particiona como lo sugiere el instalador por defecto.

La primer ventaja fundamental de LVM es que quita el inconveniente de dimensionar exactamente las particiones tal cuál se las necesita, encontrandose luego con que el esquema de particionamiento escogido no es el más adecuado.

Características de LVM2

LVM2 cuenta, básicamente, con las siguientes funcionalidades.
  • Redimensión de grupos de volúmenes y volúmenes lógicos en línea.
  • Crear instantáneas (snapshots) de lecturea/escritura del sistema de archivos.
  • Constituir los volúmenes lógicos separados en los diferentes volúmenes físicos, de manera similar que RAID 0.
  • Mover los volúmenes lógicos entre los diferentes volúmenes físicos.
Conceptos básicos de LVM
Para entender cómo funciona LVM es necesario conocer algunos conceptos elementales, que son:
  • Volumen físico (PV): un PV es un disco rígido, una partición o un RAID.
  • Volumen lógico (LV): un LV es el equivalente a una partición tradicional.
  • Grupo de volúmenes (VG): un grupo de volúmenes reúne uno o más PVs. Los PVs pueden comenzar a utilizarse en LVM recién cuando pasan a formar parte de un VG.
  • Physical extent (PE): un PE es una porción de cada volumen físico, de tamaño fijo. Un volumen físico se divide en mútiples PEs del mismo tamaño.
  • Logical extent (LE): un LE es una porción de cada volumen lógico, de tamaño fijo. Un volumen lógico se divide en mútiples LEs del mismo tamaño.
  • Device mapper: es un framework genérico del kernel de Linux que permite realizar un mapeo de un dispositivo de bloques a otro. Es la herramienta fundamental en la que se basa LVM para hacer el mapeo de los dispositivos virtuales con los dispositivos físicos.
3. SISTEMA OPERATIVO


La presente instalación, se la hará en un Sistema Operativo Linux, Distribución Debian, Versión 6 (Squeeze).


4. PAQUETES INSTALADOS

LVM2



5. INSTALACIÓN DEL PAQUETE LVM2


Primero instalar LVM..

# apt-get install lvm2


Creación de un volumen lógico


5.1. CREACIÓN DE 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. Para este paso se tomará como ejemplo que se tiene un disco rígido nuevo, sin particionar. El disco en cuestión se identifica en el sistema como /dev/hdb.


Crear el volumen físico.

# pvcreate /dev/hdb
 Physical volume "/dev/hdb" successfully created

Crear el grupo de volúmenes.


# vgcreate dsk0 /dev/hdb
Volume group "dsk0" successfully created

Crear un volumen lógico.



# lvcreate dsk0 -L 1.99G -n nuevo-volumen
Rounding up size to full physical extent 1.99 GB
Logical volume "nuevo-volumen" created


# ls -l /dev/dsk0/nuevo-voluemn
lrwxrwxrwx 1 root root 27 2012-20-10 16:01 /dev/dsk0/nuevo-volumen -> /dev/mapper/dsk0-nuevo-volumen


Ahora será necesario dar formato al nuevo volumen lógico, para este ejemplo se dará formato con el sistema de archivos deseado, en este caso se hará con EXT4.


testing:~# mkfs.ext4 /dev/mapper/testing-storage
mke2fs 1.41.3 (20-Oct-2012)
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.


Luego, se debe agregar en el FSTAB para que la partición se monte inmediatamente al momento de arrancar el sistema, para ello, abrir un editor de archivos:


# nano /etc/fstab


Y se agrega la partición


/dev/dsk0/nuevo-volumen  /mnt/storage ext4 defaults 0 0


O en su defecto, montar manualmente la partición de la siguiente manera:


# mkdir /mnt/storage
# mount /dev/dsk0/nuevo-volumen/mnt/storage/
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/dsk0/nuevo-volumen
2.0G   36M  1.9G   2% /mnt/storage


5.2. REDIMENSIONAR UN VOLUMEN LÓGICO


Hasta aquí se ha visto cómo crear volúmenes físicos, grupos de volúmenes y volúmenes lógicos. A su vez, se mostró cómo utilizar el volumen creado. En este punto se verá el tema de redimensionar el volumen lógico recién creado, primero agrandando su tamaño y luego achicándolo. Es de destacar que el primero de los redimensionamientos será llevado a cabo sin desmontar el volumen lógico.


5.2.1. AUMENTAR EL TAMAÑO


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.


# 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 dsk0 que se le agregará un nuevo volumen físico.


# vgextend dsk0 /dev/hdc1
Volume group "dsk0" successfully extended


Extender el volumen lógico.


El siguiente comando toma el volumen “nuevo-volumen” ya existente y le agrega 0.95G de tamaño, tomados a partir de la integración del nuevo volumen físico.


# lvextend -L +0.95G /dev/dsk0/nuevo-volumen
Rounding up size to full physical extent 976.00 MB
Extending logical volume storage to 2.95 GB
Logical volume storage successfully resized


Redimensionar el sistema de archivos.


Hasta aquí está todo bien, sin embargo aún el volumen no ha crecido en tamaño, según muestra la salida del comando df.


# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/testing-storage
2.0G   36M  1.9G   2% /mnt/storage


Lo que ha ocurrido es que, si bien el volumen ya cuenta con una mayor capacidad de almacenamiento, 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á on-line, es decir, sin desmontar el volumen.


# resize2fs /dev/dsk0/nuevo-volumen
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.


Luego, se comprueba con df:


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


Como puede verse, el sistema de archivos ha sido extendido sin desmontar el volumen y los datos que se tenían fueron conservados.


Herramientas informativas


Es posible ver el estado y detalles de los diferentes volúmenes físicos, grupos de volúmenes y volúmenes lógicos mediante tres sencillos comandos que se muestran a continuación: pvdisplay, vgdisplay y lvdisplay.


# pvdisplay
--- Physical volume ---
PV Name               /dev/hdb
VG Name               dsk0
PV Size               2.00 GB / not usable 4.00 MB
Allocatable           yes (but full)
PE Size (KByte)       4096
Total PE              511
Free PE               0
Allocated PE          511
PV UUID               pE7qSU-COhd-j6a4-YnWg-1mR7-xZ48-XDstZk


--- Physical volume ---
PV Name               /dev/hdc1
VG Name               dsk0
PV Size               976.96 MB / not usable 984.50 KB
Allocatable           yes
PE Size (KByte)       4096
Total PE              244
Free PE               1
Allocated PE          243
PV UUID               rmvKFh-0hGJ-mBby-zPjT-eyvf-2CrP-TjTKG3


# vgdisplay
--- Volume group ---
VG Name               dsk0
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  4
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       754 / 2.95 GB
Free  PE / Size       1 / 4.00 MB
VG UUID               epQoNY-6JWP-1vUX-IZm0-LRwo-4fR4-AEEo1p


# lvdisplay
--- Logical volume ---
LV Name                /dev/dsk0/nuevo-volumen
VG Name                dsk0
LV UUID                ywXZGl-kafG-CoHV-3jGt-wt1S-rnlY-IBIgF8
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                2.95 GB
Current LE             754
Segments               2
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           254:2


5.2.2. REDUCIR UN VOLUMEN


Para el caso de reducir un volumen los pasos son los mismos pero en orden inverso, aunque no es necesario achicar el grupo de volúmenes (eso dependerá de la necesidad particular).


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


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


Lo que hay que hacer entonces es redimensionar el filesystem. Para poder hacerlo el mismo no debe estar montado, dado que de lo contrario da un error al intentar la ejecución, tal como se muestra a continuación:


# resize2fs /dev/dsk0/nuevo-volumen 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 que dice 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 muy recomendado hacer un chequeo del filesystem antes de achicarlo.


# umount /dev/dsk0/nuevo-volumen
# e2fsck -f /dev/mapper/nuevo-volumen
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/nuevo-volumen: ***** FILE SYSTEM WAS MODIFIED *****
/dev/mapper/nuevo-volumen: 12/195840 files (0.0% non-contiguous), 21270/772096 blocks


# resize2fs /dev/mapper/nuevo-volumen 1G
resize2fs 1.41.3 (12-Oct-2008)
Resizing the filesystem on /dev/mapper/nuevo-volumen to 262144 (4k) blocks.
The filesystem on /dev/mapper/nuevo-volumen is now 262144 blocks long.


Muy bien, con los pasos anteriores logró reducirse el tamaño del sistema de archivos a 1GB. Dicha modificación puede constatarse volviendo a montar el filesystem y viendo que ahora el tamaño es de 1008M contra los 2.9G que mostraba antes.


# mount /mnt/storage/
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/nuevo-volumen
1008M   35M  923M   4% /mnt/storage


Ahora bien, hasta aquí sólo se achicó el filesystem y no se modificó nada del volumen lógico, por lo que es de suponer que el mismo se haya mantenido sin cambios. Se puede verificar esto mediante el siguiente comando:


# lvdisplay /dev/dsk0/nuevo-volumen | grep Size
LV Size                2.95 GB


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


# lvreduce -L 1GB /dev/dsk0/nuevo-volumen
 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


# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/nuevo-volumen
                    1008M   35M  923M   4% /mnt/storage


# lvdisplay /dev/dsk0/nuevo-volumen | grep Size
 LV Size                1.00 GB


En este punto sí se ve claramente que se ha reducido tanto el tamaño del filesystem como el del volúmen.


Finalmente, con el siguiente comando se puede verificar que, si bien se achicaron el filesystem y el volúmen lógico, el grupo de volúmenes sigue teniendo la misma dimensión, con la diferencia que en este caso tiene espacio libre que podrá ser asignado a un nuevo volumen. Esta información puede verse en las variables VG Size, Alloc Size, Free Size.


# vgdisplay dsk0
--- Volume group ---
VG Name               dsk0
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


5.2.2. REMOVER VOLÚMENES


Llegó el momento de deshacer todo el trabajo que se llevó adelante hasta el momento.


Eliminar un volumen lógico.


# umount /storage/mnt
# lvremove /dev/dsk0/nuevo-volumen
Do you really want to remove active logical volume "nuevo-volumen"? [y/n]: y
Logical volume "nuevo-volumen" successfully removed


Eliminar un grupo de volúmenes.


# vgremove dsk0
Volume group "dsk0" successfully removed


Eliminar un volumen físico.


# pvremove /dev/hdb
Labels on physical volume "/dev/hdb" successfully wiped


6. RECOMENDACIONES


LVM es un sistema muy interesante para utilizar ya sea en sistemas pequeños como en sistemas con muchos discos y esquemas complejos de particionamiento. Por su flexibilidad y sus capacidades puede reducir mucho el trabajo de mantenimiento de los equipos y cualquier cambio a nivel de almacenamiento.

1 comentario:

  1. Spades Plus - sunscreen with zinc oxide and titanium dioxide
    The spades Plus – and it titanium white acrylic paint is a popular card game. The fallout 76 black titanium player must place all the cards face-down, in pairs with 1xbet 먹튀 their titanium mig 170 partner. Each of the spades cards titanium meaning

    ResponderEliminar