12Aug

¿Por qué hay una gran diferencia entre "Tamaño" y "Tamaño en el disco"?

La mayoría de las veces, los valores de 'Tamaño' y 'Tamaño en el disco' estarán muy cerca de coincidir cuando se compruebe el tamaño de una carpeta o archivo, pero ¿qué pasa si hay una gran discrepancia entre los dos? La publicación SuperUser Q & A de hoy en día analiza la respuesta a este confuso problema.

Pregunta de hoy &La sesión de respuesta nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web Q & A dirigida por la comunidad.

La pregunta

SuperUser reader thelastblack quiere saber por qué hay una gran diferencia entre "Tamaño" y "Tamaño en el disco" para una carpeta en la tarjeta SD de su teléfono:

Como puede ver a continuación, hay mucha diferencia entre elLos campos 'Tamaño' y 'Tamaño en el disco' para esta carpeta.¿Porqué es eso?

Sé que 'Tamaño en el disco' debería ser un poco más que 'Tamaño' debido a las unidades de asignación en Windows, pero ¿por qué hay tanta diferencia?¿Podría ser debido a la gran cantidad de archivos?

BTW, esta carpeta está en la tarjeta SD de mi teléfono Android. Dentro de esto, mi aplicación de mapas almacena sus mapas en caché, y la aplicación obtiene sus mapas de Google Maps.

Mirando la captura de pantalla, definitivamente hay una gran discrepancia entre 'Tamaño' y 'Tamaño en el disco', entonces, ¿qué ha sucedido aquí para causar esto?

La respuesta

SuperUser contribuidor Bob tiene la respuesta para nosotros:

Asumiré que está utilizando el sistema de archivos FAT / FAT32 aquí, ya que menciona que se trata de una tarjeta SD.NTFS y exFAT se comportan de manera similar con respecto a las unidades de asignación. Otros sistemas de archivos pueden ser diferentes, pero de todos modos no son compatibles con Windows.

Si tiene muchos archivos pequeños, esto es ciertamente posible. Considere esto:

  • 50,000 archivos
  • 32 KB de tamaño de cluster( unidades de asignación), que es el máximo para FAT32

Ok, ahora el mínimo tomado es de 50,000 * 32,000 = 1.6 GB( usando prefijos SI, no binarios, para simplificar elmatemáticas).El espacio que ocupa cada archivo en el disco es siempre un múltiplo del tamaño de la unidad de asignación, y aquí asumimos que cada archivo es lo suficientemente pequeño como para caber dentro de una sola unidad, con un poco de espacio( desperdiciado).

Si cada archivo tiene un promedio de 2 KB, obtendrá aproximadamente 100 MB en total, pero también está desperdiciando 15 veces ese( 30 KB por archivo) en promedio debido al tamaño de la unidad de asignación.

Explicación en profundidad

¿Por qué sucede esto? Bueno, el sistema de archivos FAT32 necesita realizar un seguimiento de dónde se almacena cada archivo. Si fuera a mantener una lista de cada byte, la tabla( como una libreta de direcciones) crecería a la misma velocidad que los datos, y desperdiciaría mucho espacio. Entonces lo que hacen es usar "unidades de asignación", también conocidas como "tamaño de conglomerado".El volumen se divide en estas unidades de asignación, y en lo que respecta al sistema de archivos, no se pueden subdividir: esos son los bloques más pequeños que puede abordar. Al igual que usted tiene un número de casa, pero a su cartero no le importa cuántos dormitorios tiene o quién vive en ellos.

Entonces, ¿qué ocurre si tienes un archivo muy pequeño? Bueno, al sistema de archivos no le importa si el archivo tiene 0 KB, 2 KB o incluso 15 KB, le dará el menor espacio posible. En el ejemplo anterior, eso es 32 KB.Su archivo solo está usando una pequeña cantidad de este espacio, y el resto se desperdicia básicamente, pero aún pertenece al archivo, al igual que un dormitorio que deja desocupado.

¿Por qué hay diferentes tamaños de unidades de asignación? Bueno, se convierte en una compensación entre tener una mesa más grande( libreta de direcciones, por ejemplo, decir que John posee una casa en 123 Fake Street, 124 Fake Street, 666 Satan Lane, etc.), o más espacio perdido en cada unidad( casa).Si tiene archivos más grandes, tiene más sentido usar unidades de asignación más grandes, porque un archivo no obtiene una nueva unidad( casa) hasta que se completen todas las demás. Si tienes muchos archivos pequeños, bueno, vas a tener una gran mesa( libreta de direcciones) de todos modos, así que también puedes darles unidades pequeñas( casas).

Las grandes unidades de asignación, como regla general, perderán mucho espacio si tienes muchos archivos pequeños. Por lo general, no hay una buena razón para ir por encima de 4 KB para uso general.

Fragmentación?

En cuanto a la fragmentación, la fragmentación no debe desperdiciar espacio de esta manera. Los archivos grandes pueden estar fragmentados, es decir, divididos, en varias unidades de asignación, pero cada unidad debe llenarse antes de que se inicie la siguiente. La desfragmentación podría ahorrar un poco de espacio en las tablas de asignación, pero este no es su problema específico.

Posibles soluciones

Como gladiator2345 sugirió, sus únicas opciones reales en este momento son vivir con él o reformatearlo con unidades de asignación más pequeñas.

Es posible que su tarjeta esté formateada en FAT16, que tiene un límite más pequeño en el tamaño de la tabla y, por lo tanto, requiere unidades de asignación mucho más grandes para abordar un volumen mayor( con un límite superior de 2 GB con unidades de asignación de 32 KB).Fuente cortesía de Braiam. Si ese es el caso, debería ser capaz de formatear de forma segura como FAT32 de todos modos.

¿Tiene algo que agregar a la explicación? Suena apagado en los comentarios.¿Desea leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Mira el hilo de discusión completo aquí.