12 de junio de 2010

Linux y la fragmentación: si, ocurre

(Nota: Este post es el primero de una serie de varios artículos sobre la fragmentación. Se recomienda leer las serie completa: 2, 3 y 4).

El tópico de que Linux no necesita desfragmentación ha vuelto renacer. Suele hacerlo periódicamente, aunque por desgracia eso no lo haga más cierto. Ese argumento de que los sistemas de archivos en Linux no se fragmentan o que lo hace tan poco que apenas se nota, y que en NTFS en cambio lo hacen una barbaridad, nunca va acompañado, si se fijan, de una explicación. Eso es porque no la hay.

Creo que el origen del mito es visual. Windows tiene un desfragmentador de serie que muestra (mostraba) un bonito gráfico donde se ve el estado y progreso de la fragmentación, la cual deja de ser un concepto abstracto para volverse algo real, que se puede percibir mediante los sentidos. Oh, mira cuanta fragmentación. En una instalación Linux típica no hay ningún desfragmentador y mucho menos con gráficos, y al no verse nada es como que no existe (o se obtiene la cifra media de fragmentos/archivo, que es una bonita manera de ocultar la realidad con estadísticas): Oh, no tenemos fragmentación. Pero aunque no la veamos, existe. Hubo un tiempo en el que un servidor de ustedes muy de vez en cuando movía todo su sistema de una partición a otra del disco duro (cp -a), y la disminución del tiempo de inicio del sistema y del tiempo que transcurre entre KDM/GDM y la aparición del escritorio se podían medir en el reloj y en el menor carraspeo del disco duro. Apostaría a que la acertada decisión de eliminar la parte visual del desfragmentador en Windows Vista/7 se debe a la falsa sensación de conocimiento que mucha gente creía tener con las imágenes visuales.

Hay un par de cosas respecto a este asunto de la fragmentación que la mayoría de la gente (y en este blog, gente = frikis/geeks) desconoce de los sistemas de archivos. La primera es que los sistemas de archivos tienen muchas partes en común. El asignador de bloques para los datos, en particular -responsable de la fragmentación-, es un asignatura bastante común a todos, por no mencionar esos oscuros rincones en los que el sistema de archivos se funde de manera ambigua con la gestión de memoria.

En segundo lugar, una cosa es el formato físico del sistema de archivos, y otra su implementación. Una buena implementación puede incluso tapar los defectos de un sistema de archivos antiguo, y hacerlo mejor que uno nuevecito con una mala implementación. En Linux hay ejemplos muy próximos en los dos sentidos. Ext3/4 son sistemas de archivos viejos, desfasados, a diferencia de, por ejemplo, NTFS, que es claramente más moderno. Sin embargo la implementación de Ext4 es sobresaliente, capaz de competir con NTFS sin problemas e incluso con XFS en algunos puntos. En cambio Reiserfs v3 tiene un diseño muy nuevo, pero su implementación deja bastante que desear, por eso las empresas se pasaron a Ext4. Y algo con tanto prestigio como ZFS en todo su esplendor tuvo, nada más ser publicado y antes de mejorarlo, un algoritmo de asignación de bloques que se podía resumir con la frase "aquí te pillo, aquí te mato".

Uniendo los dos párrafos anteriores, se puede obtener la conclusión de que tomar decisiones de asignación de bloques que creen o no fragmentación en la disposición de los datos en el disco duro depende en gran medida de la implementación.

En principio, en teoría cualquier sistema de archivos puede hacer magníficas decisiones de asignación de bloques en lo que se refiere a fragmentación (otra cosa es el rendimiento y otros factores). Un buen ejemplo para comprenderlo es el caso de dos procesos escribiendo datos simultáneamente a dos archivos diferentes. Un asignador de bloques simple entrecruzará a lo largo del disco duro los datos de ambos archivos: primero un trozo del primer proceso, luego otro del segundo, posteriormente otro trozo del primero, etc, causando una fragmentación masiva. En cambio, un buen sistema debería detectar esta situación y tratar, por lo menos, de que los trozos que se entremezclen sean de un gran tamaño. Este tipo de heurísticas no dependen del formato del disco, y aunque cierto es que la facilidad para implementarlas esté influida por otros aspectos del sistema de archivos, a base de empeño un buen programador con muy poco respeto por la humanidad podría hacer maravillas hasta con FAT.

Resumiendo: Toda discusión sobre la fragmentación debería estar razonada en base a los algoritmos de asignación de bloques, que son quienes causan o evitan esa fragmentación. Los de Windows/NTFS no se conocen ni se conocerán nunca en detalle, pero los de Linux si que se conocen (aunque en todo google solo existan un par de referencias). Sin embargo, nunca los he visto expuestos en una discusión (no, esto no es suficiente), en cambio de Windows siempre se supone que no tienen absolutamente ni una sola línea de código dedicada a evitar la fragmentación, lo cual es una presunción (veo la imagen del desfragmentador, luego creo saber) demasiado atrevida. Sirva de ejemplo de desconocimiento de este tema que a pesar de que Ext4 incorpora varios cambios para evitar diferentes tipos de fragmentación, en tiempos del reinado del Ext3, que carece de esos cambios (y por tanto se fragmenta más), se afirmaba de todos modos que Linux no sufría fragmentación. O, peor aun, se afirma que los sistemas de archivos Unix previenen la fragmentación basándose en...¿exactamente qué hechos? (es más, ZFS y Btrfs se fragmentan una auténtica barbaridad por virtud de las técnicas COW).

Echen en Linux un ojo a la herramienta filefrag, como curiosidad yo tengo una ISO de un DVD en un Ext4 bajada con wget que está dividida en mil y pico extents. Y un SVG de 1.2 MB con 8 (un caso muy raro), y varias películas divididas en cientos cada una. Fragmentación pura y dura bajo un kernel 2.6.35-rc3 (eso si, si obtenemos la cifra media de fragmentos/archivo, los miles de archivos menores de 4KB rebajarán la media y harán que parezca que no pasa nada). Y no todo es culpa del sistema de archivos, no es casualidad que POSIX tenga la función fallocate(), es una prueba de que existen casos en los que un asignador de bloques no pueden predecir el futuro. Además, hay que tener en cuenta la fragmentación entre diferentes archivos, un tipo de fragmentación muy importante para el rápido inicio del sistema y de las aplicaciones y que prácticamente requiere un desfragmentador. No es casualidad que XFS, Ext4, y Btrfs tengan desfragmentadores, simplemente se necesitan (para Btrfs puede llegar a convertirse en un requisito).

Por supuesto, si usted quiere puede vivir sin desfragmentador, e incluso las distros Linux podrían no usarlo bajo la regla de que casi nunca hace falta, pero por esa regla de tres también Windows podría eliminarlo basándose en esa lógica. Lo acertado de Microsoft en este campo es que en vez de negar el problema y pretender que no existe, han proporcionado una herramienta para arreglarlo (también es bonito lo que hace OS X, defragmentar automáticamente un archivo al abrirlo si detecta que está fragmentado). Es como el caso de "no-tenemos-fsck-porque-nuestro-sistema-de-archivos-no-lo-necesita", puedes negar que necesitas un fsck todo lo que quieras, pero el mundo real es muy puñetero y aparecen usuarios necesitándolo. Lo mismo para los desfragmentadores.

Este tema es muy amplio (y se podría hablar de las mejoras de algoritmos que usa Ext4 y tal, y casos que no cubren), pero definitivamente no será en esta entrada, que ya es lo suficientemente larga...

35 comentarios:

  1. Casimiro12:02 a. m.

    Hola, sigo tu blog desde hace bastante tiempo y a veces has escrito cosas interesantes, pero lo de hoy... realmente no has dicho nada, ni tampoco has argumentado nada, vamos que se perderá como lágrimas en la lluvia :D

    Por cierto, varias veces al año (vacaciones, descansos, etc.) apago mis equipos, todos con linux, y aluna vez al año veo que al iniciar hace un chequeo al disco y desfragmentación, sí, desfragmentación. Hasta ahora los valorse que he visto han estado entre el 0,6% y el 3,1%. Ya veremos la siguiente vez, que le tocará seguramente después de las vacaciones de verano :)
    Están con Ext3. Qué de recuerdos (pesadillas) de NTFS ;) me vienen a la mente.

    ResponderEliminar
    Respuestas
    1. Se te hace justo decir que realmente "no ha dicho nada"? Leyendo esta parte de tu respuesta: "Hasta ahora los valores que he visto han estado entre el 0,6% y el 3,1%" indica que no leíste bien/por completo la nota: "(eso si, si obtenemos la cifra media de fragmentos/archivo, los miles de archivos menores de 4KB rebajarán la media y harán que parezca que no pasa nada)"

      Eliminar
  2. gigadrill12:49 a. m.

    Al contrario de Casimiro, me gustó esta entrada de reflexión. No es necesario que todas las entradas sean cifras en duro.

    Yo soy usuario de Linux de hace 15 años (cómo pasa el tiempo) y también hacia eso de volcar mi instalación a otro disco para ver mejorado el rendimiento del sistema, en esos tiempos que decir "Linux no se fragmenta" era la ley en los installfest locales.

    Hace unos años también soy usuario de Mac OS X, y el mismo cantar. "OS X no se fragmenta" y si dices lo contrario ¡zas!. Hace unos meses compré la licencia de una herramienta para desfragmentar (iDefrag) mi instalación de OS X (en una partición HFS+) y lo mismo que en el párrafo anterior. Tiempos de arranque menos, tiempo de ejecución de aplicaciones significativamente menor.

    Si eso no era fragmentación, me doy.

    ResponderEliminar
  3. Anónimo4:28 a. m.

    perdonen mi ignorancia, pero estoy un poco confuso respecto a los sistemas de archivos que mencionas... EXT4 viejo? pensaba que lo habian empezado a utilizar en Ubuntu hace nada porque acababa de madurar. ¿Me equivoco yo, o es más complicado de lo que me parece a mi?

    ResponderEliminar
  4. Anónimo8:12 a. m.

    Excelente post diego, como siempre.
    Lamentablemente "la comunidad" como forma de demostrar que Linux es mejor que Windows, niegan la framentacion de los archivos bajor Linux.

    Por cierto, este problema no es nuevo, Linux Hater's Blog ya habia tomado este tema ya hace algun tiempo, inclusive tiene un trademark: LinuxDoesntRequireDefrags(TM)

    ResponderEliminar
  5. Anónimo4:20 p. m.

    Un excelente post de divulgación/reflexión sobre un tema interesante.
    Evidentemente todos los posts no tienen que ser "puramente tecnicos", también los puede haber critico-reflexivos.

    Creo que haces una excelente labor de divulgación sobre informática (principalmente soft libre) y me gustaría que escribieras más a menudo, aunque seguramente afectaría a la calidad de tus posts.

    Por otra parte, echo en falta en esta web, una sección con enlaces a otros blogs interesantes/divulgativos similares a este (seguramente en español no habrá y serán en la lengua de chespir)

    ResponderEliminar
  6. Por pura curiosidad, acabo de pasarle un fsck a mi disco duro, y dice al final "1.0% no contiguos". Este disco duro lo formateé la última vez el 21 de enero del 2009, con ext4. Sería interesante ver cuánto se fragmenta otro sistema de ficheros (digamos, NTFS) en la misma cantidad de tiempo.

    El que un sistema de ficheros (ojo, no tiene que ver el sistema operativo) se fragmente o no, en estas épocas, es un tema social, más que técnico. Las especificaciones para los sistemas de ficheros modernos (como ext4, ntfs en sus últimas versiones, et al.) minimizan la fragmentación. Eso, sumado a otras técnicas de aceleración (caché en la RAM, discos de lectura más rápida, etc.) hacen que sea casi imperceptible para el usuario.

    Entonces, pienso que si un sistema operativo provee herramientas para "reparar" este error, es simplemente para mantener al usuario feliz (quizas hasta engañarlo, similar a lo que hacen algunos antivirus) haciendo que éste visualmente vea que su computadora "está poniendose mejor", quizas con muy poco beneficio real.

    ResponderEliminar
    Respuestas
    1. Anónimo3:16 a. m.

      El problema es que ése 1% no es correcto, porque esa herramienta es defectuosa.
      fsck evalúa el "porcentaje de archivos" con bloques no contíguos pero te dice que el resultado representa el "porcentaje del disco" con bloques no contíguos. Obviamente no es lo mismo, pero si necestas ayuda para mirar el error, imagínate que en todo el Disco duro sólo hay un archivo fragmentado entre millones, pero ése archivo ocupa el 99% del disco. fsck te dirá que tienes menos del 0,00001% a pesar que tienes casi el 99% del disco fragmentado.

      Eliminar
  7. Anónimo2:33 a. m.

    Muy buen artículo. Felicitaciones. Me ha encantado.

    ResponderEliminar
  8. Vaya, ¿Linux necesita desfragmentar el disco duro? ¡¡Dios... no puede ser!! ¡¡No es cierto!! ¡¡Me niego a creer semajante sacrilegio!!

    ¿Todo es cuestión de mostrarle o no al usuario una interfaz gráfica que represente la información del estado del disco? Pero ¿no era linux un sistema operativo de gurús? ¿Qué es eso de "usuario"? ¡¡En linux no hay usuarios, hay "maestros jedi" del software libre!!

    En serio, que a pesar de que entiendo la exposición no me la puedo llegar a creer del todo. Quizás por cabezonería mía, pero llevo años usando Linux y viendo las comprobaciones del estado del disco cada 30 arranques y bueno, nunca me ha aparecido más del 3% o 4% de fragmentación. ¿Es mucho?¿Es poco? No sé. La última herramienta de desfragmentación que usé corría en MSDOS y daba miedo.

    Mis conocimientos técnicos son limitados. Entiendo la exposición y hasta dónde llegaban mis nociones del funcionamiento de mi Ubuntu, la cosa no era tanto que el sistema no se fragmentara al colocar los archivos en el disco, sino que se reubicaban las entradas de los mismos a medida que se iba usando mejorando así el estado de la fragmentación. De ahí que me costara tanto en su momento encontrar herramientas de recuperación de archivos borrados para Ext3, pues este enseguida recuperaba el hueco dejado por estos archivos borrados haciendo imposible la recuperción.

    ¿Seguro que el tema es solo una cuestión de trapos en los ojos? ¿Y nadie ha dicho nada durante tantos años? WOW!!!

    ResponderEliminar
  9. Anónimo1:56 p. m.

    Muy buena entrada. Entre la gente que usamos Linux, siempre he visto que estaba muy arraigado el mito de que los sistemas de ficheros de Linux no se fragmentaban, y yo siempre andaba defendiendo lo contrario: que por muy buenos que fueran, la fragmentación es algo natural e inevitable. Voy a tener que hacerles leer esta entrada a mucha gente ;)

    Saludos

    ResponderEliminar
  10. Anónimo6:10 p. m.

    Hola, muy interesante articulo. Me llama la atención una parte donde dices
    'En cambio Reiserfs v3 tiene un diseño muy nuevo, pero su implementación deja bastante que desear, por eso las empresas se pasaron a Ext4.'
    Tan mala es su implementación? En qué sentido? Era y es mi sistema preferido de archivos, lo dejé de usar para probar ext4 hace cosa de un año, pero no se si hice bien, no me termina de gustar, a veces me encuentro archivos corruptos en mi home sin motivo aparente y en cambio en otra particion reiserfs que conservo en el mismo disco duro no tengo problemas (y el disco está bien).
    Estaba pensando volver atrás , a reiser, pero ahora no estoy seguro..significa que es malo por una cuestión de seguridad y que para servidores no se recomienda, por ejemplo, pero para escritorio no importaria tanto?
    A ver si me puedes ayudar. Un saludo

    ResponderEliminar
  11. Diego, me gustaría que algún día te explayaras un poco más acerca de los requisitos, condiciones y forma de hacer el cp -a que mencionas.

    ResponderEliminar
  12. http://julien.danjou.info/blog/2010.html#Thoughts%20and%20rambling%20on%20the%20X%20protocol

    ResponderEliminar
  13. Anónimo5:25 a. m.

    Que eres anti gnu o que ?.

    Con los problemas que presenta Microsoft, dedicas todo un articulo a desmitificar los sistemas de archivos Unix, Unix-Like ?

    Mejor dedicate a concientizar los usuarios sobre su libertad, la GPL, y como pueden aprovechar este maravilloso sistema que no tienes que comprar!.

    ResponderEliminar
    Respuestas
    1. Anónimo4:11 p. m.

      De que hablas? entonces es mejor negar que existe la fragmentación esto no es anti linux, es pro linux hay que saber como funciona este maravilloso sistema. Me encantan estos post que desmienten cosas y abren paso al conocimiento real. Eres de las personas que gustan de vivir una mentira en vez de querer saber la verdad.

      Eliminar
  14. Anónimo5:53 a. m.

    LOL, este post no tiene nada que ver con GNU, ¿solo por eso es anti-gnu? Es como que las caciones que no hablan bien del cristianismo resultan ser canciones anti-cristianas.

    Criticar a Linux es lo que le hace falta a la comunidad. Han pasado años perdonando las fallas del ecositema Linux-GNU-Distros-Apps solo por que resulta gratis que la calidad del software sigue sin ponerse a la par con el de Windows u OSX.

    Y no, Linux no es GNU, no existe ninguna ley moral que diga que "si hablas de Linux, tienes que hablar de la 'libertad' del software que San RMS predica"

    ResponderEliminar
  15. (...) Criticar a Linux es lo que le hace falta a la comunidad. (...]
    No se cuanto tiempo lleves en contacto con la comunidad Linux, pero es bien común las criticas al sistema, sobre todo en la guerra por las distribuciones. Pero claro, no falta quienes lleguen a los foros o lugares de discusión de las comunidades Linux diciendo que cierran los ojos antes los problemas, cuando a diario se discuten de una y otra forma.

    También es cierto que a veces se divulga cierta información errónea y que hay quienes no quieran admitir los fallos de este sistema, pero eso pasa en cualquier tema (no es propio de este sistema).

    (...)Y no, Linux no es GNU, no existe ninguna ley moral que diga que "si hablas de Linux, tienes que hablar de la 'libertad' del software que San RMS predica"(...)

    Así es Linux no es GNU, pero ya que la mayoría del software que lo acompaña (y que sin el practicamente no funcionaría) está liberado bajo uno de las licencias de la GNU (incluyendo que el kernel Linux también está liberado bajo la GPL) son dos cosas inherentes.

    Ahora, exponer un artículo critico no tiene por que estar en contra de todo este mundo (Linux y Software Libre), todo lo contrario, cuando es una buena critica ayuda mucho ya que los usuarios nos adentramos a los temas, conocemos más el sistema, buscamos soluciones, etc.

    Un saludo.

    ResponderEliminar
  16. Anónimo10:03 p. m.

    http://lomasinteresante.mx/3/por-que-no-es-necesario-desfragmentar-linux/ -> explica porqué no hay prácticamente fragmentación con llenado de disco menor del 80%. (ese 20% sí puede presentar fragmentación con archivos grandes) así que para los paranóicos akí la solución http://www.muylinux.com/2010/06/07/%C2%BFes-necesario-desfragmentar-en-linux (yo creo que hay fragmentación inevitable pero mínima, no afecta como en windows ...)

    ResponderEliminar
  17. Anónimo2:28 a. m.

    Uy !!! creo que no voy a dormir. 20 años en informática y nunca he desfragmentado. Bueno sí, una vez tiré un disco por la ventana y se me "desfragmentó" un poco. ;)

    Bueno, ahora en serio, que no he desfragmentado en mi vida.

    ¿ Es grave doctor ?

    ResponderEliminar
  18. Anónimo8:21 p. m.

    Me ha gustado el tema, que era la pregunta del millón hablando de Linux. La exposición un poco densa para mis conocimientos, pero bien. Aunque también sería acertado que tuvieras alguna cita más: cualquier texto se vuelve más técnico y por supuesto se amplia información.
    En mi caso mi portátil tiene WinXP de sistema principal, y un Linux (ahora Ubuntu) de secundario colocados en
    Part. Primaria C = NTFS
    P.Extendida:
    Lógica ? = EXT3 (Ubuntu)
    Logica D = NTFS Datos

    Sin swap para linux, ni tampoco archivo de intercambio para windows en una partición aparte.

    Llevo con este sistema XP más de 3 años sin desfragmentar ni una sola vez. Y sigue funcionando bien. Y tengo un uso intensivo del mismo.
    Uso menos linux, y sin embargo me funciona peor. Quizá por desconocimiento del propio sistema, pero creo que hay que dar a cada cual lo suyo. Windows funciona muy bien para ser lo que es. Y es mucho más ligero que las distribuciones más habituales.
    ¿Hasta cuando seguiremos diciendo y pensando que Linux es mejor por mero hecho de decirlo?

    Bueno. esto es todo.
    Tenéis un nuevo lector.
    JM

    ResponderEliminar
  19. Anónimo12:57 p. m.

    NTFS moderno?
    EXT4 desfasado?

    Yo flipo...

    ResponderEliminar
  20. Anónimo4:33 p. m.

    "...Ext3/4 son sistemas de archivos viejos, desfasados, a diferencia de, por ejemplo, NTFS, que es claramente más moderno..."
    JUAS!! Con esa frase delatas el escaso conocimiento del tema!
    Ext4 es de 2001, Ext4 es de 2006 y NTFS es de... ¡¡¡1993!!!! (D'Oh!)
    Lamentable artículo, habla purmante de un tema técnico sin dar ningún tipo de argumentos técnicos, sólo son opiniones.
    La fragmentación existe y siempre existirá en los sistemas de archivos, pero en Linux es mínima y no es necesario defragmentar:
    http://geekblog.oneandoneis2.org/index.php/2006/08/17/why_doesn_t_linux_need_defragmenting
    (...NTFS moderno, ja, ja, me muero de la risa...)

    ResponderEliminar
  21. Anónimo8:00 p. m.

    La fragmentacion nunca dejara de existir para cualquier sistema, pero "REVELES" que para Linux tambien existe, no significa que Windows es mejor por presentarnos un programa que desfragmente. Linux y MacOS muchas veces hacen la desfragmentacion sin que el usuario tenga que saber que lo hacen y eso me parece bien, ya que no necesito saber cuanto estaba desfragmetado, lo unico que quiero es que se mantenga lo menos fragmentado posible y optimas condiciones...

    ResponderEliminar
  22. Anónimo8:13 p. m.

    Windows, al contrario de Linux, es un SO por el cual debes pagar (y pagas por casi todo lo que usas en el) y encima tienes que usar antivirus, defragmentadores y otras herramientas para (aparentar) que en cualquier problema tienes como mejorarlo, pero aun con todo y es (por lo cual pagas) no se iguala a Linux en el cual el SO el gratuito y la mayoria de sus aplicaciones lo son tambien y funciona de maravillas sin tener que usar complementos. Entonces criticas solo el sistema de archivos (el cual tambien aceptas que es mejor, ya que se defragmenta menos) sin tomar en cuenta todas las otras virtudes de Linux siendo gratuito. Por otro lado tambien esta MacOSX que si hace un buen trabajo por la paga que recive. Hasta parece que los desarrolladores de Windows no les interesan sus usuarios, siempre y cuando paguen por el SO...

    ResponderEliminar
  23. Anónimo2:04 a. m.

    No importa, fragmentado o no, viejo o antiguo... es libre...en cambio NTFS no.. por lo tanto, no sirve :). eso es lo unico que deberia valer...No es una cuestion pragmatica, para eso usaria Ubuntu :) (que NO es libre)


    Saludos...

    ResponderEliminar
  24. Si nunca acompaña el argumento de que linux no fragmenta el disco con una explicación es porque nunca te has encontrado con alguien que lo sabía.

    Acaso si nadie te responde de cómo evitar buffer overflow (por ejemplo) quiere decir que no existe? Tu argumento es más pobre que lo que intentas decir.

    Si la fragmentación en linux es mínima es gracias a sus sitemas de ficheros, que asignan la información de bloques en una tabla por fichero. En cambio en sistemas de ficheros como NTFS existe una sóla tabla de asignación de bloques PARA TODO EL DISCO DURO.
    Por tanto en sistemas como ext3/ext4 (por ejemplo) la fragmentación existe, pero no se percibe y no porque carezcamos de una herramienta para tal fin (de hecho, sería una herramienta inútil). Simplemente no se percibe porque todo está ordenado, y no es un auténtico caos como en windows (desde la fragmentación hasta la estructura de directorios pasando por la gestión de librerías es un auténtico CAOS).

    Si esto no es una explicación que me parta un rayo. Y por cierto, no es invención mía, es que es así. Búscalo y verás.

    ResponderEliminar
  25. Anónimo4:24 a. m.

    Muy interesante, pero:

    [Citas requeridas]

    ResponderEliminar
    Respuestas
    1. Anónimo5:38 p. m.

      Hay evidencias empíricas que cualquiera puede reproducir.
      En ciencia eso vale más que una cita.

      Eliminar
  26. En cualquier sistema de ficheros hay fragmentación. Es lógico.

    Pero de tener esto:
    000000--1111----2222----------

    y hacer esto:
    0000003311113333222233--------

    ...a hacer esto:
    000000--1111----2222333333----

    Hay una gran diferencia.

    Al menos hasta donde yo sé, en Windows va a empezar a haber fragmentación en cuanto borres un archivo y escribas otro que sea más grande que el primer espacio contiguo disponible; es decir, en la práctica desde el primer día. Mientras que en Linux la empieza haber cuando deja de haber espacio contiguo para alojar el nuevo archivo; en la práctica a la larga, cuando el disco está muy lleno.

    ResponderEliminar
  27. Perdón, me he colado. Los ejemplos serían:

    Estado inicial:
    000000--1111----2222----------

    Escritura en Windows:
    0000003311113333222233--------

    Escritura en Linux:
    000000--1111----222233333333--

    Leyenda:
    - (espacio libre, una unidad).
    000000 (archivo1, ocupa seis unidades).
    1111 (archivo2, ocupa cuatro unidades).
    2222 (archivo3, también ocupa cuatro unidades).
    33333333 (archivo4, ocupa cuatro unidades).

    Un saludo.

    ResponderEliminar
    Respuestas
    1. Me atrevo a señalar que no tienes ninguna prueba de que Windows y Linux asignan los bloques de la manera en que señalas. Te recomiendo leer los 4 artículos.

      Eliminar
  28. Solo una observación: "por lo menos, de que los trozos que se entremezclen sean de un gran tamaño"

    sería: "por lo menos, de que los trozos que se entremezclen NO sean de un gran tamaño"

    Correcto?

    Un saludo.

    ResponderEliminar
  29. Copia unos cuantos mkv de 25Gb y mezcla archivos mp3 y epubs de pequeño tamaño, copia y borra aleatoriamente este tipo de archivos en un ext4, y me cuentas, que como bien dice el artículo es anticuado, ya que no deja de ser un ext3 con una indexación mejor. Mi ultimo e4defrag al disco de 8Tb tardó 96horas en terminar, ¿no necesitaba defragmentación? Los que claramente no tiene sentido que esten fragmentados son los ssd ya que al no ser discos de plato físicos requiere el mismo esfuerzo leer un sector contiguo que otro, al final son solamente direcciones de memoria.

    ResponderEliminar
  30. Anónimo2:29 p. m.

    Me está pasando en este instante, soy usuario linux desde hace 10 años,y estoy desarrollando una distro personalizada y entre cada punto que avanzo saco un backup tar -zcf ...., luego de una cagada regreso a la anterior tar -zxf ..., cuando estoy realizando el armado de la imagen suelo hacerla en una carpeta temporal en tmpfs de 10Gb para mejorar los tiempos de acceso y acelerar el proceso, luego de un tiempo aproximadamente 1 mes, los tiempos de creación de una imagen pasaron de 45 seg a 15 min y hasta más, pensé por un momento que conforme iba instalando librerías, Xorg, LXDE ... ,etc, se iba haciendo cada vez mas pesado, sin embargo la distribución (imagen) no pasaba de 2.0Gb usando squashfs, cabe acotar que también estoy haciendo eso en una maquina virtual, llegó el punto en que sin razón alguna las imágenes comenzaron a fallar incluso los backups que antes funcionaban, es decir se creaba una imagen pero esta estaba corrupta, resulta que después de mucha brujería concluí que era fragmentación, y por partida doble, tenia fragmentada la maquina virtual y fragmentado el archivo donde estaba la maquina virtual, estoy primero desfragmentando el archivo de la maquina virtual para luego desfragmentar la maquina virtual, espero que así funcione..., por eso me conseguí con tu blog, concuerdo mucho contigo, me parece muy acertado lo de la implementación, y hace muchos años cuando estaba empezando a usar linux, pregunté si linux en linux habia fragmentación y me dijeron que no, era imposible que linux tuviera fragmentación, incluso unos me dijeron que para los sistemas de archivos ext3/4 era peligroso desfragmentarlos porque podían haber perdida de datos...
    Saludos.

    ResponderEliminar