Eliminar vg y lv después de que se haya eliminado la unidad física

32

Tuvimos un error de disco en un servidor y lo reemplazamos antes de quitar la unidad de LVM.

El servidor tiene 4 unidades físicas (PV), cada una con su propio grupo de volúmenes (VG). Cada VG tiene 2 o más volúmenes lógicos (LV). Ahora LVM se queja de la unidad que falta. Entonces, tenemos un VG (vg04) con dos LV que se han convertido en huérfanos de lo que necesitamos eliminar del sistema.

El problema es que cada vez que ejecutamos cualquier comando LVM obtenemos estos errores de 'lectura fallida':

# lvscan
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error

# vgreduce vg04 --removemissing --force
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found

# vgchange -a n /dev/vg04
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found

# lvchange -a n /dev/vg04/vz
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found
  Skipping volume group vg04

Los VG y LV que faltan no son importantes, solo queremos eliminarlos.

Como puede ver, hemos probado todas las sugerencias hechas, hasta ahora sin suerte.

La salida de 'lvm dumpconfig' se puede verificar en http://pastebin.com/MHiBzrLJ

RCD
fuente

Respuestas:

46

La solución fue ejecutar dmsetup, en este caso los dos comandos

dmsetup remove vg04-vz
dmsetup remove vg04-swap

Antes de hacer esto, verifiqué con el comando 'dmsetup info' que el 'conteo abierto' para ambos LV fuera cero.

ADVERTENCIA: dmsetup puede causar graves estragos en sus discos, por lo que cualquiera que use esta información en el futuro, asegúrese de leer la página del manual.

RCD
fuente
3
Eso hizo el truco. Es una lástima que LVM sea una abstracción tan permeable, pero supongo que es tan bueno como parece.
Navin
1
Buena llamada con esa advertencia. Si entiendo correctamente, el nombre similar remove_all --force --deferred --retryeliminaría todas las unidades administradas LVM a su alcance. Seguiría intentándolo y no se rendiría, como el Terminator. Tengo mucha curiosidad sobre por qué una pistola como esta estaba garantizada.
Dan Ross
También hay un único dispositivo que "termina con prejuicios extremos" (y / o venganza, si el dispositivo lo mantuvo ocupado toda la noche): # dmsetup --force --retry --deferred remove <YOURVG>-<YOURLV>Esto es especialmente cierto si, por ejemplo, un dispositivo iscsi estaba colgado y lo quitó con# iscsiadm -m node -U all -T <FQDN>
AdamKalisz
9

Experimenté algo similar después de quitar un disco VMware /dev/sdb.

Utilícelo lsscsipara determinar qué dispositivo se está utilizando (es posible que deba instalar el programa) y luego ejecute lsscsi:

# lsscsi
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0
[2:0:0:0]    disk    VMware   Virtual disk     1.0   /dev/sda
[2:0:1:0]    disk    VMware   Virtual disk     1.0   /dev/sdb <== the removed physical disk
[2:0:2:0]    disk    VMware   Virtual disk     1.0   /dev/sdc

Ahora escriba el archivo de eliminación con

# echo 1 > /sys/class/scsi_device/2\:0\:1\:0/device/delete

El dispositivo se fue inmediatamente.

Effendi
fuente
1
¡¡Gracias!! Esto funcionó perfectamente para mí al deshacerme de errores como "/ dev / sdb: la lectura falló después de 0 de 4096 a 0: error de entrada / salida" después de eliminar un vg1-xyz obsoleto a través de dmsetup.
pantalones de gato
1
Solo este funciona para mí. Me has alegrado el día.
odiszapc
2

vgchange -an / dev / vg04

Si aún tiene volúmenes lógicos activos, es posible que deba

lvchange -a n /dev/vg04/swap
lvchange -a n dev/vg04/vz

etc.

Rob Shinn
fuente
2
Desafortunadamente, eso tampoco lo soluciona, simplemente sigue arrojando el mismo error:
RCD
En mi sistema lvchange -a n <VGNAME>funciona perfekt!
zzeroo