Skip to main content

Ampliación de disco en sistema virtualizado KVM (proxmox)

Introducción

En un escenario de uso de discos virtuales, como KVM, Proxmox y otros, a veces es necesario una ampliación del disco. Si usamos LVM esto es posible y sencillo.

Convenciones

Ciertas cosas que hay en esta entrada, así como en otras, requieren un conocimiento previo. No es un sitio para copiar y pegar sino para entender y hacer

No siempre es el disco vda, no siempre es la partición 1, y así sucesivamente.

Ampliación de una disco virtual KVM

La ampliación de un disco LVM es posible una vez que hemos realizado el cambio virtual del tamaño de la unidad LVM.

En el caso de Proxmox acudimos a la administración de nuestro proxmox

  • Seleccionamos el VPS
  • Click en **Resize Disk"
  • Incrementamos el tamaño.

Si el aumento de tamaño implica un tamaño final mayor de 2 TiB deberás tener el esquema de particiones GPT de lo contrario, tendrás que modificar bajo tu responsabilidad el esquema MBR a GPT. Esta entrada no trata de eso, y para ello es aconsejable el uso de Gparted Live, lo cual no siempre es posible.

El artículo interpreta que conoces el uso de ciertos comando, que sustituirán el dispositivo (disco) por el tuyo, y que sabes como obtener el esquema de tu disco (particiones)

Consejo sobre particionamiento durante la instalación

Es aconsejable el uso de GPT y de ello hablamos en nuestra wiki, Instalación GPT con el instalador Centos 7 en discos < 2 TiB

Resize Disk - Proxmox

Verirficación en un KVM basado en LVM

Una vez que hemos ampliado el disco, podemos verificar el cambio de tamaño en nuestro VPS. Esto funcionará hasta que reiniciemos la máquina. Después ya no nos informará.

vda, vdb, sda, ... son nombres de dispositivos. Debes consultar cuales son tus dispositivos de disco usando fdisk -l y usar el apropiado en el comando

# dmesg | grep vda
...
[  222.436098] vda: detected capacity change from 32212254720 to 37580963840

Imprimir la tabla actual del disco

# fdisk -l /dev/vda | grep ^/dev
/dev/vda1   *        2048     1026047      512000   83  Linux
/dev/vda2         1026048    62914559    30944256   8e  Linux LVM

Conocer el uso de las particiones en el sistema LVM

# pvscan
  PV /dev/vda2   VG centos          lvm2 [<29,51 GiB / 40,00 MiB free]
  Total: 1 [<29,51 GiB] / in use: 1 [<29,51 GiB] / in no VG: 0 [0   ]
# lvscan
  ACTIVE            '/dev/centos/swap' [3,00 GiB] inherit
  ACTIVE            '/dev/centos/root' [<26,47 GiB] inherit

Ampliar la partición física

parted /dev/vda
GNU Parted 3.1
Usando /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 37,6GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Numero  Inicio  Fin     Tamaño  Typo     Sistema de ficheros  Banderas
 1      1049kB  525MB   524MB   primary  xfs                  arranque
 2      525MB   32,2GB  31,7GB  primary                       lvm

(parted) resizepart 2 100%
(parted) quit

Mensajes de error

A veces, es posible que tras un acceso con parted a nuestro dispositivo, podemos encontrar mensajes relativos a problemas derivados de los instaladores de Centos, de Ubuntu, según cuándo y cómo se hizo la partición que estamos tratando de modificar.

Es importante leer y comprender estos mensajes, o corremos el riesgo de perder nuestros datos.

En el caso de abajo, viene del instalador de Centos 7 el cual no hizo del todo bien su trabajo.

Error: La copia de la tabla GPT no está al final del disco, como debería ser.  Esto quiere decir que otro sistema operativo cree que el disco es más pequeño.  ¿Lo quiere arreglar moviendo la
copia al final (y borrando la copia vieja)?
Arreglar/Fix/Descartar/Ignore/Cancelar/Cancel? Fix                        
Aviso: Not all of the space available to /dev/vda appears to be used, you can fix the GPT to use all of the space (an extra 3005218816 blocks) or continue with the current setting?                                          
Arreglar/Fix/Descartar/Ignore? F 
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 1571GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Numero  Inicio  Fin     Tamaño  Sistema de ficheros  Nombre  Banderas
 1      1049kB  2097kB  1049kB                               bios_grub
 2      2097kB  1076MB  1074MB  xfs
 3      1076MB  32,2GB  31,1GB                               lvm

Asignar el nuevo tamaño al volumen físico de LVM

pvresize /dev/vda2
  Physical volume "/dev/vda2" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

Redimensionar el volumen lógico de LVM al nuevo tamaño

Todo para una particion

[root@kvm476 httpd]# lvresize --extents +100%FREE --resizefs /dev/centos/root
  Size of logical volume centos/root changed from <26,47 GiB (6776 extents) to <31,51 GiB (8066 extents).
  Logical volume centos/root successfully resized.
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=1734656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=6938624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=3388, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 6938624 to 8259584
[root@kvm476 httpd]# df -h
S.ficheros                                                  Tamaño Usados  Disp Uso% Montado en
devtmpfs                                                      2,9G      0  2,9G   0% /dev
tmpfs                                                         2,9G      0  2,9G   0% /dev/shm
tmpfs                                                         2,9G    65M  2,8G   3% /run
tmpfs                                                         2,9G      0  2,9G   0% /sys/fs/cgroup
/dev/mapper/centos-root                                        32G    25G  7,3G  77% /
/dev/vda1                                                     497M   256M  241M  52% /boot
stor01.tamainut.net:/srv/storage/backup/kvm476/backupremote    32T    30T 1014G  97% /backupremote2
tmpfs                                                         581M      0  581M   0% /run/user/0

Resize Volumen Lógico por tamaño extacto a añadir

En un sistema con distintas particiones es diferente:

❯ df -h
Filesystem                                                                                    Size  Used Avail Use% Mounted on
tmpfs                                                                                         392M  1.3M  390M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv                                                              10G  2.7G  7.4G  27% /
/dev/disk/by-id/dm-uuid-LVM-c0exIQsrkEu9W74ltbUferOjY7bxLxtDCc3OvS3nDmQvIcUKcNPxopClK4fEszol  6.0G  5.6G  450M  93% /usr
tmpfs                                                                                         2.0G     0  2.0G   0% /dev/shm
tmpfs                                                                                         5.0M     0  5.0M   0% /run/lock
/dev/vda2                                                                                     2.0G  131M  1.7G   8% /boot
/dev/mapper/ubuntu--vg-lv--home                                                               5.0G   88M  5.0G   2% /home
/dev/mapper/ubuntu--vg-lv--var                                                                6.0G  1.3G  4.8G  21% /var
tmpfs                                                                                         392M  4.0K  392M   1% /run/user/0

❯ dmesg | grep vda
[40225.482258] virtio_blk virtio1: [vda] new size: 83886080 512-byte logical blocks (42.9 GB/40.0 GiB)
[40225.482268] vda: detected capacity change from 67108864 to 83886080
❯ lvscan
  ACTIVE            '/dev/ubuntu-vg/ubuntu-lv' [10.00 GiB] inherit
  ACTIVE            '/dev/ubuntu-vg/lv-var' [6.00 GiB] inherit
  ACTIVE            '/dev/ubuntu-vg/lv-usr' [6.00 GiB] inherit
  ACTIVE            '/dev/ubuntu-vg/lv-home' [5.00 GiB] inherit
❯ pvscan
  PV /dev/vda3   VG ubuntu-vg       lvm2 [<30.00 GiB / <3.00 GiB free]
  Total: 1 [<30.00 GiB] / in use: 1 [<30.00 GiB] / in no VG: 0 [0   ]
❯ parted /dev/vda
GNU Parted 3.4
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Warning: Not all of the space available to /dev/vda appears to be used, you can fix the GPT to use all of the space (an extra 16777216
blocks) or continue with the current setting?
Fix/Ignore? F
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  2150MB  2147MB  ext4
 3      2150MB  34.4GB  32.2GB

(parted) resizepart 3 100%
(parted) quit
Information: You may need to update /etc/fstab.

❯ pvresize /dev/vda3
  Physical volume "/dev/vda3" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

❯ lvextend -L+2G /dev/ubuntu-vg/lv-usr
  Size of logical volume ubuntu-vg/lv-usr changed from 6.00 GiB (1536 extents) to 8.00 GiB (2048 extents).
  Logical volume ubuntu-vg/lv-usr successfully resized.

# Es una partición xfs por eso usamos xfs_growfs
❯ xfs_growfs /dev/ubuntu-vg/lv-usr
meta-data=/dev/disk/by-id/dm-uuid-LVM-c0exIQsrkEu9W74ltbUferOjY7bxLxtDCc3OvS3nDmQvIcUKcNPxopClK4fEszol isize=512    agcount=4, agsize=393216 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=1572864, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 1572864 to 2097152
❯ df -h
Filesystem                                                                                    Size  Used Avail Use% Mounted on
tmpfs                                                                                         392M  1.3M  390M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv                                                              10G  2.7G  7.4G  27% /
/dev/disk/by-id/dm-uuid-LVM-c0exIQsrkEu9W74ltbUferOjY7bxLxtDCc3OvS3nDmQvIcUKcNPxopClK4fEszol  8.0G  5.6G  2.5G  70% /usr
tmpfs                                                                                         2.0G     0  2.0G   0% /dev/shm
tmpfs                                                                                         5.0M     0  5.0M   0% /run/lock
/dev/vda2                                                                                     2.0G  131M  1.7G   8% /boot
/dev/mapper/ubuntu--vg-lv--home                                                               5.0G   88M  5.0G   2% /home
/dev/mapper/ubuntu--vg-lv--var                                                                6.0G  1.3G  4.8G  21% /var
tmpfs

Actualizacion 2024-03-21

En nuevas versiones de parted, por ejemplo en ALmalinux 8, no es posible usar el comando como lo hacia anteriormente.

Debes de hacerlo directamente en el shell

  • sd, vd, el prefijo que corresponda
parted /dev/sdx --script resizepart NumeroParticion 100%
Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.