Acabo de descubrir algo que debí saber hace 20 años. Sobre formartear discos duros y 'cachos'.

Me gusta la informática pero no trabajo de ello. Intento hacer todo lo que pueda por mi cuenta sin contratar a nadie.
Ayer estaba consultando en ChatGPT y surgió la duda cómo formatear correctamente un disco duro.

Los formatos que he llegado a usar hasta ahora fueron NTFS (para uso normal en Windows), FAT32 (para sistemas más antiguos tipo cartuchos flash o PS3) y exFAT (PS4).

Pues resulta que para NTFS si vas a usar archivos muy grandes tipo pelis (uso normal de un disco 2.5 externo) se recomienda usar cachos (o las partes más pequeñas en las que se divide la información) de 16Kb en lugar de poner por defecto, que son 4Kb. Eso hace que el sistema copie los archivos más deprisa al tener menos trozos que leer. Porque la velocidad de lectura y escritura ya es bastante razonable. Si hicieras trozos de 4Kb tendría que leer muchos más trozos pequeños y tardaría más.

El poner trozos pequeños solo va bien si vas a meter fotos o documentos. El tamaño pequeño hace que ocupen menos. Un archivo de 5Kb tendría que ocupar dos de 4Kb en lugar de uno grande de 16Kb.

En exFAT el 'por defecto' ya pone el trozo en 64Kb que ya va bien para el uso que le doy de juegos.

¿Soy el único que no sabía eso?
Sí, me ha pasado parecido. Es muy interesante lo de los chunks o "cachos". Lo había visto a la hora de formatear unidades toda la vida, pero nunca había profundizado en el tema.

Hace poco formateé en exFAT un SSD descartado por un colega que resultó estar en buen estado. De esta forma podría usarlo tanto en una unidad externa con Windows como con Linux para mis probatinas con juegos, emuladores y tal. Le dejé el tamaño de los chunks por defecto, y todo genial.

He notado también que juegos actuales como The Last of Us Part I cargan mucho más rápido, por ejemplo, aunque no estoy seguro de si se debe a que la unidad ofrece mayor velocidad que mi antiguo SSD, por los chunks de mayor tamaño, o por una suma de factores. Seguiré investigando.
Esto es de primero de informática: el tamaño del clúster es el espacio más pequeño que se ocupa, un bloque en disco que al juntar varios bloques conforman el archivo. Tamaños de clúster más pequeños optimizan el espacio "desaprovechado" (guardar un archivo de 1 byte desaprovecha sólo 4095 bytes con un tamaño de clúster de 4kb mientras que desaprovecha 65535 en clúster de 64kb). Pero en archivos grandes, demasiados bloques puede penalizar el rendimiento.

Por cierto, la "penalización" no es siempre evidente. Es relevante en discos mecánicos, pero en SSD probablemente penaliza más en la durabilidad.

Saludos.
@Dym Con cachos te refieres a unidades de asignación ¿verdad? Gracias por compartirlo, es algo que pocos tienen en cuenta, lo normal es aceptar lo que Windows te recomienda por defecto para no complicarte la vida.

Técnicamente hablando cada cluster / unidad de asignación debe almacenarse en una tabla de índices del SO, por lo que con unidades de asignación de 4Kb tienes un índice 4 veces mayor que con unidades de asignación de 16kb, en consecuencia las búsquedas y accesos se ralentizan. Pero claro, ¿quién puede preveer lo que vas a guardar?

En cualquier caso la unidad de asignación de 4Kb es casi un remanente del pasado, lleva entre nosotros desde los tiempos de Windows 95. Ha llovido mucho desde entonces, los discos duros han crecido sobremanera y hasta la foto más pequeña que almacenamos ya ocupa cientos de Kb. ¿Por qué dividirla en unidades de 4kb si con una de 16kb apenas tendré fragmentación? Mira como exFat siendo moderno apuesta por 64kb, más adecuado a los tiempos que corren.

Lo dicho, gracias por compartirlo, no todos se toman el tiempo de hacerlo [beer]
En la inmensa mayoría de los casos no merece la pena modificar el tamaño de cluster, no se obtiene mejora en cuanto a velocidad ni se reduce significativamente el tamaño ocupado, al contrario, se pueden empeorar las cosas, así que cada uno haga lo que quiera...

Saludos.
Hace un tiempo leí que los controladores (chip) de los HDD y SSD más actuales usan un tamaño dinámico, aunque le digas uno especifico es solo virtual, de esta forma el SO (Windows vía MFT) puede ajustar el tamaño para cada archivo y optimizar el rendimiento de lectura/escritura/espacio, de forma que no vas a notar diferencia alguna pongas lo que pongas. Para unidades más antiguas, por USB, Pens, tarjetas Flash, etc. ya si afecta al rendimiento/espacio según lo que selecciones. Tamaño pequeño si vas a trabajar con muchos archivos pequeños, tamaño grande si vas a trabajar con archivos grandes. Entre 4, 8 y 16KB es lo más optimo y apenas hay diferencia de rendimiento.
Un ejemplo:

https://ejrh.wordpress.com/2012/10/26/c ... xperiment/

Aquí estamos simplificando mucho, porque un SSD está organizando de forma diferente: tiene celdas, páginas y bloques. Normalmente las páginas tienen un tamaño de 4kb, pero no siempre es así. Un bloque está compuesto por varias páginas y es la unidad mínima que se procesa en un SSD. Pero la velocidad de un SSD es tan elevada, en comparación con un disco mecánico, que en mi opinión sólo tiene sentido optimizar el tamaño de cluster en discos mecánicos.

Un tamaño de cluster de 4kb , asemejándolo al tamaño de página, parece el valor mejor balanceado por lo general.

Saludos
6 respuestas