<?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>Recovery on inetshell</title><link>https://inet.sh/es/tags/recovery/</link><description>Recent content in Recovery 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/recovery/index.xml" rel="self" type="application/rss+xml"/><item><title>LVM: no se activa el volume group después de un corte de luz</title><link>https://inet.sh/es/posts/linux/lvm-activar-volume-group-corte-de-luz/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/es/posts/linux/lvm-activar-volume-group-corte-de-luz/</guid><description>Tras un apagón el sistema cae en emergency mode o un VG no aparece: cómo diagnosticar con pvs/vgs/lvs, qué hacen vgchange -ay con --activationmode degraded y partial, cuándo usar lvconvert --repair para un thin pool, vgcfgrestore para metadatos rotos, y el archivo de dispositivos de LVM (system.devices) que oculta discos cuyo ID cambió.</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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">vgscan
</span></span><span class="line"><span class="cl">pvs<span class="p">;</span> vgs<span class="p">;</span> lvs -a -o +devices,lv_health_status     <span class="c1"># ¿falta un PV? ¿qué LV no activa y por qué?</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">vgchange -ay                                       <span class="c1"># intento normal</span>
</span></span><span class="line"><span class="cl">vgchange -ay --activationmode degraded             <span class="c1"># LVs raid1/raid5/raid6 de LVM con un PV ausente</span>
</span></span><span class="line"><span class="cl">vgchange -ay --activationmode partial              <span class="c1"># cualquier LV con PV ausente: SOLO para copiar datos, monta ro</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Si el fallo es al arrancar (emergency shell porque <code>/</code> o <code>/home</code> no aparecen), los mismos comandos desde el prompt del initramfs, precedidos de <code>lvm</code> si no hay binarios sueltos (<code>lvm vgchange -ay</code>), y luego <code>exit</code>.</p>
<h2 id="qué-mirar-primero">Qué mirar primero</h2>
<table>
  <thead>
      <tr>
          <th>Comando</th>
          <th>Qué te dice</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>pvs</code></td>
          <td><code>WARNING: Couldn't find device with uuid …</code> o <code>[unknown]</code>: un PV no está. Disco muerto, controladora que no enumeró, cable, o un ID que cambió</td>
      </tr>
      <tr>
          <td><code>lvs -a -o +devices,lv_health_status</code></td>
          <td>Atributo <code>p</code> = <em>partial</em>; <code>lv_health_status</code> dice <code>partial</code>, <code>refresh needed</code>, <code>needs check</code>…</td>
      </tr>
      <tr>
          <td><code>dmesg | grep -iE 'sd[a-z]|nvme|error'</code></td>
          <td>¿El disco volvió tras el apagón? ¿Da errores de lectura?</td>
      </tr>
      <tr>
          <td><code>journalctl -b | grep -i lvm</code></td>
          <td>Qué intentó la autoactivación al arrancar y por qué falló</td>
      </tr>
      <tr>
          <td><code>ls /etc/lvm/archive/</code></td>
          <td>Copias de los metadatos anteriores a cada cambio; las necesitas si hay que restaurar</td>
      </tr>
  </tbody>
</table>
<p>Los tres modos de activación (<code>man vgchange</code>): <strong>complete</strong> (por defecto) solo activa LVs con todos sus PV presentes; <strong>degraded</strong> activa LVs RAID de LVM a los que les falta una pata; <strong>partial</strong> activa cualquier LV aunque falten PV, rellenando lo que falta con errores o ceros, y solo sirve para recuperar.</p>
<h2 id="casos">Casos</h2>
<h3 id="1-falta-un-pv">1. Falta un PV</h3>
<p>Arregla primero el hardware: reconecta, cambia de puerto, revisa la controladora. En cuanto <code>pvs</code> lo vea, <code>vgchange -ay</code> y listo.</p>
<p>Si el disco no vuelve y el LV era lineal sobre varios PV, lo que estaba en ese disco se perdió. Rescata el resto en <strong>solo lectura</strong>:</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">vgchange -ay --activationmode partial
</span></span><span class="line"><span class="cl">mount -o ro /dev/vg01/datos /mnt/rescate
</span></span><span class="line"><span class="cl">rsync -a /mnt/rescate/ /otro/sitio/
</span></span></code></pre></td></tr></table>
</div>
</div><p>Y solo después de copiar, deja el VG limpio: <code>vgreduce --removemissing --force vg01</code>.</p>
<h3 id="2-lvs-raid-de-lvm-raid1-raid5-raid6">2. LVs RAID de LVM (raid1, raid5, raid6)</h3>
<p>Con una pata ausente arrancan en modo degradado:</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">vgchange -ay --activationmode degraded
</span></span></code></pre></td></tr></table>
</div>
</div><p>Después, reemplaza el PV: <code>vgextend vg01 /dev/sdX</code> con el disco nuevo y <code>lvconvert --repair vg01/datos</code>. Si el LV no se deja activar ni así (<code>reload ioctl … failed</code>, subvolúmenes <code>_rimage_</code> activos pero el LV no), estás en el escenario donde el tooling de LVM RAID se queda corto; la restauración desde backup es la salida honesta. Para RAID con paridad, <a href="/es/posts/linux/mdadm-anadir-disco-crecer-raid5/">mdadm</a> debajo de LVM da mejores herramientas de recuperación.</p>
<h3 id="3-thin-pool">3. Thin pool</h3>
<p>Los thin pools son los que más sufren un corte: al arrancar, <code>thin_check</code> encuentra la metadata inconsistente y LVM se niega:</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-text" data-lang="text"><span class="line"><span class="cl">Check of pool vg01/pool0 failed (status:1). Manual repair required!
</span></span></code></pre></td></tr></table>
</div>
</div><p>El arreglo es el que dice el mensaje, con el pool <strong>inactivo</strong>:</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">lvconvert --repair vg01/pool0
</span></span><span class="line"><span class="cl">vgchange -ay vg01
</span></span></code></pre></td></tr></table>
</div>
</div><p><code>--repair</code> reconstruye la metadata en un LV nuevo y deja la vieja como <code>pool0_meta0</code>; cuando compruebes que los volúmenes thin montan bien, <code>lvremove vg01/pool0_meta0</code>. Un thin pool con un PV ausente no se activa ni en modo <code>degraded</code>; ahí solo queda <code>partial</code> para copiar.</p>
<h3 id="4-metadatos-rotos-pvs-presentes-vg-incompleto-o-unknown">4. Metadatos rotos (PVs presentes, VG &ldquo;incompleto&rdquo; o &ldquo;unknown&rdquo;)</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">vgcfgrestore --list vg01                                <span class="c1"># archivos en /etc/lvm/archive con fecha y motivo</span>
</span></span><span class="line"><span class="cl">vgcfgrestore -f /etc/lvm/archive/vg01_00042-1234567890.vg vg01
</span></span><span class="line"><span class="cl">vgchange -ay vg01
</span></span></code></pre></td></tr></table>
</div>
</div><p>Solo para metadatos: si lo que falta es un disco, restaurar la configuración no lo trae de vuelta.</p>
<h3 id="5-el-disco-está-pero-lvm-lo-ignora">5. El disco está, pero LVM lo ignora</h3>
<p>En RHEL 9, Fedora y derivados LVM solo mira los dispositivos listados en <code>/etc/lvm/devices/system.devices</code>. Si el apagón hizo que un disco volviera con otro identificador (cambio de controladora, WWID distinto, disco clonado), LVM no lo considera aunque <code>lsblk</code> lo muestre:</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></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">lvmdevices                          <span class="c1"># lista actual</span>
</span></span><span class="line"><span class="cl">lvmdevices --adddev /dev/sdc        <span class="c1"># añadir el dispositivo</span>
</span></span><span class="line"><span class="cl">vgimportdevices -a                  <span class="c1"># o importar todos los VG que encuentre</span>
</span></span><span class="line"><span class="cl">vgchange -ay
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="después-de-activar">Después de activar</h2>
<p>Un apagón rompe sistemas de archivos con más frecuencia que LVM. Antes de montar en escritura:</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">fsck -n /dev/vg01/datos        <span class="c1"># ext4: solo mirar</span>
</span></span><span class="line"><span class="cl">xfs_repair -n /dev/vg01/datos  <span class="c1"># xfs: solo mirar</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>Y si el resultado da miedo, monta <code>ro</code>, copia, y repara después.</p>
<h2 id="trampas">Trampas</h2>
<ul>
<li><strong><code>partial</code> no arregla nada</strong>: lo que falta se lee como ceros o errores y cualquier escritura ahí se pierde. Monta en solo lectura y copia.</li>
<li><strong>No hagas <code>vgreduce --removemissing</code> antes de copiar.</strong> Es lo último, no lo primero.</li>
<li><strong><code>/etc/lvm/backup</code> y <code>/etc/lvm/archive</code> valen oro</strong> y viven en el mismo disco que puede fallar. Cópialos fuera de la máquina de vez en cuando (<code>vgcfgbackup -f /ruta/externa/%s.vg</code>).</li>
<li><strong>En VMs el &ldquo;corte de luz&rdquo; es un stop forzado</strong>; misma receta. Y si lo que no arranca es el propio GRUB con root en LVM, es <a href="/es/posts/proxmox/grub-rescue-disk-lvmid-not-found/">otro problema</a>.</li>
</ul>
<p>Referencias: <code>man 8 vgchange</code>, <code>man 7 lvmthin</code> y <code>man 8 lvmdevices</code>.</p>
]]></content:encoded></item></channel></rss>