제거된 USB 저장 장치가 여전히 마운트되어 있습니다.

제거된 USB 저장 장치가 여전히 마운트되어 있습니다.

저는 busybox 기반의 임베디드 Linux 시스템을 개발 중입니다. 때로는 게시물에서 물리적으로 제거된 USB 장치가 여전히 또는 에 표시되는 경우 가 있습니다 mount. 장치를 다시 연결하면 예를 들어 장치가 여전히 마운트되어 있는 동안 감지됩니다 .df/proc/mounts/dev/sdb1/dev/sda1

제거된 장치의 열린 파일 핸들이 이 문제를 일으킬 수 있다는 것을 알고 있지만 이 동작을 유발할 수 있는 다른 조건이 있습니까?

답변1

다음과 같은 udev 규칙을 작성할 수 있습니다.

ACTION=="remove", KERNEL=="sd[b-z][0-9]", SUBSYSTEM=="block", RUN+="umount-removed.sh"

연결 해제 이벤트를 트리거한 다음 해당 스크립트에서 파일 시스템을 마운트 해제합니다.

MNT_POINT=`df | grep "$DEVNAME" | awk '{print $6}'`

#If still mounted
if [ ! -z "$MNT_POINT" ];then
    logger -i -t usbrm -p daemon.notice "The device $DEVNAME is still mounted"
    #Umount fs
    umount $DEVNAME

    if [ $? -eq 0 ];then
        logger -i -t usbrm -p daemon.notice "$DEVNAME successfully unmounted from $MNT_POINT"
    else
        logger -i -t usbrm -p daemon.err "Impossible to umount $DEVNAME from $MNT_POINT. Aborting..."
    fi
fi

/var/daemon.log에서 로그를 볼 수 있습니다.

편집하다 :udev가 특정 네임스페이스를 사용한다는 사실을 잊어버렸으므로 사용자 공간과 마운트 지점을 공유하도록 구성해야 합니다.

이를 수행하려면 systemd-udevd.service시스템에서 파일을 찾아 복제하고 /etc/systemd/system/systemd-udevd.service내용을 교체하십시오.MountFlags=shared

관련 정보