<?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>Rbd on inetshell</title><link>https://inet.sh/es/tags/rbd/</link><description>Recent content in Rbd 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/rbd/index.xml" rel="self" type="application/rss+xml"/><item><title>Ceph en Proxmox: quitar el HEALTH_WARN 'daemons have recently crashed' y borrar discos de VM huérfanos en RBD</title><link>https://inet.sh/es/posts/proxmox/ceph-crash-archive-rbd-huerfanos/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/es/posts/proxmox/ceph-crash-archive-rbd-huerfanos/</guid><description>Dos limpiezas habituales en un Ceph gestionado por Proxmox VE: archivar crashes ya revisados para volver a HEALTH_OK (ceph crash ls-new, info, archive-all) y encontrar y borrar imágenes RBD que ya no pertenecen a ninguna VM (pvesm free, rbd rm, watchers y snapshots que lo impiden).</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><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></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"># HEALTH_WARN: N daemons have recently crashed</span>
</span></span><span class="line"><span class="cl">ceph crash ls-new
</span></span><span class="line"><span class="cl">ceph crash info &lt;id&gt;          <span class="c1"># qué daemon, cuándo y el backtrace</span>
</span></span><span class="line"><span class="cl">ceph crash archive-all        <span class="c1"># el aviso desaparece; el crash sigue en `ceph crash ls`</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Discos de VM que ya no existe</span>
</span></span><span class="line"><span class="cl">rbd ls -l cephpool
</span></span><span class="line"><span class="cl">pvesm free cephpool:vm-124-disk-1     <span class="c1"># por la capa de storage de Proxmox</span>
</span></span><span class="line"><span class="cl">rbd rm cephpool/vm-124-disk-1         <span class="c1"># o directo en Ceph</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="health_warn-daemons-have-recently-crashed">HEALTH_WARN: daemons have recently crashed</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><span class="lnt">3
</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">HEALTH_WARN 1 daemons have recently crashed
</span></span><span class="line"><span class="cl">[WRN] RECENT_CRASH: 1 daemons have recently crashed
</span></span><span class="line"><span class="cl">    osd.5 crashed on host pve-node2 at 2026-09-20T03:14:07.123456Z
</span></span></code></pre></td></tr></table>
</div>
</div><p>Es el chequeo <code>RECENT_CRASH</code> del módulo <code>crash</code> del manager: un daemon se cayó, dejó un reporte, y el aviso se queda hasta que un administrador lo <strong>archive</strong>, o hasta que pasen dos semanas (<code>mgr/crash/warn_recent_interval</code>). El daemon casi siempre ya volvió solo; el aviso no dice que siga caído.</p>
<p>Antes de archivar, mira qué fue:</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-shell" data-lang="shell"><span class="line"><span class="cl">ceph crash ls-new
</span></span><span class="line"><span class="cl">ceph crash info 2026-09-20T03:14:07.123456Z_9f1c...
</span></span></code></pre></td></tr></table>
</div>
</div><p>Del <code>info</code> importan <code>entity_name</code> (qué daemon), <code>utc_timestamp</code>, <code>assert_msg</code> o <code>backtrace</code>, y <code>ceph_version</code>. Después:</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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">ceph osd stat                          <span class="c1"># ¿siguen todos up/in?</span>
</span></span><span class="line"><span class="cl">systemctl status ceph-osd@5            <span class="c1"># en el nodo del OSD</span>
</span></span><span class="line"><span class="cl">journalctl -u ceph-osd@5 --since <span class="s1">&#39;-1h&#39;</span>
</span></span><span class="line"><span class="cl">dmesg -T <span class="p">|</span> grep -iE <span class="s1">&#39;sd[a-z]|nvme|i/o error&#39;</span>
</span></span><span class="line"><span class="cl">smartctl -a /dev/sdX                   <span class="c1"># si el crash coincide con errores de disco</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Con eso decidido, archiva:</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">ceph crash archive &lt;id&gt;
</span></span><span class="line"><span class="cl">ceph crash archive-all
</span></span><span class="line"><span class="cl">ceph -s                                <span class="c1"># HEALTH_OK si no hay nada más</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Archivar no arregla nada; solo reconoce que lo viste. Si el mismo OSD reaparece en <code>ls-new</code> cada pocos días, es un disco o una controladora, no un aviso molesto: sácalo del clúster y reemplázalo.</p>
<p>Para limpiar el histórico: <code>ceph crash rm &lt;id&gt;</code> o <code>ceph crash prune &lt;días&gt;</code>. El aviso se puede apagar del todo con <code>ceph config set mgr mgr/crash/warn_recent_interval 0</code>, que es exactamente lo que no quieres en producción.</p>
<h2 id="discos-de-vm-huérfanos-en-rbd">Discos de VM huérfanos en RBD</h2>
<p>Aparecen cuando una VM se borra con el storage inaccesible, un clon o una migración fallan a medias, alguien borra el <code>.conf</code> a mano o queda una restauración incompleta. Ocupan espacio y no salen en la GUI porque ningún <code>.conf</code> los menciona.</p>
<h3 id="encontrarlos">Encontrarlos</h3>
<p>Compara las imágenes del pool con los <code>.conf</code> de <strong>todos</strong> los nodos (en <code>/etc/pve/nodes/</code> está la copia de cada uno):</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></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="k">for</span> img in <span class="k">$(</span>rbd ls cephpool<span class="k">)</span><span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">  grep -rqs <span class="s2">&#34;cephpool:</span><span class="nv">$img</span><span class="s2">&#34;</span> /etc/pve/nodes/*/qemu-server /etc/pve/nodes/*/lxc <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    <span class="o">||</span> <span class="nb">echo</span> <span class="s2">&#34;sin dueño: </span><span class="nv">$img</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span><span class="line"><span class="cl">rbd ls -l cephpool          <span class="c1"># tamaños</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><code>pvesm list cephpool</code> da la misma lista con el VMID que Proxmox deduce del nombre; útil para cruzar con <code>qm list</code> y <code>pct list</code> en cada nodo.</p>
<h3 id="si-la-vm-sigue-existiendo">Si la VM sigue existiendo</h3>
<p>Que Proxmox lo vuelva a ver y bórralo desde ahí:</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">qm rescan --vmid <span class="m">124</span>        <span class="c1"># aparece como unused0 en el .conf</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Luego GUI → Hardware → disco <em>Unused</em> → <strong>Remove</strong>, que sí borra la imagen, o <code>pvesm free cephpool:vm-124-disk-1</code>. Ojo: <code>qm set 124 --delete unused0</code> solo lo quita del <code>.conf</code>, no borra datos.</p>
<h3 id="si-la-vm-ya-no-existe">Si la VM ya no existe</h3>
<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">pvesm free cephpool:vm-124-disk-1
</span></span><span class="line"><span class="cl"><span class="c1"># equivalente directo en Ceph:</span>
</span></span><span class="line"><span class="cl">rbd rm cephpool/vm-124-disk-1
</span></span></code></pre></td></tr></table>
</div>
</div><p>Cuando <code>rbd rm</code> se niega:</p>
<table>
  <thead>
      <tr>
          <th>Mensaje</th>
          <th>Causa</th>
          <th>Salida</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>image still has watchers</code></td>
          <td>Algún proceso la tiene abierta (una VM corriendo en otro nodo, un <code>rbd map</code>)</td>
          <td><code>rbd status cephpool/vm-124-disk-1</code> dice quién; apaga esa VM o <code>rbd unmap</code></td>
      </tr>
      <tr>
          <td><code>image has snapshots</code></td>
          <td>Quedan snapshots</td>
          <td><code>rbd snap purge cephpool/vm-124-disk-1</code> y repite</td>
      </tr>
      <tr>
          <td><code>cannot remove a protected snapshot</code></td>
          <td>Es un <code>base-*</code> de plantilla con clones</td>
          <td><code>rbd children cephpool/base-9000-disk-0@__base__</code>; los clones dependen de él, no lo borres</td>
      </tr>
  </tbody>
</table>
<h2 id="trampas">Trampas</h2>
<ul>
<li><strong>Cruza con todos los nodos</strong>, no con <code>qm list</code> del nodo donde estás; el disco de una VM que vive en otro nodo no es un huérfano.</li>
<li><strong><code>base-*</code> no es basura</strong>: son las plantillas. Bórralas solo con <code>qm destroy</code> de la plantilla.</li>
<li><strong>El espacio vuelve despacio</strong>: <code>ceph df</code> tarda un rato en reflejar el borrado mientras los OSD eliminan objetos.</li>
<li><strong>Pool entero de sobra</strong>: <code>pveceph pool destroy &lt;pool&gt; --force --remove_storages</code>; se lleva todo lo que haya dentro.</li>
</ul>
<h2 id="ver-también">Ver también</h2>
<ul>
<li><a href="/es/posts/proxmox/ceph-device-classes-crush-rules/">Ceph: device classes y CRUSH rules</a></li>
<li><a href="/es/posts/proxmox/vm-is-locked-snapshot-delete/">VM is locked (snapshot-delete)</a> — los snapshots RBD huérfanos aparecen ahí</li>
<li>Documentación de Ceph: <a href="https://docs.ceph.com/en/latest/rados/operations/health-checks/#recent-crash">Health checks — RECENT_CRASH</a></li>
</ul>
]]></content:encoded></item></channel></rss>