2011-05-04 21 views
18

Retiré de manera insegura un dispositivo USB que estaba conectado a loop0 con losetup y no pude eliminar ni separar loop0 después.No se puede eliminar el dispositivo/dev/loop0

losetup -a muestra /dev/loop0: [0005]:145606719 (/dev/sdb1)

Cuando vuelvo a montar el dispositivo en/dev/sdb1, umount y trato losetup -d /dev/loop0, todavía voy a tener el mismo error loop: can't delete device /dev/loop0: Device or resource busy. ¿Hay alguna manera de deshacerse del dispositivo de bucle?

+0

Es extraño, generalmente no se adjunta el bucle a los dispositivos USB. ¿Cómo hiciste eso? – Keith

+0

Estaba usando el cifrado LUKS y pensé que podía encriptar mi unidad flash USB de 1 gb. – BiX

+0

Puede usar LUKS para eso, pero no usando un dispositivo de bucle. Una partición LUKS tiene su propio tipo de partición. – Keith

Respuesta

10

¿Está seguro de que el dispositivo no está ocupado? ¿Alguna vez ha probado el fusor para determinar un posible PID?

precaución obtener toda la información posible:

fuser -c /dev/loop0 
fuser -d /dev/loop0 
fuser -f /dev/loop0 

tratar de detener el proceso, lo que podría usar/dev/loop0. Si es necesario, use kill -9 o intente fuser -k para enviar la señal de muerte -> mire man fuser.

1

Intente volver a cargar el módulo del kernel de bucle. Si no ayuda, reinicie.

+0

Esto realmente funcionó para mí (otras soluciones no) – Tuinslak

35

Es posible que también tenga que usar dmsetup para eliminar la asignación del dispositivo. La manera más fácil, si no interfiere con ninguna otra asignación, es usar dmsetup remove_all.

+6

Esto funcionó para mí, aunque utilicé 'dmsetup info' para obtener las asignaciones, luego usé' dmsetup remove '. Gracias. – unpythonic

+3

'sudo dmsetup info' me da' No se encontraron dispositivos' – Jayen

+1

Esto también funcionó para mí. Por alguna razón, usar kpartx -a y luego kpartx -d en CentOS 6.5 no elimina las asignaciones como debería. – Peter

7

Tuve un problema similar con una tarjeta SD y la sugerencia de Aaoron Flin de usar dmsetup funcionó para mí.

Específicamente, usted debe poder ls/dev/mapper para ver si existen particiones loop0pX.

Si es así, puede usar dmsetup remove /dev/mapper/loop0p2 para deshacerse de cualquier partición innecesaria. Esto puede ser útil si desea mantener algunas asignaciones adjuntas.

2

Si está utilizando Luks, es necesario luksClose primera

cryptsetup luksClose $whatever 
losetup -D 
0

Definitivamente hay un proceso de usarlo. Si no pudo determinar qué proceso impide que se elimine, reinicie su servidor si puede.

1

Tuve el mismo problema hoy y ninguna de las respuestas anteriores lo solucionó (no intenté volver a cargar el módulo del kernel de bucle, porque quería entender el problema real).

Resulta que el archivo de imagen asociado con el dispositivo de bucle que contiene una partición "Linux LVM", que se define automáticamente como se muestra por pvscan:

$ pvscan 
    PV /dev/sda1 VG server-vg lvm2 [417,76 GiB/0 free] 
    PV /dev/loop0 VG vbox-vg  lvm2 [7,81 GiB/0 free] 
    Total: 2 [425,57 GiB]/in use: 2 [425,57 GiB]/in no VG: 0 [0 ] 

así que tuve de desactivar todos los volúmenes lógicos dentro del grupo de volúmenes:

$ vgchange --activate n vbox-vg 
    0 logical volume(s) in volume group "vbox-vg" now active 

Eventualmente I fue capaz de separar bien el dispositivo de bucle:

$ losetup -d /dev/loop0 
$ losetup -a 
0

Igual que por @frntn.

Loops estaban ocupados por RAID:

# cat /proc/mdstat 

Personalities : [raid0] 

md126 : active raid0 loop6p5[1] loop5p3[0] 
    209584128 blocks super 1.2 512k chunks 

md127 : active raid0 loop6p2[1] loop5p2[0] 
    31440896 blocks super 1.2 512k chunks 

me las quité y todo obedece a las órdenes de nuevo.

Cuestiones relacionadas