kpartx: 매핑을 삭제한 후 디스크를 마운트 해제할 수 없습니다.

kpartx: 매핑을 삭제한 후 디스크를 마운트 해제할 수 없습니다.

매핑을 생성하고 삭제한 파티션을 마운트 해제할 수 없습니다 kpartx.

# mount /dev/sdb1 usb/
# cd usb/

# kpartx -a -p sda -r -s -v sda.img
add map loop0sda1 (254:5): 0 16777216 linear 7:0 2048
add map loop0sda2 (254:6): 0 16777216 linear 7:0 16779264
add map loop0sda3 (254:7): 0 440401920 linear 7:0 33556480
add map loop0sda4 (254:8): 0 26159792 linear 7:0 473958400

# kpartx -dv /dev/loop0
del devmap : loop0sda4
del devmap : loop0sda3
del devmap : loop0sda2
del devmap : loop0sda1

# cd ..
    
#umount usb/
target is busy.

내가 알 수 있는 한, 이 명령은 kpartx -dv /dev/loop0매핑을 올바르게 제거하고 에서 제거된 것을 볼 수 있습니다 /dev/mapper/. 그러나 다음과 같은 보고 때문에 여전히 디스크를 마운트 해제할 수 없습니다.target is busy.

lsof이 디스크에는 열려 있는 파일이 없음이 표시됩니다.

# lsof +D 

모든 매핑을 해제한 후 디스크를 탑재 해제할 수 없는 이유는 무엇입니까?

답변1

두 번째 명령은 인수로 제공된 루프 장치가 원래 이 루프 장치 생성을 트리거한 블록 이미지 파일이 아니라는 점에서 첫 번째 명령과 정확히 반대가 아닙니다.

그런 다음 다음을 실행하면:

losetup -l /dev/loop0

아마도 다음과 같은 결과가 나올 것입니다:

NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE            DIO LOG-SEC
/dev/loop0         0      0         0  1 /path/to/usb/sda.img   0     512

이로 인해 리소스가 sda.img파일과 이를 제공하는 파일 시스템에 바인딩되어 마운트 해제가 방지됩니다.

이 상태에서 남은 리소스를 해제하려면 다음을 수행하면 됩니다.

losetup -d /dev/loop0

무엇을 해야 합니까?

 kpartx -dv /path/to/usb/sda.img

이번에는 다음을 제공해야 합니다.

del devmap : loop0sda4
del devmap : loop0sda3
del devmap : loop0sda2
del devmap : loop0sda1
loop deleted : /dev/loop0

관련 정보