En el mantenimiento de sistemas de archivos , la desfragmentación es un proceso que reduce el grado de fragmentación , es decir, la fragmentación de archivos almacenados en múltiples segmentos no contiguos en el medio de almacenamiento. Esto se logra organizando físicamente el contenido del dispositivo de almacenamiento masivo en el menor número posible de regiones contiguas (fragmentos, extensiones ). Además, se intenta crear regiones de espacio libre más grandes mediante la compactación para evitar que la fragmentación vuelva a aparecer.
La desfragmentación es ventajosa y relevante para los sistemas de archivos en unidades de disco electromecánicas ( discos duros , disqueteras y unidades ópticas ). El movimiento de los cabezales de lectura/escritura del disco duro sobre diferentes áreas del disco al acceder a archivos fragmentados es más lento que el acceso secuencial al contenido completo de un archivo no fragmentado sin mover los cabezales de lectura/escritura para buscar otros fragmentos.
Causas de la fragmentación
La fragmentación se produce cuando el sistema de archivos no asigna suficiente espacio contiguo para almacenar un archivo completo como una unidad, sino que coloca partes del mismo en espacios entre archivos existentes. Generalmente, estos espacios se crean al eliminar un archivo y, a veces, al asignarle espacio adicional. Los archivos a los que se añaden y eliminan archivos con frecuencia (como los archivos de registro), así como un mayor número de archivos, contribuyen a la fragmentación y a la consiguiente pérdida de rendimiento. La desfragmentación busca mitigar estos problemas.
Ejemplo

Un disco vacío contiene cinco archivos, de la A a la E, cada uno de los cuales utiliza 10 bloques de espacio (en esta sección, un bloque es una unidad de asignación del sistema de archivos ; el tamaño del bloque se establece al formatear el disco y puede ser cualquier tamaño compatible con el sistema de archivos). En un disco vacío, todos estos archivos se asignarían uno tras otro (véase el ejemplo 1 en la imagen). Si se eliminara el archivo B, habría dos opciones: marcar el espacio del archivo B como vacío para usarlo posteriormente, o mover todos los archivos posteriores a B de manera que el espacio vacío quede al final. Dado que mover los archivos podría llevar mucho tiempo si hubiera muchos archivos que mover, normalmente el espacio vacío simplemente se deja allí, marcado en una tabla como disponible para nuevos archivos (véase el ejemplo 2 en la imagen). [ nb 1 ] Cuando se asigna un nuevo archivo, F, que requiere 6 bloques de espacio, podría colocarse en los primeros 6 bloques del espacio que antes ocupaba el archivo B, y los 4 bloques siguientes permanecerán disponibles (véase el ejemplo 3 en la imagen). Si se agrega otro archivo nuevo, G, que solo necesita 4 bloques, podría ocupar el espacio después de F y antes de C (ejemplo 4 en la imagen). Cada sección de archivo se almacena en paquetes separados en toda la unidad; cuando se elimina el archivo, deja espacios sin usar que contribuyen a la fragmentación del disco.
Sin embargo, si es necesario expandir el archivo F, existen tres opciones, ya que el espacio inmediatamente posterior ya no está disponible:
- Mueva el archivo F a una ubicación donde pueda crearse como un único archivo contiguo del nuevo tamaño, que será mayor. Esto no sería posible si el archivo es mayor que el espacio contiguo más grande disponible. Además, el archivo podría ser tan grande que la operación tardaría un tiempo excesivo.
- Mueva todos los archivos después de F hasta que uno libere suficiente espacio para que vuelvan a ser contiguos. Esto presenta el mismo problema que en el ejemplo anterior: si hay pocos archivos o no hay muchos datos que mover, no es un gran problema, pero si hay miles o incluso decenas de miles de archivos, no hay tiempo suficiente para moverlos todos.
- Agregue un nuevo bloque en otro lugar e indique que F tiene una segunda extensión (vea el ejemplo 5 en la imagen). Repita esto cientos de veces y el sistema de archivos tendrá varios segmentos pequeños libres dispersos en muchos lugares, y algunos archivos tendrán múltiples extensiones. Cuando un archivo tiene muchas extensiones de este tipo, el tiempo de acceso a ese archivo puede volverse excesivamente largo debido a todas las búsquedas aleatorias que el disco tendrá que realizar al leerlo.
Además, el concepto de «fragmentación» no se limita a archivos individuales con múltiples extensiones en el disco. Por ejemplo, un grupo de archivos que normalmente se leen en una secuencia determinada (como los archivos a los que accede un programa durante su carga, que pueden incluir ciertas DLL , varios archivos de recursos o los gráficos y el audio de un juego) puede considerarse fragmentado si no se encuentran en orden de carga secuencial en el disco, incluso si estos archivos individuales no están fragmentados; los cabezales de lectura/escritura tendrán que buscar estos archivos (no fragmentados) aleatoriamente para acceder a ellos en secuencia. Algunos grupos de archivos pueden haberse instalado originalmente en la secuencia correcta, pero se desorganizan con el tiempo a medida que se eliminan ciertos archivos dentro del grupo. Las actualizaciones son una causa común de esto, ya que para actualizar un archivo, la mayoría de los actualizadores suelen eliminar primero el archivo antiguo y luego escribir uno nuevo y actualizado en su lugar. Sin embargo, la mayoría de los sistemas de archivos no escriben el nuevo archivo en la misma ubicación física del disco. Esto permite que archivos no relacionados ocupen los espacios vacíos que quedan.
Mitigación
La desfragmentación consiste en mover extensiones de archivos (bloques de asignación física) para que finalmente se fusionen, preferiblemente en una sola. Esto suele requerir al menos dos operaciones de copia: una para mover los bloques a un espacio libre en el disco para que se puedan realizar más movimientos, y otra para moverlos finalmente a su ubicación definitiva. En este proceso, no se elimina ningún dato del disco, por lo que la operación puede detenerse de forma segura incluso en caso de un corte de energía. La imagen del artículo muestra un ejemplo.
Para desfragmentar un disco, el software de desfragmentación (también conocido como "desfragmentador") solo puede mover archivos dentro del espacio libre disponible. Esta es una operación intensiva y no se puede realizar en un sistema de archivos con poco o ningún espacio libre. Durante la desfragmentación, el rendimiento del sistema se verá afectado, por lo que es recomendable dejar el ordenador solo durante el proceso para que el desfragmentador no se vea afectado por cambios inesperados en el sistema de archivos. Dependiendo del algoritmo utilizado, puede ser ventajoso o no realizar varias pasadas. La reorganización que implica la desfragmentación no cambia la ubicación lógica de los archivos (definida como su ubicación dentro de la estructura de directorios ).
Además de desfragmentar los archivos de programa, la herramienta de desfragmentación también puede reducir el tiempo que tardan en cargarse los programas y abrirse los archivos. Por ejemplo, el desfragmentador de Windows 9x incluía el Acelerador de Lanzamiento de Aplicaciones de Intel, que optimizaba los programas en el disco colocando los archivos de programa desfragmentados y sus dependencias uno al lado del otro, en el orden en que el programa los carga, para cargar estos programas más rápido. [ 1 ] En Windows, un buen desfragmentador leerá los archivos de precarga para identificar la mayor cantidad posible de estos grupos de archivos y colocará los archivos dentro de ellos en secuencia de acceso.
Al inicio del disco duro, las pistas exteriores tienen una tasa de transferencia de datos mayor que las pistas interiores. Colocar los archivos de acceso frecuente en las pistas exteriores aumenta el rendimiento. [ 2 ] Los desfragmentadores de terceros, como MyDefrag, moverán los archivos de acceso frecuente a las pistas exteriores y los desfragmentarán. [ 3 ]
Las mejoras en los discos duros modernos, como la caché RAM , la mayor velocidad de rotación de los platos, la cola de comandos ( SCSI / ATA TCQ o SATA NCQ ) y una mayor densidad de datos, reducen en cierta medida el impacto negativo de la fragmentación en el rendimiento del sistema, aunque el aumento en las cantidades de datos comúnmente utilizadas contrarresta esos beneficios. Sin embargo, los sistemas modernos se benefician enormemente de las enormes capacidades de disco disponibles actualmente, ya que los discos parcialmente llenos se fragmentan mucho menos que los discos llenos, [ 4 ] y en un HDD de alta capacidad, la misma partición ocupa un rango menor de cilindros, lo que resulta en búsquedas más rápidas. Sin embargo, el tiempo de acceso promedio nunca puede ser inferior a media rotación de los platos, y la rotación de los platos (medida en rpm) es la característica de velocidad de los HDD que ha experimentado el crecimiento más lento a lo largo de las décadas (en comparación con la tasa de transferencia de datos y el tiempo de búsqueda), por lo que minimizar el número de búsquedas sigue siendo beneficioso en la mayoría de las aplicaciones con gran cantidad de almacenamiento. La desfragmentación es precisamente eso: asegurar que haya como máximo una búsqueda por archivo, contando solo las búsquedas a pistas no adyacentes.
Particionamiento
Una estrategia común para optimizar la desfragmentación y reducir el impacto de la fragmentación consiste en particionar el disco duro de forma que se separen las particiones del sistema de archivos con mayor volumen de lecturas que de escrituras de las zonas más volátiles, donde los archivos se crean y eliminan con frecuencia. Los directorios que contienen los perfiles de usuario se modifican constantemente (especialmente con el directorio Temp y la caché del navegador web, que crean miles de archivos que se eliminan en pocos días). Si los archivos de los perfiles de usuario se almacenan en una partición dedicada (como se suele hacer en los sistemas de archivos recomendados por UNIX , donde normalmente se almacenan en la partición /var), el desfragmentador funciona mejor, ya que no necesita gestionar todos los archivos estáticos de otros directorios. (Alternativamente, se puede configurar el desfragmentador para que simplemente excluya ciertas rutas de archivo). Para particiones con relativamente poca actividad de escritura, el tiempo de desfragmentación mejora considerablemente tras la primera desfragmentación, ya que el desfragmentador solo tendrá que desfragmentar un número reducido de archivos nuevos en el futuro.
Desfragmentación sin conexión
La presencia de archivos del sistema inamovibles, especialmente el archivo de intercambio , puede dificultar la desfragmentación. Estos archivos se pueden mover de forma segura cuando el sistema operativo no está en uso. Por ejemplo, ntfsresize mueve estos archivos para redimensionar una partición NTFS . La herramienta PageDefrag podía desfragmentar archivos del sistema de Windows, como el archivo de intercambio y los archivos que almacenan el registro de Windows , ejecutándose al arrancar el sistema antes de que se cargara la interfaz gráfica. Desde Windows Vista, esta función no es totalmente compatible y no se ha actualizado.
En NTFS, a medida que se agregan archivos al disco, la Tabla Maestra de Archivos (MFT) debe crecer para almacenar la información de los nuevos archivos. Cada vez que la MFT no se puede extender debido a que algún archivo lo impide, la MFT gana un fragmento. En versiones anteriores de Windows, no se podía desfragmentar de forma segura mientras la partición estaba montada, por lo que Microsoft escribió un bloqueo en la API de desfragmentación . Sin embargo, desde Windows XP , un número creciente de desfragmentadores ahora pueden desfragmentar la MFT, porque la API de desfragmentación de Windows se ha mejorado y ahora admite esa operación de movimiento. [ 5 ] Incluso con las mejoras, los primeros cuatro clústeres de la MFT siguen sin poder ser movidos por la API de desfragmentación de Windows, lo que resulta en que algunos desfragmentadores almacenen la MFT en dos fragmentos: los primeros cuatro clústeres donde estaban ubicados cuando se formateó el disco, y luego el resto de la MFT al principio del disco (o donde la estrategia del desfragmentador considere que es el mejor lugar).
discos de estado sólido
Al leer datos de un disco duro electromecánico convencional, el controlador del disco debe primero posicionar el cabezal, relativamente despacio, en la pista donde reside un fragmento determinado, y luego esperar mientras el plato del disco gira hasta que el fragmento llegue al cabezal. Una unidad de estado sólido (SSD) se basa en memoria flash sin partes móviles, por lo que el acceso aleatorio a un fragmento de archivo en la memoria flash no sufre este retraso, lo que hace innecesaria la desfragmentación para optimizar la velocidad de acceso. Además, dado que la memoria flash solo se puede escribir un número limitado de veces antes de que falle, la desfragmentación es perjudicial (excepto para mitigar una falla catastrófica ). Sin embargo, Windows sigue desfragmentando una SSD automáticamente (aunque con menos intensidad) para evitar que el sistema de archivos alcance su tolerancia máxima de fragmentación (cuando los metadatos ya no pueden representar más fragmentos de archivo). Una vez alcanzado el límite máximo de fragmentación, los intentos posteriores de escribir en el disco fallan. [ 6 ]
Enfoques y desfragmentadores según el tipo de sistema de archivos.

- FAT : Los sistemas MS-DOS 6.x y Windows 9x incluyen una utilidad de desfragmentación llamada Defrag. La versión de DOS es una versión limitada de Norton SpeedDisk. [ 7 ] La versión que venía con Windows 9x tenía licencia de Symantec Corporation , y la versión que venía con Windows 2000 y XP tiene licencia de Condusiv Technologies .
- NTFS se introdujo con Windows NT 3.1 , pero el controlador del sistema de archivos NTFS no incluía ninguna capacidad de desfragmentación. [ 8 ] En Windows NT 4.0 , se introdujeron API de desfragmentación que las herramientas de terceros podían usar para realizar tareas de desfragmentación; sin embargo, no se incluyó ningún software de desfragmentación. En Windows 2000 , Windows XP y Windows Server 2003 , Microsoft incluyó una herramienta de desfragmentación basada en Diskeeper [ 9 ] que utilizaba las API de desfragmentación y era un complemento para Administración de equipos . En Windows Vista , Windows 7 y Windows 8 , la herramienta se ha mejorado mucho y se le ha dado una nueva interfaz sin mapa de disco visual y ya no forma parte de Administración de equipos. [ 10 ] [ 11 ] También hay una serie de productos de desfragmentación de terceros gratuitos y comerciales disponibles para Microsoft Windows .
- BSD UFS y, en particular, FreeBSD, utilizan un reasignador interno que busca reducir la fragmentación justo en el momento en que la información se escribe en el disco. [ 12 ] Esto controla eficazmente la degradación del sistema después de un uso prolongado.
- Btrfs dispone de desfragmentación automática y en línea. [ 13 ] [ 14 ]
- Linux ext2 , ext3 y ext4 : Al igual que UFS, estos sistemas de archivos emplean técnicas de asignación diseñadas para mantener la fragmentación bajo control en todo momento. [ 15 ] Como resultado, la desfragmentación no es necesaria en la gran mayoría de los casos. [ 16 ] ext2 utiliza un desfragmentador fuera de línea llamado
e2defrag, que no funciona con su sucesor ext3. Sin embargo, otros programas, o independientes del sistema de archivos comodefragfs, [ 17 ] pueden usarse para desfragmentar un sistema de archivos ext3. ext4 es parcialmente compatible con versiones anteriores de ext3, y por lo tanto tiene generalmente el mismo nivel de soporte de los programas de desfragmentación. Actualmente, e4defrag puede usarse para desfragmentar un sistema de archivos ext4, incluyendo la desfragmentación en línea. - VxFS incluye una
fsadmutilidad que permite realizar operaciones de desfragmentación. - JFS tiene la
defragfsutilidad en los sistemas operativos de IBM. [ 18 ] - HFS Plus, introducido en 1998 con Mac OS 8.1, cuenta con varias optimizaciones en los algoritmos de asignación para intentar desfragmentar archivos mientras se accede a ellos sin un desfragmentador independiente. [ 19 ] Existen varias restricciones para que los archivos sean candidatos a la desfragmentación "sobre la marcha" (incluido un tamaño máximo de 20 MB). Existe una utilidad, iDefrag , de Coriolis Systems, disponible desde OS X 10.3. En Mac OS tradicional, la desfragmentación se puede realizar con Norton SpeedDisk y TechTool Pro.
- WAFL, en el sistema operativo ONTAP 7.2 de NetApp,
reallocatetiene un comando diseñado para desfragmentar archivos grandes. - XFS proporciona una utilidad de desfragmentación en línea llamada
xfs_fsr. - SFS procesa la función de desfragmentación de una manera casi completamente sin estado (aparte de la ubicación en la que está trabajando), por lo que la desfragmentación se puede detener e iniciar instantáneamente. [ 20 ]
- ADFS , el sistema de archivos utilizado por RISC OS y las computadoras Acorn anteriores , mantiene la fragmentación de archivos bajo control sin necesidad de desfragmentación manual. [ 21 ]
Véase también
- Comparación de software de desfragmentación
- Fragmentación (informática)
- fragmentación del sistema de archivos
- imagen de disco virtual
- Nivelación de desgaste , una técnica similar para prolongar el contenido de la memoria flash.
Notas
- ↑ La práctica de marcar el espacio ahora no utilizado de un archivo eliminado en una tabla como disponible para su uso posterior (sin borrar su contenido) es la razón por la que los programas de recuperación de archivos eliminados pueden funcionar; recuperan archivos cuyos nombres se han eliminado del directorio, pero cuyo espacio aún no se ha reutilizado.
Referencias
- ↑ Cwdixon.com Archivado el 6 de octubre de 2010 en Wayback Machine . Cwdixon.com. Consultado el 28 de julio de 2013.
- ↑ El desfragmentador definitivo - El lugar de LaRud . Larud.net (19 de enero de 2012). Consultado el 28 de julio de 2013.
- ↑ "MyDefrag v4.2.8" . Archivado del original el 16/02/2010 . Consultado el 14/08/2014 .
En la mayoría de los discos duros, el inicio es considerablemente más rápido que el final, ¡a veces hasta un 200% más! Puedes comprobarlo tú mismo con utilidades como *HD Tune. Por lo tanto, MyDefrag está diseñado para mover todos los archivos al principio del disco.
- ↑ Serdar Yegulalp (20 de septiembre de 2005). "Los nuevos discos duros reducen la necesidad de desfragmentación" . SearchWindowsServer.com: Guía rápida de desfragmentación de disco . Archivado del original el 3 de junio de 2008. Consultado el 27 de diciembre de 2008 .
- ↑ "Windows XP: Las mejoras en el núcleo crean un sistema operativo más robusto, potente y escalable -- Revista MSDN, diciembre de 2001" . Archivado del original el 24 de abril de 2003. Consultado el 19 de diciembre de 2006 .msdn.microsoft.com: "La otra gran mejora [en Windows XP] es la compatibilidad con la desfragmentación en línea de la MFT y la mayoría de los metadatos de directorios y archivos".
- ↑ Hanselman, Scott (3 de diciembre de 2014). «La historia real y completa: ¿Desfragmenta Windows tu SSD?» . Blog de Scott Hanselman . Microsoft . Archivado del original el 22 de diciembre de 2014.
- ^ Norton, Peter (octubre de 1994). Guía completa de Peter Norton para DOS 6.22 . Sams. pag. 521 . ISBN 978-0-672-30614-3.
- ↑ M. Kozierok, Charles (17 de abril de 2001). "Versiones NTFS" . PC Guide. Archivado del original el 24 de septiembre de 2015. Consultado el 20 de febrero de 2015 .
- ↑ Herramientas de desfragmentación de disco de terceros para Windows . Archivado el 28/11/2011 en Wayback Machine . Support.microsoft.com (23/08/2011). Consultado el 28/07/2013.
- ↑ "Desfragmentación de disco: antecedentes y la ingeniería de las mejoras de Windows 7" . Archivado del original el 13 de junio de 2014. Consultado el 15 de junio de 2014 .
- ↑ "Nuevas opciones de desfragmentación en Windows 8" . 13 de noviembre de 2011. Archivado del original el 20 de febrero de 2015. Consultado el 15 de junio de 2014 .
- ↑ "Páginas de manual de FreeBSD" . El proyecto FreeBSD. Archivado del original el 21 de febrero de 2015. Consultado el 21 de febrero de 2015 .
- ↑ "Desfragmentación" . Documentación de BTRFS . Consultado el 26 de julio de 2024 .
- ↑ "Administración" . Documentación de BTRFS . Consultado el 26 de julio de 2024 .
- ↑ "HTG explica: por qué Linux no necesita desfragmentación" . How-To Geek . Archivado del original el 19 de julio de 2013. Consultado el 1 de agosto de 2013 .
- ↑ 5.10. Sistemas de archivos archivados el 27 de mayo de 2013 en Wayback Machine . Tldp.org (9 de noviembre de 2002). Consultado el 22 de junio de 2013.
- ↑ Erik Bärwaldt: Optimización de la organización de datos en disco. Archivado el 6 de septiembre de 2014 en Wayback Machine.
- ↑ "Soporte para el sistema de archivos de registro" . eComStation . Archivado del original el 8 de diciembre de 2008. Consultado el 27 de diciembre de 2008 .
- ↑ "Fragmentación en volúmenes HFS Plus" . Archivado del original el 18 de noviembre de 2012. Consultado el 2 de septiembre de 2020.
Como hemos visto, un volumen HFS+ parece resistir bastante bien la fragmentación en Mac OS X 10.3.x, y no preveo que la fragmentación sea un problema lo suficientemente grave como para requerir soluciones proactivas (como una herramienta de desfragmentación).
- ↑ "Detección de un punto de fragmentación de archivos para reconstruir archivos fragmentados mediante pruebas de hipótesis secuenciales" . US8407192 B2. Archivado del original el 21 de febrero de 2015. Recuperado el 21 de febrero de 2015 .
- ↑ Reeves, Nick (26 de octubre de 1990). "Documento de diseño en formato E" . Archivado del original el 7 de abril de 2013. Recuperado el 24 de mayo de 2013 .
Fuentes
- Norton, Peter (1994) Guía completa de Peter Norton para DOS 6.22 , página 521 - Sams ( ISBN 067230614X)
- Woody Leonhard, Justin Leonhard (2005) Técnicas para ahorrar tiempo en Windows XP para principiantes, segunda edición, página 456 – Para principiantes ( ISBN) 0-764578-839).
- Jensen, Craig (1994). Fragmentación: La condición, la causa, la cura . Executive Software International ( ISBN) 0-9640049-0-9).
- Dave Kleiman , Laura Hunter, Mahesh Satyanarayana, Kimon Andreou, Nancy G Altholz, Lawrence Abrams, Darren Windham, Tony Bradley y Brian Barber (2006) Winternals: Guía de campo para la desfragmentación, recuperación y administración – Syngress ( ISBN) 1-597490-792)
- Robb, Drew (2003) Administración de discos de servidor en un entorno Windows Capítulo 7 – AUERBACH ( ISBN) 0849324327)
Enlaces externos
- Las pruebas comparativas del desfragmentador de Windows 7 para las utilidades de desfragmentación más populares
- Desfragmentación de Microsoft Windows XP: Cómo programar una desfragmentación semanal. Desfragmentación de Microsoft Windows 2000 Professional y Server: Cómo programar la desfragmentación.
- Optimizador de disco duro SST
- Cómo Linux evita la fragmentación de archivos. Archivado el 4 de junio de 2016 en Wayback Machine.
- Cómo se modificó la desfragmentación en Windows 7
- Lista completa de utilidades de desfragmentación para Windows archivada el 28/05/2016 en Wayback Machine.
- ¿El sistema de archivos de tu SSD afecta al rendimiento?
- Software de desfragmentación
- Gestión del sistema de archivos