Как удалить раздел устройства из петлевого устройства?

Как удалить раздел устройства из петлевого устройства?

Я монтирую образ диска через устройство loop (losetup -f image.img). Он содержит таблицу разделов и я заставляю ядро ​​ее прочитать: partprobe /dev/loop1.

Я монтирую /dev/loop1p1, исправляю то, что хочу исправить, размонтирую обратно файловую систему. Удаляю файл с устройства loopback (losetup -d /dev/loop1). Но /dev/loop1p1 не исчезает.

Я даже пытался пересоздать lodevice, добавить и удалить таблицу разделов через fdisk. Но все мои попытки провалились:

Таблица разделов была изменена!

Вызов ioctl() для повторного чтения таблицы разделов.

ВНИМАНИЕ: Повторное чтение таблицы разделов завершилось ошибкой 22: Недопустимый аргумент. Ядро по-прежнему использует старую таблицу. Новая таблица будет использована при следующей перезагрузке или после запуска partprobe(8) или kpartx(8) Синхронизация дисков.

Раздел не используется никаким образом, но я не могу его освободить. Есть ли способ удалить его без перезагрузки?

Вижу в dmesg несколько записей:

[4649002.505727] loop1: rw=0, want=211812300, limit=62914560 [4649002.505753] Ошибка ввода-вывода буфера на устройстве loop1p1, логический блок 52952562 [4649002.505870] попытка доступа за пределами конца устройства

И они достают мои нагио.

решение1

Перезагрузка должна исправить ваше ядро. И в следующий раз, вместо запуска losetupвручную partprobe, используйте kpartx:

kpartx -v -a image.img

и чтобы его разрушить:

kpartx -d image.img

Связанный контент