¿Por qué Windows todavía tiene fragmentación de disco?

Asumiré que te refieres al sistema de archivos NTFS para Windows, con Linux, te refieres al sistema de archivos ext4 (aunque esto también se aplica a muchos otros), y OS X te refieres a HFS +.

Primero, analicemos rápidamente qué es la fragmentación. La fragmentación es el acto de un sistema de archivos que divide una porción de datos en varias ubicaciones espaciadas al azar en un disco. Por lo general, se debe a que los archivos superan el espacio que originalmente se asignaron y se ejecutan en el siguiente archivo adyacente en el disco, o un sistema de archivos que escribe datos en el primer espacio vacío disponible sin considerar si será lo suficientemente grande como para contener el archivo.

En ambos casos, cuando el sistema de archivos se queda sin espacio, busca el siguiente lugar vacío en el disco y continúa escribiendo allí. La fragmentación es un problema porque los cabezales de lectura / escritura de una unidad de disco giratoria tardan en saltar alrededor del disco para buscar todos los fragmentos de un archivo. Ese tiempo da como resultado un rendimiento de disco lento.

Hay dos enfoques principales para lidiar con la fragmentación. Deja que suceda y limpia el desorden periódicamente. O prevenirlo y corregirlo activamente.

NTFS en gran medida permite que suceda y lo limpia más tarde mediante el acto de desfragmentación. Al escribir datos, NTFS lo deja en el primer lugar disponible. Es lo suficientemente inteligente como para dejar un pequeño colchón alrededor de los datos para acomodar un pequeño crecimiento en el tamaño del archivo, y tiene algunas otras medidas de prevención inteligentes, pero eso es todo. Cuando un disco está en gran parte vacío y no ha tenido años de escritura y eliminación de archivos, esta práctica funciona bien. Sin embargo, a medida que el disco se llena, o si ve mucho espacio de asignación y desasignación, la fragmentación se convierte en un problema.

Ext4 y HFS + toman el otro enfoque y evitan activamente la fragmentación cuando sea posible. Ambos utilizan una serie de técnicas para garantizar esto. Básicamente se reduce a estos elementos de archivo que escriben datos en ubicaciones con mucho espacio vacío a su alrededor y, cuando es necesario, mueven archivos en el disco para abrir un espacio lo suficientemente grande.

En resumen, ext4 y HFS + no necesitan desfragmentación porque evitan la fragmentación. NTFS necesita desfragmentación porque permite la fragmentación. Evitar la fragmentación sin afectar negativamente el rendimiento es un desafío e implica una sobrecarga computacional adicional. También hace que sea más difícil predecir con precisión el rendimiento en circunstancias específicas. Sin embargo, cuando está bien implementado, como en ext4, funciona muy bien.

Solo puedo especular sobre por qué Microsoft no previene activamente la fragmentación. Tienen suficientes ingenieros inteligentes y dinero para implementar un buen sistema de archivos que funcione de esta manera. En las discusiones en los comentarios, se me ocurrieron las siguientes razones por las que creo que Microsoft no persigue esto, y por qué creo que esa elección es una buena idea:

  • NTFS no es muy propenso a la fragmentación a menos que el disco esté muy lleno o se escriban y eliminen constantemente muchos archivos grandes del disco. Incluye muchas medidas de reducción de la probabilidad de fragmentación, simplemente no impide que ocurra activamente y no es tan militante como los competidores.
  • El usuario promedio de Windows no se beneficia. Linux tiene una base de usuarios muy diferente. La mayoría de los usuarios domésticos de Windows navegan por Internet, editan algunos documentos y almacenan un puñado de fotos de sus hijos. El disco no se usa mucho. La mayoría de las empresas usan las computadoras con Windows como poco más que terminales a los recursos de red. No se almacena mucho en el disco local, se almacena en un servidor en algún lugar y la computadora accede a él allí. No ocurre mucha fragmentación con estos casos de uso.
  • Las versiones más nuevas de Windows ejecutan automáticamente la desfragmentación en un horario, cuando el disco está inactivo, detrás de escena, lo que reduce los problemas de disco muy fragmentados que ocurrían regularmente con FAT32 y Windows XP y versiones anteriores.
  • Dado que la fragmentación no es un gran problema, por las razones anteriores, hay mejores lugares para que Microsoft invierta dinero. Microsoft ha avanzado mucho en la prevención de la corrupción, la recuperación de datos, el ahorro de espacio (con desduplicación), el cifrado de disco, la compresión sobre la marcha, la configuración de varios discos y más. NTFS se actualiza regularmente con nuevas características a este respecto, y Microsoft tiene un nuevo sistema de archivos utilizado en sus servidores de archivos (llamado ReFS) que aprovecha al máximo estas capacidades recientemente investigadas.
  • Las medidas antifragmentación causan otros problemas que luego deben ser manejados. Cuando se lanzó ext4, su reclamo a la fama se retrasó en la asignación. Y las primeras encarnaciones llevaron a una pérdida de datos bastante grande para los usuarios, y tuvieron un desempeño horrendo (http://thunk.org/tytso/blog/2009… – https://lwn.net/Articles/322823/ – http: / /thread.gmane.org/gmane.li…). El sistema de archivos de Microsoft está en el lado de la precaución y la confiabilidad.

En cuanto a “guardar archivos pequeños en una gran parte”, esto se conoce como tamaño de clúster o tamaño de unidad de asignación . Esencialmente, el tamaño del clúster es el espacio mínimo asignado por un sistema de archivos.

Para fines ilustrativos, digamos que teníamos un tamaño de clúster de 32 bytes. Y un archivo de 8 bytes. Cuando se escribe en el disco, el sistema de archivos dedicará 32 bytes a ese archivo, aunque no use todo el espacio. Ahora digamos que el archivo tiene 64 bytes. Esto requiere dos grupos, y ambos grupos están completamente llenos. Ahora imaginemos 72 bytes para el archivo. Aquí, se usan 3 grupos, y uno de ellos no está completamente lleno.

El uso de clústeres hace que sea más fácil y rápido que un sistema de archivos realice un seguimiento y encuentre archivos en el disco. La desventaja de los grupos es que se desperdicia el exceso de espacio en un grupo. El aumento del tamaño del clúster teóricamente da como resultado un mejor rendimiento, pero más espacio desperdiciado. En la práctica, cambiar el tamaño predeterminado del clúster no hace mucha diferencia con las velocidades y tamaños de disco modernos.

Si lo desea, NTFS admite el cambio de tamaños de clúster y esa opción se puede configurar al formatear un disco.

Windows no tiene un problema de fragmentación. No ha tenido este problema en mucho tiempo.

Hay dos tipos de fragmentación, archivo y disco. La fragmentación del archivo es mala, porque significa que el disco tiene que realizar muchas operaciones de búsqueda al leer un solo archivo. La fragmentación del disco es buena, porque un disco no fragmentado provoca la fragmentación del archivo cuando el tamaño del archivo aumenta. Windows, Linux y Mac tienen fragmentación de disco. Ninguno de ellos tiene fragmentación de archivos a menos que el disco tenga demasiado espacio libre para desfragmentar automáticamente un archivo al guardarlo.

Windows NTFS resolvió esto hace mucho tiempo. FAT32 todavía tiene problemas de fragmentación porque es un sistema de archivos antiguo.