¿Cómo eliminar el dispositivo de partición del dispositivo de bucle?

¿Cómo eliminar el dispositivo de partición del dispositivo de bucle?

Monto la imagen del disco a través del dispositivo de bucle (losetup -f image.img). Contiene una tabla de particiones y fuerzo al kernel a leerla: partprobe /dev/loop1.

Monto /dev/loop1p1, arreglo cosas que quiero arreglar, desmonto el sistema de archivos. Elimino el archivo del dispositivo loopback (losetup -d /dev/loop1). Pero /dev/loop1p1 no desaparece.

Incluso intenté recrear el dispositivo, agregar y eliminar la tabla de particiones a través de fdisk. Pero todos mis intentos fracasaron:

La tabla de particiones se ha alterado!

Llamar a ioctl() para volver a leer la tabla de particiones.

ADVERTENCIA: Error al volver a leer la tabla de particiones con el error 22: Argumento no válido. El kernel todavía usa la tabla anterior. La nueva tabla se utilizará en el próximo reinicio o después de ejecutar partprobe(8) o kpartx(8) Sincronizar discos.

La partición no está en uso de ninguna manera, pero no puedo liberarla. ¿Hay alguna forma de eliminarlo sin reiniciar?

Veo en dmesg algunos registros:

[4649002.505727] loop1: rw=0, want=211812300, limit=62914560 [4649002.505753] Error de E/S del búfer en el dispositivo loop1p1, bloque lógico 52952562 [4649002.505870] intento de acceder más allá del final del dispositivo

Y están molestando a mis nagios.

Respuesta1

Reiniciar debería arreglar su kernel. Y la próxima vez, en lugar de ejecutarlo losetupmanualmente partprobe, utilice kpartx:

kpartx -v -a image.img

y para derribarlo:

kpartx -d image.img

información relacionada