USB 카드 리더기에서 SD 플래시 카드를 마운트 해제한 다음 카드를 제거하면 파일 시스템이 "더러운" 상태로 유지됩니다.
체계:
- RPi 또는 xubuntu 16.04.3
- 카드 리더기는 매우 저렴한 중국 카드 리더기입니다. 나는 몇 가지 다른 것을 시도했다
- 나는 다양한 SD 카드를 사용해 보았습니다.
재현 방법:
- 카드 리더기 연결
- vfat가 포함된 SD 카드를 첫 번째 파티션에 삽입하세요.
- 시스템이 SD 카드를 감지할 때까지 기다립니다.
- 시스템이 파일 시스템을 자동으로 마운트하거나 수동으로 마운트할 때까지 기다립니다.
- 임의의 파일을 업데이트하려면 다음을 수행합니다.
date >> /media/mogul/2E3E-AE54/d
- 제거:
sudo umount /dev/sdd1
- (자리 표시자, 여기서는 아무것도 하지 마세요)
- 카드리더에서 SD카드를 제거하세요.
이제 2단계를 반복하세요. dmesg를 주시하면 다음이 표시됩니다.
[357207.805594] FAT-fs (sdd1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
(최신 리눅스 지원 dmesg -w
)
지금, 만약 내가umount
- SD 카드에서 임의의 바이트를 읽습니다. 예:
dd if=/dev/sdd1 skip=1000000 ibs=1 count=1 of=/dev/null
파일 시스템이 아직 존재하는 것 같습니다.
이것은 나에게 약간 진부한 것 같습니다. 기본적인 것을 놓치고 있습니까?
더 우아한 솔루션이 있습니까?
카드 리더기를 사용하고 싶지 않지만 eject
꺼내서 umount, since
전원을 끄면 카드 리더기를 다시 삽입할 때까지 시스템이 새 SD 카드를 감지하지 못합니다.
답변1
7단계로 다음을 시도해 보세요.
echo 1 | sudo tee /sys/block/sdd/device/delete
또는 루트로 실행 중인 경우에는
echo 1 > /sys/block/sdd/device/delete
이는 장치가 곧 제거될 예정임을 커널에 알리고 /dev/sdd
, 파일 시스템 손상을 방지하기 위해 카드에 남아 있는 모든 쓰기 버퍼를 제어된 플러시로 트리거해야 합니다.
이로 인해 이 명령과 유사하게 리더의 전원이 꺼질 수 있습니다 eject
. 그럴 경우 장치가 곧 제거된다는 의미가 아니라 버퍼를 플러시하는 것이 대안이 될 수 있습니다. 이는 다음 명령을 사용하여 달성할 수 있습니다 blockdev
.
sudo blockdev --flushbufs /dev/sdd
그래도 도움이 되지 않는다면 카드 리더가 핫 스왑 가능한 카드를 지원하지 않는 것일 수 있습니다. 이것은 값싼 독자들에게 가능합니다. 이러한 유형의 카드 리더를 사용하는 유일한 안전한 방법은 먼저 USB 포트에서 카드 리더를 분리한 다음 카드 리더에서 카드를 제거하는 것입니다.
답변2
7단계에서 명령을 실행하면 sync
버퍼 캐시가 SD 카드에 기록되고 깨끗한 파일 시스템이 생성됩니다.