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
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.