No se puede eliminar el volumen lógico abierto

20

Cuando intento eliminar un volumen lógico recibo el mensaje

#lvremove /dev/my-volumes/volume-1 
Can't remove open logical volume "volume-1"

#lvchange -an -v /dev/my-volumes/volume-1 
Using logical volume(s) on command line
/dev/dm-1: read failed after 0 of 4096 at 0: Input/output error
Deactivating logical volume "volume-1"
Found volume group "my-volumes"
LV my-volumes/volume-1 in use: not deactivating

#lvremove -vf /dev/my-volumes/volume-1 
Using logical volume(s) on command line
/dev/dm-1: read failed after 0 of 4096 at 0: Input/output error
Can't remove open logical volume "volume-1"

#lvs
/dev/dm-1: read failed after 0 of 4096 at 0: Input/output error
LV              VG           Attr   LSize   Origin Snap%  Move Log Copy%  Convert
volume-1        my-volumes   -wi-ao  50.00g  

¿Cómo puedo forzar la eliminación de este volumen?

Gracias Everett

Everett Toews
fuente

Respuestas:

13

¿Qué contiene el volumen lógico? ¿Es un sistema de archivos (accidentalmente escribí una partición)? ¿Podría ser que esté montado? En ese caso:

umount /dev/my-volumes/volume-1

¿Tiene alguna instantánea activa?

Editar: intente lvchange -an -v /dev/my-volumes/volume-1y lvremove -vf /dev/my-volumes/volume-1.

Edición 2: publique 'lvs'.

Edición 3: intente esto con algún otro volumen problemático. No es la opción más limpia, pero de acuerdo con este sitio puede funcionar, y de todos modos es menos problemático que reiniciar.

dmsetup remove my--volumes-volume--number
lvremove /dev/my-volumes/volume-number
Eduardo Ivanec
fuente
No contiene nada No es una partición. No está montado (por más tiempo). No hay instantáneas activas.
Everett Toews
Bueno, ¿para qué lo usaste? Puede darnos una pista de lo que puede estar mal.
Eduardo Ivanec
Agregó la información que solicitó a la pregunta. Estaba siendo utilizado como un volumen para OpenStack Compute (también conocido como Nova). De hecho, logré eliminarlo volviéndome nuclear y reiniciando la máquina y luego haciendo un movimiento lvre. Mucho más drástico de lo que quería ser. Todavía tengo algunos otros volúmenes de los que me gustaría deshacerme sin tener que reiniciar, por lo que cualquier ayuda que pueda brindar será apreciada.
Everett Toews
He agregado algo para que pruebes con algún otro volumen problemático.
Eduardo Ivanec
Lo intenté. Sin suerte. También probé todo desde wiki.davidjb.com/… (de ahí el "/ dev / dm-1: falló la lectura ..." en algunos de mis resultados) pero tampoco funcionó.
Everett Toews
9

Si no puede desmontar o mover un volumen lógico, verifique que no haya procesos que contengan el LV

Localice los números mayores / menores para el volumen lógico que está tratando de eliminar, por ejemplo: vol0

# dmsetup info -c | grep vol0

Tome nota de la quinta columna, que indica si un volumen está "abierto", y las columnas segunda y tercera, que son las ID principales y secundarias, respectivamente.

Encuentre cualquier proceso adjunto a este volumen buscando en las ID principales y secundarias descubiertas anteriormente:

# lsof | grep "major,minor"

Apague o elimine cualquier proceso que aún acceda al volumen para continuar desmontando y eliminando.

entonces prueba lvremove

pruthvi
fuente
En mi caso no hay ayuda. Por lo tanto, el fusor no muestra ningún uso. dmsetup dice que el dispositivo está ocupado. El dispositivo está desmontado (se puede montar en cualquier momento). solo un reinicio de hardware ayuda: /
John
5

Probablemente tenga iet o tgt ejecutándose (cuál depende de cuál sea su iscsi_helpervalor en /etc/nova/nova.conf, por defecto es iet), y el servicio tiene un identificador de archivo abierto. Puede verificar cuál es haciendo algo como esto (en mi caso es tgt)

# fuser /dev/nova-volumes/volume-00000001
/dev/dm-5:           19155

# lsof | grep /dev/dm-5
tgtd      19155            root   12u      BLK              252,5         0t0    2531554 /dev/dm-5

Si es iet, detenga el servicio haciendo:

service iscsitarget stop

Si es tgt, detenga el servicio haciendo lo siguiente:

service tgt stop

Entonces deberías poder eliminar tus volúmenes.

Lorin Hochstein
fuente
Esto resolvió el problema para mí con OpenStack
juanluisrp
5

Me metí en una situación similar, pero la eliminación de LV estaba bloqueada, porque estaba usando mount -o bind.

El siguiente artículo ayudó mucho, usando lsof con números mayores / menores de LV mostró que el proceso mantiene abierto LV, en mi caso smbd.

Que simplemente cat / proc / monturas | grep LV_name me llevó a la conclusión, por qué lvremove o dmsetup remove basura para deshacerse de LV desmontado.

http://kb.eclipseinc.com/kb/why-cant-i-remove-a-linux-logical-volume/

janfai
fuente
2

Apague los contenedores LXC que usan los sistemas de archivos a través de su configuración: lxc.mount.entry

Tonny
fuente
1

Si no puede eliminarlo lvm, siga estos pasos:

  1. desmontar la partición:

    # umount / dev / sda8

    (por ejemplo, he montado la partición en /dev/sda8)

  2. intenta eliminarlo lvmasí:

    # lvremove / dev / vgname / lvname

Si recibe un error como " no se puede eliminar el volumen lógico abierto en Linux ", intente desactivar el LVM a través de los siguientes comandos y luego elimínelo:

 # lvchange -an  /dev/vgname/lvname

 # lvremove /dev/vgname/lvname

Háganos saber si tiene algún problema.

Pankaj Patel
fuente
0

Tuve este problema con un LV que proviene de 3 PV en un dispositivo iSCSI (con múltiples rutas).

¡Ninguna solución funcionó sino un simple reinicio ! ( coméntelo en fstab , para que no se vuelva a montar)

Quizás eso ayude a alguien.

davidak
fuente
0

esto también puede estar bloqueado por el servicio nfslock en RHEL, simplemente detenga ese servicio y listo.

Veaceslav Mindru
fuente
0

Tuve un problema similar. El lv que intenté eliminar fue un dispositivo de bloqueo de VM, que contenía un grupo de volúmenes. Este grupo de volúmenes se filtró en lvm.conf, pero algunos elementos del mapeador de desarrollo se crearon anteriormente.

Para averiguar si un dispositivo lo está reteniendo, mire su número menor (253, ?? ) ll /dev/<vg>/<lv>debe apuntar a../dm-??

Luego ls -la /sys/dev/block/253:??/holdersle dará enlaces de vg (ex -> ../../dm-xx) retransmitiendo en su dispositivo (como un pv)

Elimínalos con dmsetup remove /dev/dm-xx(asegúrate de que esos dm no se usen) Luego debes eliminar / dev // que ya no es un "pv" en alguna parte

Cedric de lEpine
fuente
Soy mi caso, dmsetup remove /dev/dm-36pero aparece el error device-mapper: remove ioctl on vg0-snap--tmp--vm06.docker--disk failed: – Device or resource busy – Command failed: serverfault.com/questions/926681/…
rubo77
0

Puede desvincular su LV del dispositivo DM:

fusor -kuc / dev / my-sample-volume / volume-sample-1

/ dev / dm-21: 2400ce (raíz) 2739ce (raíz) 4793ce (raíz)

ls -l / dev / my-sample-volume / volume-sample-1

lrwxrwxrwx 1 raíz raíz 8 15 de agosto 02:53 / dev / my-sample-volume / volume-sample-1 -> ../dm-21

desvincular / dev / mi-muestra-volúmenes / volumen-muestra-1

lvremove / dev / my-sample-volume / volume-sample-1

dayzero
fuente
Hola y bienvenido No creo lvremoveque vaya a funcionar después unlink, ¿podría aclarar esa parte? Solo edita tu respuesta.
kubanczyk
Deberia de funcionar. Lo he probado Simplemente se desenlazará a su softlink. el LV debe seguir existiendo y puede eliminarlo con lvremove.
dayzero
0

En mi caso, estaba ejecutando cAdvisor en un contenedor, y esto parece evitar la eliminación de los dispositivos de bloque que se montaron cuando se inició. Mi solución fue:

  1. Desmontar el volumen LVM
  2. Reinicie el contenedor de cAdvisor ( docker restart $CONTAINER_ID)
  3. Intenta eliminarlo nuevamente
RobM
fuente
-1

Tengo el mismo problema que el tuyo. Intenté el siguiente comando y resolví: swapoff -a

lvremove ...

zhaorufei
fuente
eso podría llevar a alguien a probar ciegamente tu comando Es mejor señalar que si se usa LV para el intercambio, primero cambie el lv, y solo esto, no solo -a
roothahn el