매핑을 생성하고 삭제한 파티션을 마운트 해제할 수 없습니다 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