제거된 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

관련 정보