Windows에서 exFAT의 기본 할당 크기가 왜 그렇게 높습니까? 때까지 4KB 클러스터 크기를 초과하지 않으며 FAT32는

이 페이지 참조 : https://support.microsoft.com/en-us/kb/140365

NTFS는 볼륨이 16TB를 초과 할 때까지 4KB 클러스터 크기를 초과하지 않으며 FAT32는 최신 버전의 Windows에서 16GB-32GB 볼륨 범위에서 16KB로 최대가됩니다.

그러나 exFAT는 기본적으로 7MB-256MB 볼륨 범위에서 4KB로 설정됩니다. 그 후에는 256MB-32GB 범위에서 32KB로, 그 이상으로 128KB로 점프합니다.

왜 그런 겁니까? 상대적으로 높은 클러스터 크기는 특히 플래시 드라이브와 같은 더 작은 외부 장치 용으로 설계된 형식에서 낭비로 보입니다. 플래시 메모리를 포맷하는 경우에는 이해할 수 있듯이 클러스터 크기가 클수록 단편화가 적고 전체 클러스터를 읽을 수 없어 IO가 빨라지는 이점이 있습니다. 내가 틀렸다면 나를 수정하십시오.하지만 플래시 메모리는 조각화로 인한 속도 저하가 훨씬 적습니다. 그렇다면 왜 클러스터 크기를 그렇게 높게 만드십니까?



답변

exFAT는 주로 대용량 SD 카드 및 SD 카드와 같은 용도로 사용되므로 섹터를 삭제해야 쓰기 가능합니다. 소거 섹터 크기가 큰 카드에서 작은 클러스터를 사용하는 경우 동일한 섹터에 대한 많은 소거 및 쓰기 명령으로 인해 성능이 저하 될뿐만 아니라 플래시를 조기에 닳아 디스크에 몇 개의 순차적 클러스터 데이터를 쓸 수 있습니다. 세포. 소거 섹터 크기는 일반적으로 카드 데이터 시트에 문서화되어 있지 않지만 카드의 CSD 레지스터에서 찾을 수 있습니다. 이 레지스터의 내용은 내부 디자인에 따라 카드마다 다릅니다. SD 카드는 일반적으로 큰 파일을 저장하는 카메라와 같은 장치에서 사용되므로 큰 클러스터 크기의 낭비되는 공간은 중요하지 않습니다.

이 웹 페이지에는 약 12 ​​개의 카드에 대한이 등록 내용이 있습니다.

http://goughlui.com/2014/01/03/project-read-collect-decode-sd-card-csd-register-data/

다음 계산기에 내용을 입력하면 32 / 64GB 카드 중 일부에 대해 지우기 섹터 크기는 128 블록이며 블록은 512 바이트입니다. 2GB 카드의 경우 지우기 섹터 크기는 32 개 블록이며 블록은 1024 바이트입니다.

http://goughlui.com/static/csdecode2.htm

Windows는 CSD 레지스터를 쿼리하고 클러스터 크기를 제안하거나 단순히 파티션 또는 디스크 크기를 기반으로 추측 할 수 있는지 알 수 없을 정도로 똑똑합니다. 마이크로 컨트롤러로 SD 카드를 에뮬레이션했다면 알 수 있습니다.