Primo Studios Web Blog

Proxmox · 2 min

Dos nodos Proxmox, un mismo número de contenedor y las copias mezcladas en el PBS

Tenía una tarea de copias que fallaba solo algunos días, y siempre con el mismo contenedor. El error era este:

unable to acquire backup group lock ".../ct-103"

Los demás contenedores de la misma tarea se copiaban bien. Y entre semana, ni un fallo: solo los domingos.

La pista: el número del contenedor

En Proxmox cada máquina o contenedor tiene un número (el VMID). Dentro de un nodo es único, pero entre nodos que no están en clúster nadie impide que se repita. Y yo tenía dos nodos independientes con un contenedor 103 cada uno: en uno era el proxy inverso; en el otro, el contenedor de descargas.

Los dos nodos guardaban sus copias en el mismo almacén del Proxmox Backup Server, sin separar. El PBS organiza las copias por tipo y número: ct/103. Así que los dos contenedores 103 escribían en el mismo grupo.

Los domingos coincidían las dos tareas a la misma hora. Una cogía el bloqueo del grupo y la otra fallaba. El resto de la semana solo corría una, y no había error.

El problema de verdad no era el bloqueo

Lo primero que hice fue mover una de las tareas 40 minutos. El error desapareció, pero eso solo tapaba el síntoma: las copias de dos contenedores distintos seguían mezcladas en el mismo grupo. Una con cifrado y la otra sin él, además.

Si un día hubiera necesitado restaurar «la 103», la lista de copias habría tenido de las dos, ordenadas por fecha, sin nada que dijera cuál era cuál. Restaurar la que no es encima de un servicio que funciona es de esos errores que no quieres descubrir en una emergencia.

El arreglo

Dos opciones, y valen las dos:

  • Numerar por nodo. Es lo que hice: cada nodo usa su propia centena (1XX, 2XX, 9XX…). Proxmox permite cambiar el número de un contenedor con una copia y restauración con otro ID, o a mano con el contenedor parado. Ventaja extra: con ver el número sabes en qué nodo vive.
  • Un espacio de nombres (namespace) por nodo en el PBS. Desde la versión 2.2, en el almacenamiento de cada nodo puedes indicar un namespace distinto. Así, aunque los números se repitan, cada nodo guarda en su carpeta.

Lo ideal es hacer las dos cosas. Y después revisar el almacén: las copias antiguas mezcladas siguen ahí, y conviene identificarlas (por tamaño, por la nota o por el cifrado) antes de que caduquen o de que alguien restaure una.

Lo que me llevé de esto

  • Un error de bloqueo que solo sale ciertos días suele ser dos tareas que coinciden. Compara los horarios de todos los nodos, no solo del que falla.
  • Varios nodos sin clúster contra el mismo PBS: o números únicos, o un namespace por nodo. Si no, tarde o temprano dos máquinas comparten historial.
  • Arreglar el síntoma (mover la hora) no es arreglar el problema. Pregúntate qué más está pasando en silencio.