Migrar el almacenamiento de un contenedor a LVM_thin en PROXMOX

Como ya os contamos en un post anterior, antiguamente, el almacenamiento LVM Thin no existía y las imágenes de disco de máquinas virtuales y contenedores se guardaban como archivos normales (.qcow2, .raw) en subdirectorios con el identificador del contenedor o máquina virtual alojados dentro del directorio /var/lib/vz.

En este post, os vamos a mostrar, con un ejemplo práctico, como migrar el almacenamiento de un contenedor a LVM_thin:

Supongamos que tenemos un contenedor cuyo identificador es 105 y queremos migrar su almacenamiento a LVM_thin.

Lo primero que vamos a hacer es verificar que dispoenmos de un almacenamiento LVM_thin en nuestro servidor. Para ello, usamos el comando pvesm status:

pvesm status
Name                Type     Status           Total            Used       Available        %
local                dir     active       958743672       371119612       538848892   38.71%
local-backup         dir     active      1921724696       633274696      1190757940   32.95%
local-lvm        lvmthin     active      1073741824        21796959      1051944864    2.03%
nas-backup           nfs     active      7198859264      6027270144       862897152   83.73%

En este caso, comprobamos que sí lo tenemos puesto que hay una línea que dice:

local-lvm        lvmthin     active      1073741824        21796959      1051944864    2.03%

Y que tiene espacio disponible (Tan sólo tiene ocupado un 2.03%).

Bien, pues una vez comprobado, verificamos el almacenamiento actual del contenedor:

pct config 105
arch: amd64
cores: 1
description: features%3A nesting=1%0A
hostname: fogserver
lock: disk
memory: 1024
nameserver: 172.19.144.8 172.19.144.3 172.19.144.2
net0: name=eth0,bridge=vmbr0,hwaddr=AA:C7:AB:97:CA:1C,ip=172.19.144.68/23,type=veth
onboot: 1
ostype: debian
protection: 1
rootfs: local:105/vm-105-disk-0.raw,size=345G
searchdomain: valledeljerte3
swap: 1024
lxc.mount.entry: /dev/net dev/net none bind,create=dir
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.apparmor.profile: unconfined

Como podemos ver en la configuración del contenedor, éste tiene una imagen de disco en el almacenamiento local:

rootfs: local:105/vm-105-disk-0.raw,size=345G

Así que paramos el contenedor:

pct shutdown 105

Una vez detenido, movemos el volumen al almacenamiento local-lvm (LVM_Thin):

pct move-volume 105 rootfs local-lvm
  Logical volume "vm-105-disk-0" created.
Creating filesystem with 90439680 4k blocks and 22609920 inodes
Filesystem UUID: a74884a2-ac96-4bff-a6e5-7c606fb0680b
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968

Donde:

  • 105: ID del contenedor
  • rootfs: volumen que queremos mover
  • local-lvm: almacenamiento destino

Bien, pues una vez terminado el proceso, comprobamos que el contenedor apunte al nuevo volumen:

pct config 105

Deberíamos ver algo como:

rootfs: local-lvm:vm-105-disk-0,size=345G

Lo que significa que todo ha ido bien.

Ahora bien, si al ejecutar pct config, veis una línea como la siguiente:

unused0: local:105/vm-105-disk-1.raw

Significa que el almacenamiento antiguo sigue configurado en el contenedor como un almacenamiento sin usar. Para eliminarlo de la configuración, tan sólo tenemos que usar el comando:

pct set 105 --delete unused0

Para finalizar, arrancamos de nuevo el contenedor:

pct start 105

¿Y si el contenedor tiene volúmenes adicionales (como mp0, mp1)?
Podemos moverlos del mismo modo con:

pct move-volume 105 mp0 local-lvm
Be the first to comment