Recuperación de espacio en disco

Administrar el almacenamiento en Proxmox VE puede ser un desafío, especialmente cuando el uso del espacio en disco no coincide con las expectativas. Esta guía proporciona comandos prácticos para analizar el almacenamiento de Proxmox desde la línea de comandos de Linux, identificar el uso del espacio por máquinas virtuales y contenedores, detectar el espacio de almacenamiento no contabilizado y solucionar problemas comunes de almacenamiento para ayudar a optimizar su entorno de Proxmox.

Comprensión de la arquitectura de almacenamiento de Proxmox

Proxmox VE utiliza diferentes backends de almacenamiento, cada uno con comandos específicos para el análisis. Los tipos de almacenamiento comunes incluyen directorios locales, LVM-thin, ZFS, Ceph y almacenamiento en red. Estar familiarizado con su configuración de almacenamiento específica es esencial para un análisis preciso.

Antes de sumergirse en los comandos, es importante comprender cómo Proxmox organiza típicamente el almacenamiento. Dependiendo de su versión de Proxmox, el almacenamiento puede estar ubicado en varias ubicaciones clave:

  • /var/lib/vz/images/ – Contiene imágenes de disco de VM (qcow2, raw), organizadas por ID de VM

  • /var/lib/lxc/ – Contiene datos de contenedores LXC, organizados por ID de contenedor

  • /var/lib/vz/template/iso/ – Almacena imágenes ISO

  • /var/lib/vz/template/cache/ – Almacena plantillas de contenedores

  • /var/lib/vz/dump/ – Contiene copias de seguridad de VM y contenedores

La configuración de almacenamiento se puede ver utilizando el comando del administrador de almacenamiento de Proxmox:

# pvesm status
  1. Ver la configuración de almacenamiento de Proxmox

pvesm status brinda una descripción general de los grupos de almacenamiento .

# pvesm status
Name               Type     Status           Total            Used       Available        %
Storage             lvm     active     18750500864      5041553408     13708947456   26.89%
local               dir     active        57225328         5780740        48505300   10.10%
local-lvm       lvmthin     active       147275776         3136974       144138801    2.13%
storageprox         dir     active     55162072064      1063149568     54098381824    1.93%

Este comando muestra todos los grupos de almacenamiento configurados en su entorno Proxmox, mostrando sus tipos, estado, capacidad total, espacio utilizado, espacio disponible y porcentaje de uso. Los porcentajes elevados (superiores al 80 %) deben analizarse.

  1. Verificar el uso general del espacio en disco

df -h muestra el uso del espacio en disco para todos los sistemas de archivos montados en un formato legible por humanos. Un ejemplo de salida podría mostrar:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/pve-root   55G  5.6G   47G  11% /

Los porcentajes de uso altos (superiores al 85%) indican sistemas de archivos que necesitan atención. Para un rendimiento óptimo, la mayoría de los sistemas de archivos deben tener al menos un 10-15% de espacio libre.

  1. Listar todas las máquinas virtuales

qm list lista todas las máquinas virtuales con sus ID, nombres, estado, asignación de memoria y tamaño de disco. Aquí hay un ejemplo de salida:

# qm list
VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID       
100 VM1                  stopped    2048              32.00 0         
101 VM2                  running    1024              15.00 1119524   
102 VM3                  running    8192             150.00 309833    
106 VM4                  running    2048              32.00 3812960   
107 VM5                  running    6000              32.00 3839516   
108 VM6                  running    4000              50.00 1743913   
109 VM7                  stopped    8192              60.00 0

Esta salida muestra todas las VM con sus tamaños de disco asignados, lo que ayuda a identificar qué VM tienen grandes asignaciones de almacenamiento que podrían ser candidatas para la optimización.

  1. Listar todos los contenedores

pct list todos los contenedores LXC en el sistema. Ejemplo de salida:

# pct list
VMID       Status     Lock         Name                
VMID       Status     Lock         Name                
106        stopped                 CT106    
170        running                 CT170   
180        running                 CT180              
181        running                 CT181           
182        running                 CT182           
183        running                 CT183           
184        running                 CT184           

Esto muestra los ID de contenedor, el estado y los nombres, lo cual es útil para identificar qué contenedores examinar para el uso del almacenamiento.

  1. Encontrar imágenes de disco de VM grandes

Localizar imágenes de VM por tamaño.

# find /var/lib/vz/images -type f -name "*.qcow2" -o -name "*.raw" | xargs du -h | sort -hr

Este comando encuentra todas las imágenes de disco QCOW2 y RAW en la ubicación de almacenamiento de VM y las ordena por tamaño (la más grande primero). Según la salida anterior, podría encontrar algo como:

62G     /var/lib/vz/images/109/vm-109-disk-0.qcow2

Esto indica que VM7 (ID 109) tiene una imagen de disco de 62 GB, que es una porción significativa del almacenamiento.

  1. Verificar el almacenamiento del contenedor LXC

# du -sh /var/lib/lxc/*

Este comando verifica el espacio en disco utilizado por todos los contenedores LXC. La mayoría de las instalaciones de Proxmox almacenan contenedores en el directorio /var/lib/lxc/.

  1. Hallar instantáneas de VM que ocupan mucho espacio

# for VM in $(qm list | tail -n +2 | awk '{print $1}'); do
    echo "VM $VM:";
    qm listsnapshot $VM 2>/dev/null;
done

Este comando permite encontrar instantáneas que consumen espacio, lista las instantáneas para todas las VM. Un ejemplo de salida para una VM específica podría verse así:

`-> fresh-install               2025-01-23 11:28:52     no-description
 `-> LXready                    2025-03-28 11:45:52     no-description
  `-> current                                           You are here!

Múltiples instantáneas en una cadena pueden consumir un espacio significativo, especialmente para las VM con alta actividad de disco. Las instantáneas deben revisarse regularmente y eliminarse las innecesarias.

  1. Hallar archivos de copias de seguridad grandes

# find /var/lib/vz/dump -type f -name "*.tar" -o -name "*.vma" | xargs du -h | sort -hr

Este comando localiza los archivos de copia de seguridad en la ubicación de copia de seguridad estándar y los ordena por tamaño. Las copias de seguridad pueden consumir un espacio significativo y podrían ser candidatas para la limpieza si son antiguas o ya no son necesarias.

  1. Encontrar archivos ISO grandes

# find /var/lib/vz/template/iso -type f -name "*.iso" | xargs du -h | sort -hr

Este comando lista todas las imágenes ISO ordenadas por tamaño. Las imágenes ISO pueden ser bastante grandes y, a menudo, se olvidan después de la instalación de la VM, ocupando un valioso espacio.

  1. Encontrar plantillas de contenedor no utilizadas

# find /var/lib/vz/template/cache -type f | xargs du -h | sort -hr

Este comando lista las plantillas de contenedor por tamaño. Las plantillas que ya no son necesarias se pueden eliminar para recuperar espacio.

  1. Encontrar «espacio fantasma»

# df -h /
# du -sh --exclude=/proc --exclude=/sys --exclude=/run --exclude=/dev /

Compare estas salidas para identificar discrepancias. Si df muestra significativamente más espacio utilizado de lo que informa du, podría haber archivos que se eliminan pero que aún están abiertos por procesos u otros metadatos del sistema de archivos que consumen espacio.

  1. Encontrar el consumo de espacio oculto

# lsof | grep deleted | grep -E '(vz|lxc)'

Este comando muestra los archivos que se han eliminado pero que aún están abiertos por procesos, lo que puede causar «espacio fantasma» no visible a través de los listados de directorios normales.

Atención

Los diferentes tipos de almacenamiento de Proxmox requieren diferentes enfoques de análisis. Para el almacenamiento basado en directorio, los comandos estándar de Linux como df y du funcionan bien. Para el aprovisionamiento ligero de LVM, necesitará comandos LVM específicos. El almacenamiento ZFS requiere comandos específicos de ZFS, mientras que el almacenamiento Ceph utiliza herramientas Ceph. Siempre identifique su tipo de almacenamiento con pvesm status antes de continuar con el análisis.

Peligro

Siempre cree copias de seguridad. Algunas acciones, como eliminar instantáneas o eliminar imágenes de disco, no se pueden deshacer y pueden provocar la pérdida de datos si se realizan incorrectamente.

Después de analizar el entorno Proxmox con los comandos anteriores, aquí hay métodos efectivos para recuperar espacio que se aplican a la mayoría de las instalaciones de Proxmox:

  1. Eliminar instantáneas de VM que ya no son necesarias

# qm listsnapshot VMID
# qm delsnapshot VMID NOMBREINSTANTANEA

El primer comando lista las instantáneas para una VM específica, y el segundo comando elimina una instantánea con nombre. Las instantáneas pueden consumir un espacio significativo, especialmente para las VM grandes o aquellas con alta actividad de escritura en disco. Múltiples instantáneas en pueden acumular un uso sustancial del disco con el tiempo.

  1. Eliminar imágenes ISO no utilizadas

# find /var/lib/vz/template/iso -type f -name "*.iso" | xargs du -h | sort -hr
# rm /var/lib/vz/template/iso/unused-iso.iso

Primero, liste las ISO por tamaño, luego elimine aquellas que ya no son necesarias. Las imágenes ISO a menudo se olvidan después de la instalación de la VM y pueden consumir gigabytes de espacio. Siempre verifique que una ISO no esté en uso por ninguna VM antes de eliminarla.

  1. Eliminar copias de seguridad que ya no son necesarias

# find /var/lib/vz/dump -type f -mtime +30 | xargs du -h | sort -hr
# rm /var/lib/vz/dump/old-backup.vma

El primer comando encuentra los archivos de copia de seguridad con una antigüedad superior a 30 días y muestra sus tamaños. Las copias de seguridad regulares son esenciales, pero las copias de seguridad antiguas a menudo se pueden eliminar de forma segura de acuerdo con su política de retención. Considere mantener las copias de seguridad mensuales durante períodos más largos mientras elimina las copias de seguridad más frecuentes después de cierto tiempo.

  1. Eliminar plantillas de contenedor que ya no se utilizan

# find /var/lib/vz/template/cache -type f | xargs du -h | sort -hr
# rm /var/lib/vz/template/cache/unused-template.tar.xz

Las plantillas de contenedor se descargan al crear nuevos contenedores, pero rara vez se eliminan posteriormente. Si no planea crear contenedores del mismo tipo nuevamente, estas plantillas se pueden eliminar de forma segura para recuperar espacio.

  1. Recuperar espacio dentro de las imágenes de disco de una VM

# qm stop VMID
# cd /var/lib/vz/images/VMID/
# cp vm-VMID-disk-0.qcow2 vm-VMID-disk-0.qcow2.bak
# qemu-img convert -O qcow2 vm-VMID-disk-0.qcow2 vm-VMID-disk-0-new.qcow2
# mv vm-VMID-disk-0-new.qcow2 vm-VMID-disk-0.qcow2
# qm start VMID

Este procedimiento compacta una imagen qcow2 para recuperar espacio de los archivos eliminados dentro de la VM. Cuando los archivos se eliminan dentro de una VM, la imagen de disco no se reduce automáticamente. Este proceso de conversión reconstruye la imagen, omitiendo los bloques no utilizados. Siempre detenga la VM primero y haga una copia de seguridad antes de intentar esta operación.

  1. Eliminar o rotar archivos de registro grandes

# find /var/log -type f -name "*.log" -o -name "*.gz" | xargs du -h | sort -hr | head -n 20
# journalctl --vacuum-time=30d

El primer comando encuentra archivos de registro grandes, mientras que el segundo limita los registros del journal systemd a los últimos 30 días. Los archivos de registro pueden acumularse con el tiempo y consumir un espacio significativo, especialmente en sistemas ocupados o si la rotación de registros no está configurada correctamente.

  1. Eliminar máquinas virtuales no utilizadas

# qm list
# qm destroy VMID --purge

Primero, liste todas las VM para identificar los candidatos para la eliminación, luego use el comando destroy con la opción purge para eliminar por completo una VM y sus discos asociados. Solo haga esto para las VM que realmente ya no son necesarias.

  1. Optimizar el almacenamiento ZFS

# zpool list
# zfs list
# zpool trim poolname

Si su sistema Proxmox usa almacenamiento ZFS, el comando trim ayuda a recuperar espacio de los archivos eliminados en los SSD. Además, considere ajustar la configuración de compresión o ejecutar una operación de limpieza para verificar la integridad de los datos.

Conclusión

Monitorear y administrar el almacenamiento en entornos Proxmox requiere comprender tanto los mecanismos de almacenamiento específicos de Proxmox como los conceptos generales de administración de archivos de Linux. Los comandos de esta guía ayudan a identificar dónde se está utilizando el almacenamiento, detectar anomalías y recuperar espacio para mantener el sistema Proxmox funcionando de manera eficiente.

Las prácticas de mantenimiento regulares deben incluir:

  • Optimización de la imagen de disco de VM para máquinas virtuales grandes

  • Gestión y consolidación de instantáneas regulares

  • Revisión periódica de imágenes ISO y plantillas de contenedor

  • Implementación de una política de retención de copias de seguridad para administrar automáticamente las copias de seguridad antiguas

  • Monitoreo del uso real del disco frente al espacio asignado, especialmente con el aprovisionamiento ligero

Al incorporar estos comandos en sus procedimientos de mantenimiento de rutina, mantendrá un uso óptimo del almacenamiento y evitará emergencias de espacio en disco en su entorno Proxmox.

Preguntas frecuentes (FAQ)

  1. ¿Por qué la interfaz web de Proxmox muestra un uso de disco diferente al de los comandos de la CLI?

La interfaz web de Proxmox puede informar valores diferentes a los comandos de la CLI por varias razones: el aprovisionamiento ligero puede mostrar el espacio asignado en lugar del uso real, la interfaz web puede usar datos en caché que no reflejan los cambios recientes y la interfaz de usuario web puede incluir cálculos de sobrecarga que las herramientas de la CLI no muestran. Para obtener los datos más precisos, confíe en los comandos de la CLI proporcionados en esta guía.

  1. ¿Cómo afectan las instantáneas de VM al uso del espacio en disco?

Las instantáneas de VM crean archivos delta que rastrean los cambios desde la imagen base o la instantánea anterior. Si bien parecen pequeños inicialmente, pueden crecer sustancialmente a medida que ocurren más cambios en la VM. Múltiples instantáneas pueden conducir a un uso significativo del espacio, especialmente para las VM con alta actividad de disco.

  1. ¿Qué causa el «espacio fantasma» donde el uso del disco no coincide con los archivos visibles?

El espacio fantasma generalmente ocurre cuando: 1) Los archivos se eliminan pero aún están abiertos por procesos en ejecución, 2) Los archivos de diario o registro están usando espacio en los metadatos del sistema de archivos, 3) Los metadatos de instantáneas o LVM están consumiendo espacio, o 4) Corrupción del sistema de archivos. Use el comando lsof | grep deleted para identificar los archivos eliminados abiertos, que son una causa común del espacio fantasma.

  1. ¿Cómo puedo reducir el tamaño de las imágenes de disco de VM sin pérdida de datos?

Para reducir las imágenes de disco de VM, primero limpie dentro del sistema operativo invitado eliminando archivos innecesarios, ejecutando utilidades de limpieza de disco y poniendo a cero el espacio libre usando herramientas como zerofree (Linux) o SDelete (Windows). Luego, para las imágenes qcow2, detenga la VM y use qemu-img convert -O qcow2 source.qcow2 optimized.qcow2 para crear una imagen más compacta.

  1. ¿Es arriesgado el aprovisionamiento ligero en el almacenamiento basado en LVM para la administración del almacenamiento?

El aprovisionamiento ligero le permite asignar más almacenamiento del que está físicamente disponible, lo que puede ser eficiente pero requiere una supervisión cuidadosa. Un sistema típico podría mostrar el almacenamiento ligero LVM con un bajo porcentaje de uso, mientras que el almacenamiento físico subyacente podría estar casi lleno. Esta discrepancia es común con el aprovisionamiento ligero y muestra por qué es fundamental monitorear el uso real del disco físico (con df -h). Siempre configure alertas para el alto uso del disco físico para evitar condiciones inesperadas de falta de espacio, ya que estas pueden causar fallas en la VM o corrupción de datos.

Con información de LinuxConfig.org