En el mantenimiento de sistemas de archivos , la desfragmentación es un proceso que reduce el grado de fragmentación . Para ello, organiza físicamente el contenido del dispositivo de almacenamiento masivo utilizado para almacenar archivos en el menor número de regiones contiguas (fragmentos, extensiones ). También intenta crear regiones más grandes de espacio libre mediante la compactación para impedir el regreso de la fragmentación. Algunas utilidades de desfragmentación intentan mantener juntos los archivos más pequeños dentro de un solo directorio, ya que a menudo se accede a ellos en secuencia.
La desfragmentación es ventajosa y relevante para los sistemas de archivos en unidades de disco electromecánicas ( unidades de disco duro , unidades de disquete y medios de disco óptico ). El movimiento de los cabezales de lectura/escritura del disco duro sobre diferentes áreas del disco cuando se accede a archivos fragmentados es más lento, en comparación con acceder secuencialmente a todo el contenido de un archivo no fragmentado sin mover los cabezales de lectura/escritura para buscar otros fragmentos.
La fragmentación ocurre cuando el sistema de archivos no puede o no quiere asignar suficiente espacio contiguo para almacenar un archivo completo como una unidad, sino que coloca partes del mismo en espacios entre archivos existentes (generalmente esos espacios existen porque anteriormente contenían un archivo que el sistema de archivos tiene). posteriormente eliminado o porque el sistema de archivos asignó exceso de espacio para el archivo en primer lugar). Los archivos que a menudo se agregan (como en el caso de los archivos de registro), así como la frecuente adición y eliminación de archivos (como en el caso de los correos electrónicos y la caché del navegador web), los archivos más grandes (como en el caso de los vídeos) y una mayor cantidad de archivos contribuyen a la fragmentación y el consiguiente rendimiento. pérdida. La desfragmentación intenta aliviar estos problemas.
Un disco que de otro modo estaría en blanco tiene cinco archivos, de la A a la E, cada uno de los cuales utiliza 10 bloques de espacio (para esta sección, un bloque es una unidad de asignación del sistema de archivos ; el tamaño del bloque se establece cuando se formatea el disco y puede tener cualquier tamaño admitido por el sistema de archivos). En un disco en blanco, todos estos archivos se asignarían uno tras otro (consulte el ejemplo 1 en la imagen). Si se eliminara el archivo B, habría dos opciones: marcar el espacio para el archivo B como vacío para usarlo nuevamente más tarde, o mover todos los archivos después de B para que el espacio vacío esté al final. Dado que mover los archivos puede llevar mucho tiempo si es necesario mover muchos archivos, normalmente el espacio vacío simplemente se deja allí, marcado en una tabla como disponible para archivos nuevos (consulte el ejemplo 2 en la imagen). [nb 1] Cuando se asigna un nuevo archivo, F, que requiere 6 bloques de espacio, se podría colocar en los primeros 6 bloques del espacio que anteriormente contenía el archivo B, y los 4 bloques siguientes permanecerán disponibles (ver ejemplo 3 en la imagen). Si se agrega otro archivo nuevo, G, y necesita solo 4 bloques, podría ocupar el espacio después de F y antes de C (ejemplo 4 en la imagen).
Sin embargo, si es necesario ampliar el archivo F, existen tres opciones, ya que el espacio inmediatamente posterior ya no está disponible:
Además, el concepto de "fragmentación" no se limita sólo a archivos individuales que tienen múltiples extensiones en el disco. Por ejemplo, un grupo de archivos que normalmente se leen en una secuencia particular (como archivos a los que accede un programa cuando se está cargando, que pueden incluir ciertas DLL , varios archivos de recursos, los archivos multimedia audiovisuales de un juego) se pueden considerar fragmentados si no están 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. Es posible que algunos grupos de archivos se hayan instalado originalmente en la secuencia correcta, pero se separan con el tiempo a medida que se eliminan ciertos archivos dentro del grupo. Las actualizaciones son una causa común de esto, porque para actualizar un archivo, la mayoría de los actualizadores generalmente eliminan primero el archivo antiguo y luego escriben uno nuevo y actualizado en su lugar. Sin embargo, la mayoría de los sistemas de archivos no escriben el nuevo archivo en el mismo lugar físico del disco. Esto permite que archivos no relacionados llenen los espacios vacíos que quedan.
La desfragmentación es la operación de mover extensiones de archivos (bloques de asignación física) para que eventualmente se fusionen, preferiblemente en uno solo. Hacerlo generalmente requiere al menos dos operaciones de copia: una para mover los bloques a un espacio libre en el disco para que pueda ocurrir más movimiento, y otra para finalmente mover los bloques a su lugar previsto. En tal paradigma, nunca se eliminan datos del disco, por lo que la operación se puede detener 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") sólo 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 degradará y es mejor dejar la computadora en paz durante el proceso para que el desfragmentador no se confunda con cambios inesperados en el sistema de archivos. Dependiendo del algoritmo utilizado, puede resultar ventajoso o no realizar múltiples pasadas. La reorganización involucrada en 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 archivos de programa, la herramienta de desfragmentación también puede reducir el tiempo que lleva cargar programas y abrir archivos. Por ejemplo, el desfragmentador de Windows 9x incluía el Acelerador de inicio de aplicaciones 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 captación previa para identificar tantos grupos de archivos como sea posible y colocar los archivos dentro de ellos en secuencia de acceso.
Al principio del disco duro, las pistas exteriores tienen una velocidad de transferencia de datos más alta que las pistas interiores. Colocar los archivos a los que se accede con frecuencia en las pistas exteriores aumenta el rendimiento. [2] Los desfragmentadores de terceros, como MyDefrag, moverán los archivos a los que se accede con frecuencia a las pistas externas y los desfragmentarán. [3]
Las mejoras en los discos duros modernos, como la caché de RAM , la velocidad de rotación del plato más rápida, la cola de comandos ( SCSI / ATA TCQ o SATA NCQ ) y una mayor densidad de datos, reducen hasta cierto punto el impacto negativo de la fragmentación en el rendimiento del sistema, aunque aumentan los datos de uso común. cantidades compensan 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 disco duro 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 medio de acceso nunca puede ser inferior a media rotación de los platos, y la rotación de los platos (medida en rpm) es la velocidad característica de los HDD que ha experimentado el crecimiento más lento a lo largo de las décadas (en comparación con la velocidad 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 mucho almacenamiento. La desfragmentación es sólo eso: garantizar que haya como máximo una búsqueda por archivo, contando sólo las búsquedas en pistas no adyacentes.
Una estrategia común para optimizar la desfragmentación y reducir el impacto de la fragmentación es particionar los discos duros de una manera que separe las particiones del sistema de archivos que experimentan muchas más lecturas que escrituras de las zonas más volátiles donde se crean y eliminan los archivos. frecuentemente. Los directorios que contienen los perfiles de los usuarios se modifican constantemente (especialmente cuando el directorio Temp y el caché del navegador web crean miles de archivos que se eliminan en unos pocos días). Si los archivos de los perfiles de usuario se guardan en una partición dedicada (como se hace comúnmente 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 manejar todos los archivos estáticos. de otros directorios. (Como alternativa, se le puede indicar al desfragmentador que simplemente excluya ciertas rutas de archivos). Para particiones con relativamente poca actividad de escritura, el tiempo de desfragmentación mejora enormemente después de la primera desfragmentación, ya que el desfragmentador necesitará desfragmentar solo una pequeña cantidad de archivos nuevos en el futuro. .
La presencia de archivos de sistema inamovibles, especialmente un archivo de intercambio , puede impedir 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 cambiar el tamaño de una partición NTFS . La herramienta PageDefrag podría desfragmentar archivos del sistema de Windows, como el archivo de intercambio y los archivos que almacenan el registro de Windows , ejecutándolo en el momento del arranque antes de que se cargue la GUI. Desde Windows Vista, la 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 el MFT no se pueda ampliar debido a que hay algún archivo en el camino, el MFT ganará un fragmento. En las primeras versiones de Windows, no se podía desfragmentar de forma segura mientras la partición estaba montada, por lo que Microsoft escribió un bloque duro en la API de desfragmentación . Sin embargo, desde Windows XP , un número cada vez mayor de desfragmentadores ahora pueden desfragmentar el 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 grupos de MFT permanecen inamovibles por la API de desfragmentación de Windows, lo que resulta en el hecho de que algunos desfragmentadores almacenarán el MFT en dos fragmentos: Los primeros cuatro grupos dondequiera que estuvieran colocados cuando se colocó el disco formateado, y luego el resto del MFT al principio del disco (o donde la estrategia del desfragmentador considere el mejor lugar).
Al leer datos de una unidad de disco duro electromecánica convencional, el controlador de disco debe primero colocar el cabezal, relativamente lentamente, 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 una 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 sólo se puede escribir en la memoria flash un número limitado de veces antes de que falle, la desfragmentación es en realidad perjudicial (excepto para mitigar fallas catastróficas ). Sin embargo, Windows todavía desfragmenta un SSD automáticamente (aunque con menos fuerza) para evitar que el sistema de archivos alcance su máxima tolerancia a la fragmentación. Una vez que se alcanza el límite máximo de fragmentación, los intentos posteriores de escribir en el disco fallan. [6]
Aunque muchos discos duros SMR aceptan el comando TRIM , los discos duros SMR aún necesitan desfragmentación para mejorar el rendimiento. [ cita necesaria ]
e2defrag
, que no funciona con su sucesor ext3. Sin embargo, se pueden utilizar otros programas, o programas independientes del sistema de archivos, como defragfs, [16] para desfragmentar un sistema de archivos ext3. ext4 es algo compatible con ext3 y, por lo tanto, generalmente tiene la misma cantidad de soporte de los programas de desfragmentación. Actualmente, e4defrag se puede utilizar para desfragmentar un sistema de archivos ext4, incluida la desfragmentación en línea.fsadm
utilidad que incluye operaciones de desfragmentación.defragfs
utilidad en los sistemas operativos IBM. [17]reallocate
tiene un comando llamado que está diseñado para desfragmentar archivos grandes.xfs_fsr
.En la mayoría de los discos duros, el comienzo del disco duro es considerablemente más rápido que el final, ¡a veces hasta un 200 por ciento! Puedes medirlo tú mismo con utilidades como *HD Tune. Por tanto, MyDefrag está orientado a mover todos los archivos al principio del disco.
As we have seen, an HFS+ volume seems to resist fragmentation rather well on Mac OS X 10.3.x, and I don't envision fragmentation to be a problem bad enough to require proactive remedies (such as a defragmenting tool).