<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Qm on inetshell</title><link>https://inet.sh/es/tags/qm/</link><description>Recent content in Qm on inetshell</description><generator>Hugo</generator><language>es</language><lastBuildDate>Fri, 25 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://inet.sh/es/tags/qm/index.xml" rel="self" type="application/rss+xml"/><item><title>Proxmox: VM is locked (snapshot-delete), no puedo borrar el snapshot</title><link>https://inet.sh/es/posts/proxmox/vm-is-locked-snapshot-delete/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/es/posts/proxmox/vm-is-locked-snapshot-delete/</guid><description>Un snapshot de Proxmox VE que no se deja borrar y deja la VM con &amp;#39;VM is locked (snapshot-delete)&amp;#39;: qm unlock, qm delsnapshot --force, limpiar el snapshot huérfano en ZFS, LVM-thin, Ceph o qcow2, y editar el .conf a mano si hace falta. También para LXC con pct.</description><content:encoded><![CDATA[<h2 id="en-corto">En corto</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">qm unlock <span class="m">102</span>
</span></span><span class="line"><span class="cl">qm delsnapshot <span class="m">102</span> initial_snapshot --force
</span></span></code></pre></td></tr></table>
</div>
</div><p><code>--force</code> quita el snapshot del archivo de configuración aunque el snapshot del disco ya no exista o falle al borrarse. En contenedores es lo mismo con <code>pct unlock</code> y <code>pct delsnapshot 102 &lt;nombre&gt; --force</code>.</p>
<h2 id="el-error">El error</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">TASK ERROR: VM is locked (snapshot-delete)
</span></span></code></pre></td></tr></table>
</div>
</div><p>Y si miras el intento anterior en el log de tareas, el fallo de fondo suele ser que el storage ya no tiene ese snapshot:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">could not find any snapshots to destroy; check snapshot names.      # ZFS
</span></span><span class="line"><span class="cl">Failed to find logical volume &#34;pve/snap_vm-102-disk-0_initial_snapshot&#34;   # LVM-thin
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="por-qué-pasa">Por qué pasa</h2>
<p>Borrar un snapshot son dos pasos: primero se destruyen los snapshots de cada disco en el storage (<code>zfs destroy</code>, <code>lvremove</code>, <code>rbd snap rm</code>, snapshot interno del qcow2) y después se quita la sección <code>[nombre]</code> de <code>/etc/pve/qemu-server/102.conf</code>. Mientras tanto Proxmox escribe <code>lock: snapshot-delete</code> en ese archivo.</p>
<p>Si el primer paso falla, el lock se queda y cada reintento muere en el mismo punto. Causas típicas:</p>
<ul>
<li>Alguien borró el snapshot en el storage por fuera (<code>zfs destroy</code>, una política de replicación o de limpieza).</li>
<li>La tarea se interrumpió (reinicio del nodo, storage que se cayó a mitad).</li>
<li>El disco se movió a otro storage y el snapshot se quedó en el anterior.</li>
</ul>
<h2 id="procedimiento">Procedimiento</h2>
<ol>
<li>
<p>Confirma que no hay una tarea viva para esa VM: en la GUI, <strong>Tasks</strong> del nodo, la tarea de borrado tiene que estar terminada o fallida. Un <code>qm unlock</code> con la tarea corriendo puede corromper el snapshot.</p>
</li>
<li>
<p>Quita el lock y fuerza el borrado:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">qm unlock <span class="m">102</span>
</span></span><span class="line"><span class="cl">qm listsnapshot <span class="m">102</span>
</span></span><span class="line"><span class="cl">qm delsnapshot <span class="m">102</span> initial_snapshot --force
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p>Comprueba el config: sin <code>lock:</code> y sin la sección del snapshot.</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">grep -nE <span class="s1">&#39;^(lock:|\[|parent:)&#39;</span> /etc/pve/qemu-server/102.conf
</span></span></code></pre></td></tr></table>
</div>
</div></li>
<li>
<p>Limpia lo que haya quedado en el storage (espacio que no se libera solo):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># ZFS</span>
</span></span><span class="line"><span class="cl">zfs list -t snapshot -r rpool/data <span class="p">|</span> grep vm-102
</span></span><span class="line"><span class="cl">zfs destroy rpool/data/vm-102-disk-0@initial_snapshot
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># LVM-thin</span>
</span></span><span class="line"><span class="cl">lvs <span class="p">|</span> grep snap_vm-102
</span></span><span class="line"><span class="cl">lvremove pve/snap_vm-102-disk-0_initial_snapshot
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Ceph RBD</span>
</span></span><span class="line"><span class="cl">rbd snap ls cephpool/vm-102-disk-0
</span></span><span class="line"><span class="cl">rbd snap rm cephpool/vm-102-disk-0@initial_snapshot
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># qcow2 en directorio o NFS (VM apagada)</span>
</span></span><span class="line"><span class="cl">qemu-img snapshot -l /var/lib/vz/images/102/vm-102-disk-0.qcow2
</span></span><span class="line"><span class="cl">qemu-img snapshot -d initial_snapshot /var/lib/vz/images/102/vm-102-disk-0.qcow2
</span></span></code></pre></td></tr></table>
</div>
</div><p>Si el snapshot incluía la RAM, además existe un volumen <code>vm-102-state-initial_snapshot</code> en el mismo storage; <code>--force</code> intenta borrarlo, y si no pudo, quítalo a mano.</p>
</li>
</ol>
<h2 id="plan-b-editar-el-conf">Plan B: editar el .conf</h2>
<p>Si ni con <code>--force</code> sale, el propio staff de Proxmox indica que se puede editar el archivo a mano. En <code>/etc/pve/qemu-server/102.conf</code>:</p>
<ol>
<li>Borra la línea <code>lock: snapshot-delete</code>.</li>
<li>Borra la sección completa del snapshot: desde <code>[initial_snapshot]</code> hasta la siguiente cabecera <code>[...]</code> o el final del archivo.</li>
<li>Si otra sección (la actual o un snapshot hijo) tiene <code>parent: initial_snapshot</code>, quita esa línea o apúntala al abuelo si había cadena.</li>
</ol>
<p>Guarda y <code>qm config 102</code> tiene que responder sin quejarse. Después, la limpieza del storage del paso 4.</p>
<h2 id="otros-locks">Otros locks</h2>
<p><code>qm unlock</code> sirve para cualquier lock que quedó colgado; la regla es la misma: primero confirma que la tarea que lo puso está muerta.</p>
<table>
  <thead>
      <tr>
          <th><code>lock:</code></th>
          <th>Lo puso</th>
          <th>Antes de desbloquear</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>backup</code></td>
          <td>vzdump</td>
          <td><code>ps aux | grep vzdump</code>; un backup lento a NFS parece colgado y no lo está</td>
      </tr>
      <tr>
          <td><code>snapshot</code></td>
          <td>creación de snapshot</td>
          <td>La tarea en Tasks debe estar terminada</td>
      </tr>
      <tr>
          <td><code>snapshot-delete</code></td>
          <td>borrado de snapshot</td>
          <td>Este post</td>
      </tr>
      <tr>
          <td><code>clone</code>, <code>migrate</code>, <code>rollback</code></td>
          <td>la operación correspondiente</td>
          <td>Revisa que no siga corriendo en el nodo destino</td>
      </tr>
  </tbody>
</table>
<h2 id="trampas">Trampas</h2>
<ul>
<li><strong><code>qm</code> es por nodo.</strong> En un clúster, ejecuta todo en el nodo donde vive la VM; el <code>.conf</code> es compartido, pero la limpieza de ZFS/LVM es local.</li>
<li><strong>Un <code>hold</code> de ZFS</strong> impide el <code>zfs destroy</code> y dispara justo este escenario; revisa con <code>zfs holds</code> antes de culpar a Proxmox. Detalle en <a href="/es/posts/zfs/hold-proteger-snapshot/">proteger un snapshot con hold</a>.</li>
<li><strong>El espacio no vuelve solo.</strong> <code>--force</code> limpia el config, no el storage; el paso 4 no es opcional si te importa el espacio.</li>
</ul>
<p>Referencias: hilos del foro de Proxmox <a href="https://forum.proxmox.com/threads/cannot-remove-snapshot-vm-is-locked-snapshot-delete.37567/">37567</a> y <a href="https://forum.proxmox.com/threads/removing-snapshots-not-possible.38248/">38248</a>.</p>
]]></content:encoded></item></channel></rss>