Saltar al contenido
sudoquest@root
Proxmox

Almacenamiento

Dónde guarda Proxmox cada cosa: los almacenes, un disco nuevo como LVM-Thin, ISO y plantillas, un NAS por NFS y qué hacer cuando local se llena.

35 min de lectura

El Estudio Lumen hace fotos de bodas, de producto y de lo que haga falta, y graba vídeo. Todo eso pesa: su servidor con Proxmox se ha quedado corto. Esta semana les ha llegado un disco nuevo, que alguien ya ha metido en la torre, y tienen un NAS en la red con sitio de sobra. Además, el servidor avisa de que algo está casi lleno. Te toca ordenarlo.

Los almacenes

Proxmox no guarda las cosas «en un disco»: las guarda en almacenes (storage). Un almacén es un sitio con un nombre, un tipo (cómo guarda: en carpetas, en volúmenes de LVM, en ZFS, en un NAS…) y un contenido: qué cosas acepta. Las que vas a ver:

  • Disk image: los discos de las VM.
  • Container: los discos de los contenedores.
  • ISO image: las ISO para instalar VM.
  • Container template: las plantillas para crear contenedores.
  • Backup: las copias de seguridad de VM y contenedores.

Un nodo recién instalado trae dos. local es una carpeta del disco del sistema, /var/lib/vz, para archivos (ISO, plantillas, copias); local-lvm es un LVM-Thin en el resto de ese disco, para los discos de las VM y los contenedores. Están en /etc/pve/storage.cfg, el archivo que manda:

root@pve1:~# cat /etc/pve/storage.cfg
dir: local
path /var/lib/vz
content iso,vztmpl,backup,import

lvmthin: local-lvm
thinpool data
vgname pve
content rootdir,images

Cada almacén es un bloque: tipo: nombre y, debajo, sus opciones. content dice qué guarda, con nombres cortos: images (Disk image), rootdir (Container), iso, vztmpl (Container template) y backup. En la web, en Datacenter ▸ Storage; en la shell, pvesm (storage manager):

root@pve1:~# pvesm status
Name             Type     Status     Total (KiB)      Used (KiB) Available (KiB)        %
local             dir     active        43807744        40791480          758756   93.11%
local-lvm     lvmthin     active        65531904               0        65531904    0.00%

Cada almacén sale también en el árbol, debajo del nodo, con su resumen y lo que guarda.

Un almacén se puede desactivar sin quitarlo: en su Edit, la casilla Enable (en storage.cfg, la línea disable 1; en la shell, pvesm set <nombre> --disable 1). Sigue configurado, pero Proxmox no lo usa: nada se guarda ahí ni se arranca desde ahí hasta que se vuelve a activar (--disable 0, o marcando Enable).

Un disco nuevo: LVM-Thin

Un disco nuevo no sirve de nada hasta que se convierte en un almacén. Primero, ver cuál es. En la web, pve1 ▸ Disks (modelo, número de serie, tamaño y si ya tiene algo); en la shell, lsblk:

root@pve1:~# lsblk
NAME                         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
fd0                            2:0    1    4K  0 disk
sda                            8:0    0  200G  0 disk
vda                          253:0    0  128G  0 disk
├─vda1                       253:1    0 1007K  0 part
├─vda2                       253:2    0    1G  0 part
└─vda3                       253:3    0  127G  0 part
├─pve-swap                 252:0    0    4G  0 lvm  [SWAP]
├─pve-root                 252:1    0 42.7G  0 lvm  /
├─pve-data_tmeta           252:2    0    1G  0 lvm
│ └─pve-data-tpool         252:4    0 62.5G  0 lvm
│   ├─pve-data             252:5    0 62.5G  1 lvm
│   └─pve-vm--100--disk--0 252:6    0   32G  0 lvm
└─pve-data_tdata           252:3    0 62.5G  0 lvm
  └─pve-data-tpool         252:4    0 62.5G  0 lvm
    ├─pve-data             252:5    0 62.5G  1 lvm
    └─pve-vm--100--disk--0 252:6    0   32G  0 lvm

vda es el disco del sistema, con todo su árbol de LVM debajo (en pve-data vive el disco de la VM 100, la galería de la web). sda está vacío: es el nuevo. Antes de tocar un disco, mira bien cuál es (el tamaño, el modelo y el número de serie de la caja, que en Disks salen en su fila).

Qué hacer con él depende de lo que vaya a guardar:

  • LVM-Thin: para discos de VM y contenedores. Cada disco de VM es un volumen que solo ocupa lo que de verdad tiene escrito (thin, fino): puedes dar a las VM más de lo que el disco tiene, y vigilarlo.
  • Directory: el disco con un sistema de archivos (ext4) montado en /mnt/pve/nombre, para archivos: ISO, plantillas, copias.
  • ZFS: sistema de archivos y volúmenes a la vez, con sumas de comprobación de todo; brilla con varios discos (espejo, RAID-Z), y pide memoria.

Para los discos de las VM del estudio, pve1 ▸ Disks ▸ LVM-Thin ▸ Create: Thinpool: el disco, un nombre y Add Storage marcado (así se crea también el almacén). Es una tarea, y su registro cuenta lo que hace LVM:

root@pve1:~# pvesh create /nodes/pve1/disks/lvmthin --device /dev/sda --name fotos --add_storage 1
  Physical volume "/dev/sda" successfully created.
Volume group "fotos" successfully created
Rounding up size to full physical extent <195.88 GiB
Rounding up size to full physical extent 2.00 GiB
Thin pool volume with chunk size 64.00 KiB can address at most <15.88 TiB of data.
Logical volume "fotos" created.
UPID:pve1:000004B2:00001A90:6AC4B898:lvmthincreate:fotos:root@pam:

El disco entero se hace un grupo de volúmenes (fotos) y, dentro, un thin pool que se llama igual. De 200 GiB quedan unos 196 para datos: 2 GiB son de metadatos (dónde está cada trozo de cada disco) y otros 2, su copia de reserva. En storage.cfg aparece el almacén nuevo:

root@pve1:~# cat /etc/pve/storage.cfg
dir: local
path /var/lib/vz
content iso,vztmpl,backup,import

lvmthin: local-lvm
thinpool data
vgname pve
content rootdir,images

lvmthin: fotos
thinpool fotos
vgname fotos
content rootdir,images
nodes pve1

Ejercicio

El disco nuevo

Al servidor del Estudio Lumen le han puesto un disco nuevo, vacío, para los discos de las VM. Mira en la Shell del nodo cuál es y créale un LVM-Thin llamado fotos, con su almacén.

Encendiendo el nodo…

ISO y plantillas

Para instalar una VM hace falta su ISO, y para crear un contenedor, una plantilla. Los dos van en un almacén de archivos (como local). En la web, en local ▸ ISO Images y local ▸ CT Templates:

  • Upload sube un archivo desde tu ordenador (como el de los drivers de un escáner).
  • Download from URL hace que el nodo lo baje directamente: con Query URL pregunta al servidor su nombre y su tamaño, y con Download lo baja (una tarea, con el registro de wget). Mucho más rápido que bajarlo a tu ordenador y subirlo.
  • Templates (en CT Templates) enseña el catálogo de plantillas de Proxmox, por secciones.

Lo bajado, desde la shell:

root@pve1:~# pvesm list local --content iso
Volid                                     Format  Type           Size VMID
local:iso/debian-13.7.0-amd64-netinst.iso iso     iso       792723456

El volid (local:iso/…) es como Proxmox nombra cada cosa de un almacén: el almacén, dos puntos y lo de dentro. Por debajo, un archivo en /var/lib/vz/template/iso/.

Ejercicio

La ISO del instalador

Para instalar una VM nueva hace falta la ISO de Debian 13. Bájala directamente al nodo, a local, desde su URL: https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.7.0-amd64-netinst.iso

Encendiendo el nodo…

Ejercicio

Una plantilla de contenedor

El estudio quiere un contenedor pequeño para sus avisos. Baja a local la plantilla de Debian 13 (la estándar, la de amd64: el servidor es un PC normal).

Encendiendo el nodo…

Un NAS por NFS

Un NAS es un servidor de archivos en la red. Con NFS, Proxmox monta una de sus carpetas compartidas y la usa como un almacén más: ideal para las copias, que así no viven en el mismo servidor que lo que copian. Antes de añadirlo, se puede ver qué comparte:

root@pve1:~# pvesm scan nfs 192.168.60.20
/volume1/estudio 192.168.60.0/24

La carpeta (export) y a quién se la deja. En la web, Datacenter ▸ Storage ▸ Add ▸ NFS: un ID (el nombre del almacén), el Server, el Export (la lista sale sola al escribir el servidor) y el Content. Proxmox la monta en /mnt/pve/ID y crea dentro las carpetas de lo que guarde (dump, para las copias):

root@pve1:~# mount | grep nas
192.168.60.20:/volume1/estudio on /mnt/pve/nas type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,fatal_neterrors=none,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.60.10,local_lock=none,addr=192.168.60.20)

Un almacén NFS es compartido (shared): si un día hay más nodos, todos lo ven a la vez. Si el NAS no contesta, Proxmox no lo deja añadir: storage 'nas' is not online.

Ejercicio

El NAS

El estudio tiene un NAS en 192.168.60.20, que comparte /volume1/estudio por NFS. Añádelo como almacén, con el nombre nas, para guardar copias.

Encendiendo el nodo…

Cuando local se llena

local está en el disco del sistema. Si se llena, se llena también la raíz de Debian, y el nodo empieza a fallar por todas partes. Lo dice pvesm status (el 93 %) y df:

root@pve1:~# df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/pve-root   42G   39G  741M  99% /

¿Qué ocupa tanto? En local ▸ Backups, o en la shell:

root@pve1:~# pvesm list local
Volid                                                    Format  Type             Size VMID
local:backup/vzdump-qemu-100-2026_09_01-21_00_00.vma.zst vma.zst backup    33822867456 100
local:backup/vzdump-qemu-100-2026_10_04-21_00_00.vma.zst vma.zst backup     1825361101 100
local:backup/vzdump-qemu-100-2026_10_05-21_00_00.vma.zst vma.zst backup     1717986918 100

Una copia vieja de septiembre, de más de 30 GiB. Se borra con Remove en Backups, o:

root@pve1:~# pvesm free local:backup/vzdump-qemu-100-2026_09_01-21_00_00.vma.zst
Removed volume 'local:backup/vzdump-qemu-100-2026_09_01-21_00_00.vma.zst'

Ejercicio

local, lleno

local está casi lleno y ya no caben ni las ISO. Mira qué ocupa tanto y bórralo, pero sin perder las copias de esta semana.

Encendiendo el nodo…

Cada cosa en su sitio

Que local no se vuelva a llenar de copias se arregla en su contenido: en Datacenter ▸ Storage ▸ local ▸ Edit ▸ Content, se quita Backup. Las copias irán al almacén que sí las acepta, el del NAS. En la shell:

root@pve1:~# pvesm set local --content iso,vztmpl,import

Quitar un tipo de contenido no borra nada: lo que ya había se queda en la carpeta, solo que Proxmox deja de enseñarlo y de usar ese almacén para eso.

Ejercicio

Las copias, al NAS

El NAS ya está añadido (nas, para copias). Para que local no se vuelva a llenar, que deje de guardar copias: solo ISO, plantillas e importaciones.

Encendiendo el nodo…

Lo que no se borra

En Disks, Wipe Disk borra lo que haya en un disco. Proxmox no deja borrar uno que esté en uso (con un grupo de LVM, un pool o algo montado):

root@pve1:~# pvesh set /nodes/pve1/disks/wipedisk --disk /dev/sda
disk/partition '/dev/sda' has a holder

Pero un disco que no se use sí lo borra, sin más preguntas que su confirmación: el día que borres el disco equivocado, lo que tuviera se pierde.

Quitar un almacén (Remove en Datacenter ▸ Storage, o pvesm remove) es otra cosa: solo lo quita de storage.cfg. Los datos siguen en el disco, pero las VM que tienen ahí sus discos dejan de arrancar:

root@pve1:~# qm start 100
storage 'local-lvm' does not exist

Se arregla volviendo a añadirlo igual (pvesm add lvmthin local-lvm --vgname pve --thinpool data --content rootdir,images), pero mejor no llegar ahí.

Resumen

  • Proxmox guarda en almacenes: un tipo (Directory, LVM-Thin, ZFS, NFS…) y un contenido (discos de VM, de contenedores, ISO, plantillas, copias). Están en /etc/pve/storage.cfg; en la shell, pvesm.
  • local (/var/lib/vz) guarda archivos; local-lvm (LVM-Thin), los discos de las VM.
  • Un disco nuevo se mira en Disks (o lsblk) y se convierte en almacén: LVM-Thin para discos de VM, Directory para archivos, ZFS para lo que pide integridad.
  • Las ISO y las plantillas: Upload, Download from URL (las baja el nodo) y Templates. Ojo con amd64 y arm64.
  • Un NAS por NFS es un almacén compartido: para las copias, lejos del servidor que copian.
  • Si local se llena, mira qué ocupa (pvesm list) y borra lo viejo; quítale Backup del contenido para que no vuelva a pasar.
  • Wipe Disk no borra un disco en uso, pero sí el equivocado. Quitar un almacén no borra datos, pero deja sin arrancar las VM que lo usan.