DSLR에서 사용 중인 SD 카드의 파일 시스템을 마운트 해제할 때마다 명령이 완료될 때까지 몇 초 정도 기다려야 합니다 umount
. FS를 읽기 전용으로 마운트하고 즉시 마운트 해제한 경우에도 마찬가지입니다. 마운트 명령은 간단합니다.
mount /dev/sdd1 /mnt/tmp -oro
나는 무슨 일이 일어나고 있는지 확인하기 위해 설정을 시도했고 vm.block_dump=1
이것이 내가 발행했을 때 본 것입니다 umount /mnt/tmp
:
$ tail -n9999 /var/log/kern.log | grep sdd1
<...>
Jul 7 16:56:42 IntegralH kernel: [143924.204781] umount(16203): READ block 1635 on sdd1 (1 sectors)
Jul 7 16:56:42 IntegralH kernel: [143924.210786] umount(16203): READ block 1636 on sdd1 (1 sectors)
Jul 7 16:56:42 IntegralH kernel: [143924.216805] umount(16203): READ block 1637 on sdd1 (1 sectors)
Jul 7 16:56:42 IntegralH kernel: [143924.222841] umount(16203): READ block 1638 on sdd1 (1 sectors)
Jul 7 16:56:42 IntegralH kernel: [143924.228867] umount(16203): READ block 1639 on sdd1 (1 sectors)
<...>
Jul 7 16:57:34 IntegralH kernel: [143976.105848] umount(16203): READ block 9006 on sdd1 (1 sectors)
Jul 7 16:57:34 IntegralH kernel: [143976.111932] umount(16203): READ block 9007 on sdd1 (1 sectors)
Jul 7 16:57:34 IntegralH kernel: [143976.117915] umount(16203): READ block 9008 on sdd1 (1 sectors)
블록 1639 이후의 건너뛴 부분은 1639와 9006 사이의 각 블록에 대한 단일 블록 읽기로 구성됩니다. 내 의심이 맞는지 확인하기 위해 FS의 첫 번째 섹터를 확인했습니다.
$ sudo head -c 40 /dev/sdd1 | xxd -g1
0000000: eb 00 90 43 41 4e 4f 4e 45 4f 53 00 02 40 62 06 ...CANONEOS..@b.
0000010: 02 00 00 00 00 f8 00 00 3f 00 ff 00 00 20 00 00 ........?.... ..
0000020: 00 18 9a 03 cf 1c 00 00 ........
예약된 섹터(FAT의 첫 번째 섹터를 나타냄, 오프셋 0x0E의 2바이트) 수가 0x662, 즉 1634임을 알 수 있습니다. FAT의 크기(오프셋 0x24에서 4바이트)는 0x1ccf, 즉 7375 =9008+1-1634입니다. 즉, 드라이버는 첫 번째 섹터를 제외한 전체 FAT를 읽습니다.
이제 드라이버가 파일 시스템을 마운트 해제하기 위해 전체 FAT를 읽어야 하는 이유가 무엇인지 궁금합니다. 이렇게 시간이 많이 걸리는 작업을 피하는 방법은 무엇입니까?