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 losetup
manualmente partprobe
, utilice kpartx
:
kpartx -v -a image.img
y para derribarlo:
kpartx -d image.img