Particiones lógicas (logical volumes)

Las particiones lógicas son particiones que se crean dentro de un volume group y podrán crecer siempre y cuando hay espacio libre dentro del grupo de volumen.

Una partición lógica se crea:

[root@sal]# lvcreate -L5G -n mysql_lv /dev/data_vg
  Logical volume "mysql_lv" created
[root@sal]# 

Habremos creado una partición lógica de 5 gigas en el grupo de volumen data_vg.

Sugerencia

Para formatearla, montarla, ... nos referiremos a ella como /dev/data_vg/mysql_lv.

Información y detección de particiones lógicas

Podemos utilizar el comando lvscan para encontrar particiones lógicas:

[root@sal]# lvscan
  ACTIVE            '/dev/data_vg/apache_lv' [20,00 GB] inherit
  ACTIVE            '/dev/data_vg/mysql_lv' [20,00 GB] inherit
[root@sal]# 

También disponemos del comando lvdisplay que nos ofrece más información sobre las particiones lógicas encontradas:

[root@sal]# lvdisplay
  --- Logical volume ---
  LV Name                /dev/data_vg/apache_lv
  VG Name                data_vg
  LV UUID                KCDc3t-jAHj-dNDK-I9qe-rF3B-oyya-Tg00JL
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                20,00 GB
  Current LE             5120
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/data_vg/mysql_lv
  VG Name                data_vg
  LV UUID                0m24gV-H9BC-MdbV-vSNZ-r57x-gx37-zUy22q
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                20,00 GB
  Current LE             5120
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:1
[root@sal]# 

El comando lvs también nos ofrece información:

[root@sal]# lvs
  LV        VG      Attr   LSize  Origin Snap%  Move Log Copy%
  apache_lv data_vg -wi-ao 20,00G
  mysql_lv  data_vg -wi-a- 20,00G
[root@sal]# 

Ampliación de una partición lógica

[root@sal]# lvextend -L+2G /dev/data_vg/mysql_lv
  Extending logical volume mysql_lv to 7,00 GB
  Logical volume mysql_lv successfully resized
[root@sal]# 

Una vez ampliada la partición lógica habrá que hacer un resize. Si es sistema de ficheros es ReiserFS podemos hacerlo en caliente sin desmontarlo:

[root@sal]# resize_reiserfs /dev/data_vg/mysql_lv
  resize_reiserfs 3.6.19 (2003 www.namesys.com)
  

  resize_reiserfs: On-line resize finished successfully.
[root@sal]# 

Con ext3:

[root@sal]# ext2online /dev/data_vg/mysql_lv
ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b
[root@sal]# 

Reducción de tamaño para particiones lógicas

Aviso

Antes de reducir un sistema de ficheros es MUY recomendable asegurarse de que hay un backup de los datos.

Aviso

Si el sistema de ficheros está fragmentado y existen datos en la parte a reducir esos datos se perderán.

Aviso

Cuando reduzcamos un sistema de ficheros tenemos que asegurarnos de que el sistema de ficheros resultante puede contener todos los datos.

Los pasos a seguir son:

  • Desmontar la partición.

  • Hacer un resize del sistema de ficheros al tamaño deseado.

    Con un sistema de ficheros ReiserFS:

    [root@sal]# resize_reiserfs -s -1G /dev/data_vg/mysql_lv
    Dando formato a resize_reiserfs(8); aguarde, por favor...
    telemaco:/media# resize_reiserfs -s -1G /dev/data_vg/mysql_lv 
    resize_reiserfs 3.6.19 (2003 www.namesys.com)
    
    You are running BETA version of reiserfs shrinker.
    This version is only for testing or VERY CAREFUL use.
    Backup of you data is recommended.
    
    Do you want to continue? [y/N]:y
    Processing the tree: 0%....20%....40%....60%....80%....100%                      left 0, 105322 /sec
    
    nodes processed (moved):
    int        3 (0),
    leaves     209 (0),
    unfm       210432 (0),
    total      210644 (0).
    
    check for used blocks in truncated region
    
    ReiserFS report:
    blocksize             4096
    block count           1048576 (1310720)
    free blocks           829690 (1091826)
    bitmap block count    32 (40)
    
    Syncing..done
    
    
    resize_reiserfs: Resizing finished successfully.
    [root@sal]# 
    

    Con un sistema de ficheros ext3:

    [root@sal]# e2fsck -f /dev/data_vg/mysql_lv
    e2fsck 1.35 (28-Feb-2004)
    Paso 1: revisando nodos i, bloques y tamaños
    Paso 2: revisando la estructura de directorios
    Paso 3: revisando la conectividad del directorio.
    Paso 4: revisando las cuentas de referencia
    Paso 5: revisando el resumen de información del grupo
    /dev/data_vg/mysql_lv: ficheros 11/92160 (9.1% no contiguos), bloques 7156/179200
    [root@sal]# resize2fs /dev/data_vg/mysql_lv 6g
    resize2fs 1.35 (28-Feb-2004)
    Resizing the filesystem on /dev/data_vg/mysql_lv to 2816000 (4k) blocks.
    El sistema de ficheros en /dev/data_vg/mysql_lv mide ahora 2816000 bloques.
    
  • Reducimos la partición lógica:

    [root@sal]# lvreduce -L-1G /dev/data_vg/mysql_lv
      WARNING: Reducing active logical volume to 6,00 GB
      THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce mysql_lv? [y/n] y
      Logical volume mysql_lv successfully resized
    [root@sal]# 
    

Activación y desactivación de particiones lógicas

Para determinadas operaciones de los grupos de volumen es necesario desactivar las particiones lógicas que en ellos residen.

Utilizaremos para ello el comando lvchange:

[root@sal]# lvchange -a n /dev/data_vg/mysql_lv
[root@sal]# 

Desactivaría la partición lógica.

Sugerencia

man lvchange

Eliminación de una partición lógica

Para eliminar una partición lógica utilizaremos el comando lvremove:

[root@sal]# lvremove /dev/data_vg/mysql_lv
Do you really want to remove active logical volume "mysql_lv"? [y/n]: y
  Logical volume "mysql_lv" successfully removed
[root@sal]#