lunes, 21 de marzo de 2011

Desfragmentar en linux.Cuando?Como? Y porque+Explicacion del tema


Hay un mito sobre Linux que dice que no es necesaria la des-fragmentación, hasta cierto punto es verdad, pero eso no significa que no exista la fragmentación en los sistemas de archivos que utiliza GNU/Linux. El problema no viene del formato de archivos, ni tampoco es malo que se fragmente, es simplemente, algo irremediable por matemática pura. En los sistemas comerciales como Windows o Mac (sobretodo en Windows), la fragmentación es exagerada, y todo ocurre a un ritmo muy rápido. El problema en el caso de Windows, viene por una mala gestión del kernel, y un sistema de ficheros arcaico que no dispone de tecnologías modernas para evitar algo como la fragmentación. En sistemas como Mac, la fragmentación esta un poco mas controlada gracias a que el kernel esta basado en Unix, pero aun así tampoco se salva por culpa de utilizar un sistema de ficheros bastante anticuado.
En GNU/Linux la fragmentación se desarrolla muy lentamente gracias a una gestión impecable del kernel a la hora de manejar los volúmenes de datos, y ademas esto se combina con la utilización de uno de los sistemas de ficheros mas avanzados tecnológicamente como lo es “Ext4”. Para hacer un análogo sobre como maneja el kernel Linux los datos en comparación de Windows, podríamos poner como ejemplo una biblioteca. Imaginemos una gran biblioteca llena de estanterías con miles y miles de libros, para encontrar los libros deseados se necesita una organizacion y un orden adecuados y es lo que determinaría el tiempo necesario para encontrar un libro en concreto. El kernel de Windows organizaría los libros por tamaño y peso, colocaría los mas grandes primero y después sucesivamente los mas pequeños, incluso si hubiese espacio encima de los libros, el kernel Windows seguiría colocandolos horizontalmente para aprovechar el máximo posible el espacio de las estanterías. El problema vendría cuando un cliente solicite un libro en concreto, la única forma de buscarlo seria mirando libro por libro hasta encontrarlo, y seria un caos total por que se perderían horas de tiempo.
De la misma forma, el otro factor es el sistema de ficheros, en el caso de Windows puede ser “Fat32” o “NTFS”. Combinando la forma en como hemos dicho que el kernel Windows ordena los libros, la forma en como el formato “Fat32” o “NTFS” afecta en la fragmentación, es que cuando un cliente se lleve un libro de la estantería, al llegar otro cliente con otro libro, “NTFS” lo colocaría en el espacio donde estaba el libro anterior y así repitiendo este proceso cientos de veces en un día, hasta llegar a tener una fragmentación y desorden de libros altísimo. Cuando le pedimos a Windows des-fragmentar un disco duro, según el porcentaje de fragmentación pueden pasar horas en el peor de los casos, y esto se debe a que el desorden a llegado a tal punto, que tiene que volver a colocar todos los libros uno por uno para volver al estado inicial, que rápidamente se volverá a fragmentar por culpa de su forma de organización.
La misma analogía aplicada al kernel Linux, siguiendo el mismo ejemplo de la biblioteca, seria que los libros estarían colocados por orden alfabético sin importar su tamaño o peso, esto provocaría que hubiese huecos vacíos en algunas estanterías donde se desaprovechan algunos centímetros para colocar mas libros, sin embargo a la hora de buscar un libro por ejemplo que empiece con la “F”, el cliente sabría rápidamente donde situarse y en vez de buscar libro por libro, únicamente tendría que buscar los existentes que empiecen con la letra “F”.
El mismo factor que en el ejemplo de Windows, el formato de archivos mas utilizado en GNU/Linux es “Ext3” y “Ext4”. A la hora de volver a colocar los libros que un cliente ha devuelto, no los colocaría en el mismo lugar que el anterior por que si fuese así, no importaría lo ordenado que estuviese al principio, rápidamente se fragmentaria todo como pasa con “NTFS”. “Ext4” lo que haría seria colocar temporalmente todos los libros apilados alfabéticamente encima de la mesa de recepción y después cuando ya no hubiese movimiento de clientes, se dispondría a re-colocar los libros en su sitio por el mismo orden alfabético.
Ahora que hemos entendido la forma de organización, aunque sea con un ejemplo muy básico (aunque bastante preciso), entendemos el por que en Linux se dice que no hace falta des-fragmentación, pero supongamos que estamos todo el día continuamente moviendo una cantidad enorme de libros, por mucho orden que se tenga todo acabaría descolocándose por falta de tiempo a volver a ordenarlo de nuevo. Por eso en algunos casos se puede llegar a fragmentar el sistema de ficheros en Linux.
Una de las soluciones mas simples pero un poco engorrosa es copiar todo el contenido del disco duro a otro medio, y después volver de nuevo a copiarlo en su sitio. Haciendo esto el propio sistema aprovecharía de nuevo para re-colocar todos los datos en su sitio. Pero si esto no lo podemos hacer, bien por falta de otro medio o por ser una solución no viable al tener un disco duro muy grande, podemos hacerlo con una utilidad que viene en todos los sistemas GNU/Linux.
(¡¡¡ATENCION!!!… EN ESTE ARTICULO VAMOS A UTILIZAR FSCK, ESTA UTILIDAD PUEDE INUTILIZAR COMPLETAMENTE NUESTRO SISTEMA DE DATOS CON UN USO INCORRECTO, QUE CADA UNO LO USE BAJO SU RESPONSABILIDAD… ¡¡¡ATENCION!!!)
La utilidad fsck tiene muchas funciones, pero en resumen se trata de una herramienta para revisar la estructura de datos en los formatos “Ext”. Para hacer una revisión sobre el estado de nuestra arquitectura de datos, ejecutamos en la terminal lo siguiente:
sudo /sbin/fsck.ext4 -nfv

Nos saldrá esta información:

Si utilizamos “Ext3” utilizamos en su lugar “fsck.ext3”. Es probable que nos devuelva varios errores, no os preocupes simplemente son algunas in-concurrencias en el sistema de archivos. El dato que nos interesa es “non-contiguous files (X.X%)“, ese sera el grado de fragmentación de nuestro sistema de ficheros. Normalmente sera una cifra bastante baja por debajo del 10%, no recomiendo des-fragmentar puesto que el propio formato a medida que vamos moviendo datos, este se va re-colocando, pero si estamos seguros de querer des-fragmentar lo podemos hacer con e4defrag. Volvemos a repetir el comando anterior para dejar un ejemplo mas claro con la ruta de la partición:
sudo /sbin/fsck.ext4 -nfv /dev/sda5

e4defrag es un script bastante simple que podemos compilar como un modulo en el kernel. Como se trata de una tarea realmente compleja para la gran mayoría de usuarios domésticos, no lo explicaremos en este articulo. En este articulo se explica el funcionamiento y el por que de la fragmentación, podemos revisar nuestra fragmentación con fsck.
e4defrag se incluye por defecto en el kernel 2.6.32, así que en ese caso no haría falta compilar, pero no recomiendo hacerlo a menos de estar realmente seguros de conocer su funcionamiento.

Fuente:

No hay comentarios:

Publicar un comentario