Cómo extender un volumen LVM en Linux

Cómo extender un volumen LVM en Linux

En este artículo te voy a mostrar cómo extender un volumen LVM existente en Linux.

Este artículo es de esos que los escribo para tenerlo como referencia para mi mismo, ya que esto de agrandar los discos no es algo que haga todos los días y siempre de algo me estoy olvidando, así que como ayuda memoria, este artículo.

Vamos por parte, diría Jack. Así que vamos a ejecutar lo siguiente para ver cómo están montados nuestros discos.

df -h

En este caso, aparece algo así:

Filesystem           Size  Used Avail Use% Mounted on
udev                 955M     0  955M   0% /dev
tmpfs                198M  1.3M  196M   1% /run
/dev/sda2             20G  4.6G   14G  25% /
tmpfs                986M     0  986M   0% /dev/shm
tmpfs                5.0M     0  5.0M   0% /run/lock
tmpfs                986M     0  986M   0% /sys/fs/cgroup
/dev/loop0            94M   94M     0 100% /snap/core/8935
/dev/loop1            90M   90M     0 100% /snap/core/8268
/dev/mapper/a-disco  969M  2.5M  900M   1% /mnt/disco2
tmpfs                198M     0  198M   0% /run/user/1000

El disco que queremos agrandar es este:

/dev/mapper/a-disco  969M  2.5M  900M   1% /mnt/disco2

El mismo tiene un tamaño de 1gb y esta montado en el directorio /mnt/disco2, en este caso, lo voy a llevar al doble, para que quede un volumen LVM de 2gb.

Para eso, primero, debo agregar el disco a la máquina virtual y luego, tengo que ver la identificación que el sistema le dió a ese disco y eso lo hago con el siguiente comando.

fdisk -l

Deberíamos ver algo como esto:

Disk /dev/loop0: 89.1 MiB, 93417472 bytes, 182456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop1: 93.8 MiB, 98336768 bytes, 192064 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: EAB3EDBC-7716-4B7B-9328-3D238759C495

Device     Start      End  Sectors Size Type
/dev/sda1   2048     4095     2048   1M BIOS boot
/dev/sda2   4096 41940991 41936896  20G Linux filesystem


Disk /dev/sdb: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xeb92df94

Device     Boot Start     End Sectors  Size Id Type
/dev/sdb1        2048 2097151 2095104 1023M 8e Linux LVM


Disk /dev/sdc: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/a-disco: 1000 MiB, 1048576000 bytes, 2048000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Fijense, que el último es nuestro LVM actual y el ante último de la lista, es el nuevo disco que acabamos de instalar el: "/dev/sdc".

Disk /dev/sdc: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Vamos a particionarlo y formatearlo para extender la LVM actual, que se llama "a". Si queremos saber más detalles del "Volume Group" que vamos a extender con este nuevo disco. Tipeamos lo siguiente:

vgdisplay

Para este caso, solo hay un "Volume Group" así que se ve así:

  --- Volume group ---
  VG Name               a
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1020.00 MiB
  PE Size               4.00 MiB
  Total PE              255
  Alloc PE / Size       250 / 1000.00 MiB
  Free  PE / Size       5 / 20.00 MiB
  VG UUID               X18nn3-W3U7-TjLc-iogG-Fo4d-fAnH-EIw4oo

Ahora bien, ya sabemos que la unidad nueva que queremos crear una partición se llama /dev/sdc, así que vamos a eso.

Lo primero que debemos hacer es ejecutar:

fdisk /dev/sdc

Vamos a comenzar a particionar nuestro disco, tengan en cuenta la sección donde dice "Created a new partition 1 of type 'linux' and of size 1023MiB, ya que a partir de ahí, debemos tipear "t" y luego elegimos el tipo de partición. "8e" es el código para LVM.

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x26b1d169.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (1-4, default 1):
First sector (2048-2097151, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-2097151, default 2097151):

Created a new partition 1 of type 'Linux' and of size 1023 MiB.

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'.

Si estamos seguros que quedó parecido a esto de aca arriba, apretamos "w" quedando mas o menos así:

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Lo siguiente en la lista es crear un "Physical Volume", así que vamos a eso:

pvcreate /dev/sdc1

Debería devolver esto:

 Physical volume "/dev/sdc1" successfully created.

Ahora vamos a extender el "Volume Group" llamado "a", para eso, vamos a tipear lo siguiente:

vgextend a /dev/sdc1

La devolución de la terminal debe ser así:

Volume group "a" successfully extended

y ahora lo clave, vamos a extender el "Logical Volume" "disco" para que use todo lo disponible, que en este caso es 1gb más del disco que agregamos a la maquina virtual.

lvextend -L +1g /dev/mapper/a-disco

Devuelve esto:

Size of logical volume a/disco changed from 1000.00 MiB (250 extents) to <1.98 GiB (506 extents).
  Logical volume a/disco successfully resized.

Por último, vamos a, efectivamente agrandar el disco, para que lo use todo.

resize2fs /dev/mapper/a-disco
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/mapper/a-disco is mounted on /mnt/disco2; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/a-disco is now 518144 (4k) blocks long.

Y con esto, ya estaríamos, vamos a ejecutar "df -h" y vamos a ver que nuestro "a-disco" que está montado en el "/mnt/disco2" ahora es de 2gb.

Filesystem           Size  Used Avail Use% Mounted on
udev                 955M     0  955M   0% /dev
tmpfs                198M  1.4M  196M   1% /run
/dev/sda2             20G  4.6G   14G  25% /
tmpfs                986M     0  986M   0% /dev/shm
tmpfs                5.0M     0  5.0M   0% /run/lock
tmpfs                986M     0  986M   0% /sys/fs/cgroup
/dev/loop0            90M   90M     0 100% /snap/core/8268
/dev/loop1            94M   94M     0 100% /snap/core/8935
/dev/mapper/a-disco  2.0G  3.0M  1.9G   1% /mnt/disco2
tmpfs                198M     0  198M   0% /run/user/1000

Para ir cerrando

Espero que este tutorial, que lo escribí como ayuda memoria mio, te sirva para entender cómo extender un volumen LVM en Linux. Cabe aclarar, que yo ejecute este laboratorio en Ubuntu Server pero es el mismo proceso en el resto de los sistemas operativos Linux.

¿Anduvo, no anduvo? dejame tu comentario.