LVM [P3], llevemos las particiones al próximo nivel

por | 17 diciembre, 2021

El post final de esta serie dedicada a LVM, aquí veremos como eliminar cada uno de los componentes de LVM ya sea con o sin información contenida en ellas

El recordatorio siempre esta, entiendan bien el comando, donde lo van a aplicar y con la debida precaución para evitar perdidas irreparables de información. En este post veremos

Pequeño recordatorio

Recordemos lo que se ha hecho hasta ahora para entender mejor lo que haremos:

  • Creamos dos PV usando las particiones /dev/sda (<7.27 GiB) y /dev/sdb1 (<3.71 GiB)
  • Usamos ambos PV en el mismo VG de nombre MIVG con un tamaño total de 10.97 GiB
  • Dentro del VG MIVG creamos tres LVs con las siguientes especificaciones:
    • Un LV con nombre PrimerLV con un espacio disponible de 3,291G
    • Otro LV con nombre SegundoLV con un tamaño fijo de 5G
    • y el ultimo LV que lleva por nombre TercerLV y tiene un espacio de 1,3395G
  • Fuera del post les di formato a los tres LVs con ext4

Eliminación de LV

Partiremos desde el componente mas cercano al usuario para ir ganando práctica y al ser algo así como «la cara visible» de LVM podremos ver su impacto de mejor forma

Antes de empezar con los comandos propios de LVM para la eliminación de los LV primero tenemos que hacer el mismo tratamiento que le damos a cualquier partición que deseemos eliminar, esto es respaldar la información contenida, desmontar la unidad y eliminarla del archivo /etc/fstab para que el sistema pueda arrancar con normalidad.

Teniendo estos puntos en consideración la sintaxis del comando a ejecutar es

lvremove <grupo_volúmenes>/<volumen_lógico>

En este caso si deseamos eliminar el LV SegundoLV ejecutaremos

lvremove MIVG/SegundoLV 

Se nos consultará si realmente deseamos eliminar el LV

$ sudo lvremove MIVG/SegundoLV
Do you really want to remove active logical volume MIVG/SegundoLV? [y/n]: y
  Logical volume "SegundoLV" successfully removed
$

En caso que tengamos la partición montada tendremos un error como el siguiente

$ sudo mount /dev/MIVG/SegundoLV /mnt/
$ sudo lvremove MIVG/SegundoLV
  Logical volume MIVG/SegundoLV contains a filesystem in use.
$

Si la partición contiene información LVM no nos advertirá de ello y solo nos pedirá la confirmación de eliminación sin entregar mayores antecedentes

$ sudo cp /etc/shadow /mnt/
$ sudo lvremove MIVG/SegundoLV
  Logical volume MIVG/SegundoLV contains a filesystem in use.
$ sudo umount /mnt
$ sudo lvremove MIVG/SegundoLV
Do you really want to remove active logical volume MIVG/SegundoLV? [y/n]: y
  Logical volume "SegundoLV" successfully removed
$

Como pueden apreciar tanto si intento eliminar el LV con la partición montada como si lo hago correctamente en ningún momento me advierte que hay información contenida en la partición, que en este caso es una copia del archivo /etc/shadow

Eliminación de VG

Continuando con los componentes de arriba hacia abajo, ahora toca el turno de los VG. Como ya es costumbre en LVM, el comando para eliminar un vg es «vgremove» seguido con el nombre del VG

vgremove <Nombre VG>

En caso que tengamos LV creados dentro del VG que vamos a eliminar el sistema nos lo indicará y nos pedirá confirmación para eliminar el VG y cada uno de los LV, podemos omitir esto con el argumento «-f»

$ sudo vgremove MIVG -f
  Logical volume "PrimerLV" successfully removed
  Logical volume "SegundoLV" successfully removed
  Logical volume "TercerLV" successfully removed
  Volume group "MIVG" successfully removed
$

En caso que no usemos el argumento -f nos pedirá confirmación por el VG y por cada uno de los LV contenidos dentro del VG

$ sudo vgremove MIVG
Do you really want to remove volume group "MIVG" containing 3 logical volumes? [y/n]: y
Do you really want to remove active logical volume MIVG/PrimerLV? [y/n]: y
y  Logical volume "PrimerLV" successfully removed
Do you really want to remove active logical volume MIVG/SegundoLV? [y/n]: y
  Logical volume "SegundoLV" successfully removed
Do you really want to remove active logical volume MIVG/TercerLV? [y/n]: y
  Logical volume "TercerLV" successfully removed
  Volume group "MIVG" successfully removed

En caso de que simplemente tenemos un VG sin LV dentro el mensaje simplemente no aparecerá

$ sudo vgcreate VGVACIO /dev/sda
  Volume group "VGVACIO" successfully created
$ sudo lvs
$ sudo vgremove  VGVACIO
  Volume group "VGVACIO" successfully removed

Eliminación de PV

Finalmente, el PV, nuevamente, como es costumbre el comando a usar es

pvremove <Disco>

En caso que el disco no se encuentre asignado a ningún VG simplemente bastará con ejecutar el comando anterior,en caso de estar en un VG hay que proceder con estos pasos extra.

Primero les mostraré como tengo LVM en la maquina

 $ sudo pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda   MIVG lvm2 a--   7.26g <3.29g
  /dev/sdb1  MIVG lvm2 a--  <3.71g <1.34g

En mi caso, ambos discos se encuentran asignados al VG MIVG, voy a eliminar /dev/sdb1 pero antes debemos validar que tenemos espacio suficiente para pasar los datos de un disco a otro, en este caso /dev/sdb1 tiene un tamaño de aprox 3.71G y espacio disponible tiene aprox 1.34G por lo que podemos deducir que se están ocupando aprox 2.37G /dev/sda (el disco destino) tiene aprox 3.29G libre por lo que podremos ejecutar el siguiente comando sin problemas

pvmove <Disco origen> [Disco destino]

Con esta opción le indicaremos a LVM que debe mover los datos desde un PV a otro, en caso de tener mas de un disco en LVM se puede opcionalmente entregar como segundo argumento el destino de los datos del disco que vamos a eliminar. En mi caso este argumento no es necesario ya que solo tengo 2 discos.

En caso de no tener espacio disponible en los discos de LVM tendremos un mensaje como el siguiente

$ sudo pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda   MIVG lvm2 a--   7.26g     0
  /dev/sdb1  MIVG lvm2 a--  <3.71g <1.34g
$ sudo pvmove /dev/sdb1
  No extents available for allocation.

Según el calculo anterior se que necesito al menos 2.37G en /dev/sda, por lo que elimino un LV para tener el espacio necesario y ejecuto nuevamente el comando

$ sudo pvmove /dev/sdb1
  /dev/sdb1: Moved: 0.00%
  /dev/sdb1: Moved: 4.29%
  /dev/sdb1: Moved: 9.08%
  /dev/sdb1: Moved: 13.70%
  /dev/sdb1: Moved: 18.65%
  /dev/sdb1: Moved: 23.10%
  /dev/sdb1: Moved: 28.05%
  /dev/sdb1: Moved: 32.84%
  /dev/sdb1: Moved: 37.79%
  /dev/sdb1: Moved: 42.41%
  /dev/sdb1: Moved: 46.20%
  /dev/sdb1: Moved: 51.16%
  /dev/sdb1: Moved: 56.11%
  /dev/sdb1: Moved: 60.73%
  /dev/sdb1: Moved: 65.51%
  /dev/sdb1: Moved: 70.30%
  /dev/sdb1: Moved: 75.08%
  /dev/sdb1: Moved: 79.54%
  /dev/sdb1: Moved: 84.32%
  /dev/sdb1: Moved: 88.94%
  /dev/sdb1: Moved: 93.89%
  /dev/sdb1: Moved: 98.84%
pi@raspberrypi:~ $  sudo pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda   MIVG lvm2 a--   7.26g 944.00m
  /dev/sdb1  MIVG lvm2 a--  <3.71g  <3.71g

Como pueden apreciar el espacio disponible de la partición /dev/sdb1 es igual al tamaño de la partición por lo que ya sabemos que no existen datos en esa partición.

El siguiente paso es informar al VG que se va a reducir el espacio que podrá utilizar y tenemos que indicarle que disco se va a eliminar, para esto el comando es

vgreduce <Nombre VG> <Disco a eliminar>

y ya ejecutado el comando anterior podemos proceder a eliminar el PV

$ sudo vgreduce MIVG /dev/sdb1
  Removed "/dev/sdb1" from volume group "MIVG"
$ sudo pvremove /dev/sdb1
  Labels on physical volume "/dev/sdb1" successfully wiped.
$ sudo pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda   MIVG lvm2 a--  7.26g 944.00m
$ sudo lsblk
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                8:0    1  7.3G  0 disk
├─MIVG-SegundoLV 254:1    0    5G  0 lvm
└─MIVG-TercerLV  254:2    0  1.3G  0 lvm
sdb                8:16   1  3.7G  0 disk
└─sdb1             8:17   1  3.7G  0 part
mmcblk0          179:0    0 29.7G  0 disk
├─mmcblk0p1      179:1    0  256M  0 part /boot
└─mmcblk0p2      179:2    0 29.5G  0 part /

Como pueden apreciar, ahora solo existe un pv que es /dev/sda, pero /dev/sdb1 sigue existiendo dentro del sistema pero ya no es parte de LVM.

Con esto termino esta mini serie, existen muchas mas opciones que se pueden tener con LVM, como por ejemplo, snapshot, raid0,agrandar o reducir LV o VG, desactivar VG pero estas quizás las tratare en algún post futuro

Fuente:

https://wiki.archlinux.org/title/LVM_(Espa%C3%B1ol)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *