¿Por qué el tamaño de asignación predeterminado de exFAT en Windows es tan alto?


12

Haciendo referencia a esta página: https://support.microsoft.com/en-us/kb/140365

NTFS no supera el tamaño del clúster de 4KB hasta que el volumen supera los 16 TB, y FAT32 alcanza un máximo de 16 KB en el rango de volumen de 16 GB a 32 GB en las versiones modernas de Windows.

Sin embargo, exFAT solo se establece en 4KB en el rango de volumen de 7MB a 256MB. Después de eso, salta a 32 KB en el rango de 256 MB a 32 GB, y 128 KB más allá de eso.

¿Porqué es eso? Un tamaño de clúster relativamente alto parece un desperdicio, especialmente en un formato diseñado para dispositivos externos más pequeños, como unidades flash. Doblemente si está formateando la memoria flash, porque, según tengo entendido, el principal beneficio de un tamaño de clúster más grande es una E / S más rápida debido a una menor fragmentación y menos clústeres generales para leer. Corríjame si me equivoco, pero la memoria flash es mucho menos propensa a las ralentizaciones causadas por la fragmentación. Entonces, ¿por qué hacer que el tamaño del clúster sea tan alto?


"Tamaño" y "alto" no van juntos. Los números pueden ser "altos". "Grande" es la palabra apostadora en lugar de "alto".
aserrín


¡Solo quería mencionar que acabo de formatear una unidad de 1TB con el tamaño de clúster predeterminado, y Windows usó un tamaño de clúster de 2048 KB! Esto no solo desafía las especificaciones de su página, sino que siempre es MUY alto
woojoo666

Para cualquiera que haya alcanzado esto mediante Google y pueda hacer una copia de seguridad de un directorio git en la unidad / tarjeta en cuestión, también es importante conocer las desventajas de los grandes sectores: cada archivo de ~ 200 bytes en un directorio git ocupa 1 unidad de asignación completa. Los sectores grandes pueden hacer que los directorios de desarrollo (que pueden tener más de 10k archivos pequeños) ocupen un gran múltiplo de sus tamaños normales de HDD. Ej: superuser.com/questions/704218/... superuser.com/questions/1370780/...
kcrumley

Respuestas:


11

Debido a que exFAT se usa principalmente para cosas como tarjetas SD de gran capacidad, y en las tarjetas SD debe borrar un sector antes de poder escribir en él. Si usara pequeños grupos en una tarjeta con un tamaño de sector de borrado grande, se generarían muchos comandos de borrado y escritura en el mismo sector, escriba varios grupos secuenciales de datos en el disco no solo reduciendo el rendimiento sino también desgastando prematuramente el flash células. El tamaño del sector de borrado generalmente no se documenta en las hojas de datos de la tarjeta, pero se puede encontrar en el registro CSD de la tarjeta. El contenido de este registro variará de una tarjeta a otra dependiendo de su diseño interno. Dado que las tarjetas SD generalmente se usan en cosas como cámaras que almacenan archivos grandes, el espacio desperdiciado de un gran tamaño de clúster no es importante,

Esta página web tiene el contenido de este registro para aproximadamente una docena de tarjetas:

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

Y si ingresa su contenido en la siguiente calculadora, puede ver que en algunas de las tarjetas de 32 / 64GB, el tamaño del sector de borrado es de 128 bloques con un bloque de 512 bytes. Y para una tarjeta de 2GB, el tamaño del sector de borrado es de 32 bloques con un bloque de 1024 bytes.

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

Ya sea que Windows sea o no lo suficientemente inteligente como para consultar el registro CSD y sugerir un tamaño de clúster, o si simplemente adivina en función de la partición o el tamaño del disco es desconocido. Si tuviera que emular una tarjeta SD con un microcontrolador, podría averiguarlo.


1
No sabía sobre la necesidad de borrar la memoria flash antes de poder escribir en ella. Eso tiene sentido ahora. ¡Gracias!
InsanityOnABun

1
Parece suponer que las tarjetas SD no tienen una capa de traducción flash, es decir, que los sectores lógicos adyacentes siempre serán físicamente adyacentes en NAND. De lo contrario, los sectores lógicos en un clúster no tendrían que pertenecer al mismo bloque de borrado. ¿Qué evidencia tienes para apoyar esta suposición?
aserrín

De hecho, algunas tarjetas SD y unidades flash de alto rendimiento tienen una capa de traducción y aún así vienen preformateadas con clústeres de 32 kb. He verificado que los clústeres de 4 kb mejoran el rendimiento de las escrituras y lecturas aleatorias
thomasrutter
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.