나는 플래시 드라이브에 데이터를 저장하는 것을 좋아하는 시스템 (CentOS 6.3에서 실행 중)을 가지고있다.Linux : 마운트 된 vfat 볼륨이 제거되었는지 어떻게 알 수 있습니까?
사용자가 데이터를 아카이브하려고 할 때 드라이브를 마운트하려고하는 UI가 있습니다. 사용자가 아카이브 기능을 선택하고 드라이브 (있는 경우)를 마운트하고 통계를 확인합니다. 좋지 않은 경우 (예 : 데이터 세트보다 작게 드라이브) 사용자에게 다른 드라이브를 시도하도록 요청합니다.
이제 볼륨을 마운트 해제하고 다시 마운트하지 않으려 고하기 때문에 마운트 된 상태로 두는 것이 좋습니다. 그러나 그때, 사용자가 그것을 꺼낼 때, 나는 그것이 사라 졌다고 말하는 방법을 모른다.
드라이브를 폴링하는 루프가 있는데, 드라이브가있는 것처럼 계속 작동하는 statvfs64()
과 같은 것을보고 있습니다. stat()
도 드라이브가 실제로 제거 될 때 변경되지 않습니다.
오픈 디렉토리 (opendir()
)를 읽었지만 그 중 하나라도 실패하지는 않습니다. (드라이브에 파일이 있으면 그 파일이 더 이상 나타나지 않지만 물론 드라이브가있을 수도 있습니다. 시작하기에 비어있는, 그래서 나는 그것에 의해 갈 수 없다).
사용자가 NTFS 드라이브와 같은 플러그를 꽂았을 수도 있으므로 드라이브를 반복해서 마운트 해제하고 다시 마운트하지 않으려 고합니다. 마운트하는 데는 약간의 시간이 걸릴 것 같습니다.
마운트가 읽기 전용 일 수 있으므로 문제의 파일 시스템에 쓰기를 시도하는 것이 내가 할 수있는 일이 아닙니다.
지금까지 내가 알아 낸 유일한 점은 마운트 장치를 점검하고 여전히 존재하는지 (플래시 키를 가져올 때/dev/sd * 항목이 사라짐) 볼 수 있다는 것입니다. 이 일을하는 더 좋은 방법이있는 것 같지만 아직 이해할 수 없었습니다.
드라이브가 마운트 해제 될 때까지/proc/mounts에 있습니다. –
드라이브가 물리적으로 제거 된 후에도/proc/mounts에 있습니까? – Alex
네, 그게 문제입니다. 그뿐 아니라 마운트 포인트의 'stat'와 같은 것들이 드라이브가있는 것처럼 돌아가고 심지어 ls/mnt/mountpoint조차도 어떤 종류의 실패 대신 빈 디렉토리를 반환합니다. 필자는 모든 파일 시스템에서 발생하는지는 모르지만 fat32에서 발생하며 fat32를 지원해야하므로 더 이상 보지 않았습니다. –