문맥상 저는 커널 6.1을 사용하고 있으므로 5.7 이후의 트리 내 exFAT 커널 드라이버를 사용하고 있습니다.
현재 exFAT로 포맷된 플래시 드라이브를 연결하고 여기에 쓰면 RAM 캐시에 쓰고 천천히 플래시로 플러시됩니다. 사용자 공간 응용 프로그램(따라서 사용자)에게는 드라이브(또는 더 정확하게는 파티션)를 마운트 해제하려고 시도하거나 중단될 때까지 쓰기가 완료된 것처럼 보이기 때문에 이는 좋지 umount
않습니다 udisksctl
. 더 나쁜 것은, 사용자가 이 동작을 인식하지 못하고 플러그를 뽑기 전에 제거하지 않는 나쁜 습관을 갖고 있다면 소리 없이 데이터가 손상될 뿐이라는 것입니다.
그래서 저는 이 캐싱 동작을 비활성화하고 싶습니다. 읽으면서 man mount
exFAT가 전혀 언급되지 않은 것이 놀랍습니다. "FAT 설치 옵션" 섹션 아래에 옵션이 있습니다 flush
. 그러나 내가 올바르게 이해했다면 exFAT exfat
는 드라이버가 vfat
FAT16 및 FAT32 등을 처리하는 방식과 다르기 때문에 이 섹션은 exFAT에 적용되지 않습니다.
실제로 flush
이 옵션을 사용하여 exFAT 파티션을 마운트하려고 하면 오류가 발생합니다.
# sda1 is my exFAT partition
$ udisksctl mount -b /dev/sda1 -o flush
Error mounting /dev/sda1: GDBus.Error:org.freedesktop.UDisks2.Error.OptionNotPermitted: Mount option `flush' is not allowed
exfat
그렇다면 현재 드라이버는 쓰기 캐싱 비활성화를 지원하지 않습니까? 그렇지 않은 경우 해결 방법이 있습니까?