루프 장치에서 파티션 장치를 삭제하는 방법은 무엇입니까?

루프 장치에서 파티션 장치를 삭제하는 방법은 무엇입니까?

루프 장치(losetup -f image.img)를 통해 디스크 이미지를 마운트합니다. 여기에는 파티션 테이블이 포함되어 있으며 커널이 이를 읽도록 강제합니다: partprobe /dev/loop1.

/dev/loop1p1을 마운트하고, 수정하고 싶은 항목을 수정하고, 파일 시스템을 다시 마운트 해제합니다. 루프백 장치(losetup -d /dev/loop1)에서 파일을 제거합니다. 그러나 /dev/loop1p1은 사라지지 않습니다.

fdisk를 통해 lodevice를 다시 만들고 파티션 테이블을 추가 및 제거하려고 시도했습니다. 하지만 내 모든 시도는 실패했습니다.

파티션 테이블이 변경되었습니다!

ioctl()을 호출하여 파티션 테이블을 다시 읽습니다.

경고: 오류 22: 잘못된 인수로 인해 파티션 테이블을 다시 읽지 못했습니다. 커널은 여전히 ​​이전 테이블을 사용합니다. 새 테이블은 다음에 재부팅할 때 또는 partprobe(8) 또는 kpartx(8) 디스크 동기화를 실행한 후에 사용됩니다.

파티션이 어떤 방식으로든 사용되지 않지만 해제할 수 없습니다. 재부팅하지 않고 제거하는 방법이 있나요?

dmesg에 몇 가지 기록이 있습니다.

[4649002.505727] loop1: rw=0, want=211812300, 제한=62914560 [4649002.505753] 장치 loop1p1의 버퍼 I/O 오류, 논리 블록 52952562 [4649002.505870] 장치 끝을 넘어 액세스 시도

그리고 그들은 내 nagios를 잔소리하고 있습니다.

답변1

재부팅하면 커널이 수정됩니다. 다음에는 수동 losetup으로 실행하는 대신 다음을 partprobe사용하세요 kpartx.

kpartx -v -a image.img

그리고 그것을 무너뜨리려면:

kpartx -d image.img

관련 정보