Cómo desfragmentar en linux
Cómo desfragmentar en linux. Me sorprendo con las afirmaciones que veo en otros sitios, en ellas se asegura que en linux no es necesario desfragmentar. Estas equivocado amigo, en linux también puede ser necesario desfragmentar un disco. Lo que pasa es que los sistemas de archivos linux periodizan mucho mejor los archivos que otros sistemas, por ejemplo que windows. En sistemas Fat y Fat32 los archivos se van acoplando correlativamente (uno detrás de otro), el efecto negativo es, que cuando (ejemplo) subes un archivo a una carpeta ya creada, también lo inserta correlativamente sea cual sea el anterior archivo. En los sistemas de archivos NTFS este efecto se intento corregir, logrando una pequeña mejora aun insuficiente. Los sistemas de archivos linux como EXT2,3 y 4, JFS, ZFS, XFS, ReiserFS y BTRFS, tratan los archivos de otra forma, digamos que dejan más espacio en blanco para que puedas subir archivos y no tengas problemas de fragmentanción. El porqué y el cómo, es algo más complejo y largo de explicar pero con la siguiente imagen te puedes hacer una idea de como tratan los archivos los diferentes sistemas.
Desfragmentar en linux - Sistemas de archivos En discos no muy grandes o en maquinas un poco más antiguas es altamente recomendable desfragmentar el disco, no con tanta frecuencia como en Windows pero si cuando notes que la carga de archivos demora demasiado. En este articulo vemos como desfragmentar un disco en linux de forma segura.
Cómo desfragmentar en linux
Existen herramientas como e2fsprogs o fsck, pero no las recomiendo (tienes que desmontar el disco). Yo te propongo un script perl que funciona realmente bien, ofreciendo unos resultados espectaculares. Creamos el script. sudo nano desfrag.pl Copia y pega el script. # SoloLinux.es # defragmenter script for linux trap 'abort' 1 2 15 renice 19 $$ > /dev/null abort() { echo -e "\nAborting" rm -f tmpfile dirlist exit 1 } fail() { echo -e "\nFailed" abort } declare -i filesize=0 declare -i numfiles=0 #The maximum size of a file we can easily cache in ram declare -i maxsize=$((`awk '/MemTotal/ {print $2}' /proc/meminfo`*1024)) (( maxsize-= `awk '/Mapped/ {print $2}' /proc/meminfo` )) (( maxsize/= 2)) if ] ; then echo dirlist or tmpfile exists exit 1 fi # Sort in the following order: # 1) Depth of directory # 2) Size of directory descending # 3) Filesize descending # I made this crap up. It's completely unvalidated. echo "Generando la lista de archivos..." #stupid script to find max directory depth find -xdev -type d -printf "%d\n" | sort -n | uniq > dirlist #sort directories in descending size order cat dirlist | while read d; do find -xdev -type d -mindepth $d -maxdepth $d -printf "\"%p\"\n" | \ xargs du -bS --max-depth=0 | \ sort -k 1,1nr -k 2 |\ cut -f2 >> tmpfile if (( $? )) ; then fail fi done rm -f dirlist #sort files in descending size order cat tmpfile | while read d; do find "$d" -xdev -type f -maxdepth 1 -printf "%s\t%p\n" | \ sort -k 1,1nr | \ cut -f2 >> dirlist if (( $? )) ; then fail fi done rm -f tmpfile numfiles=`wc -l dirlist | awk '{print $1}'` echo -e "$numfiles files will be reordered\n" #copy to temp file, check the file hasn't changed and then overwrite original cat dirlist | while read i; do (( --numfiles )) if ]; then continue fi #We could be this paranoid but it would slow it down 1000 times #if ]; then # echo -e "\n File $i open! Skipping" # continue #fi filesize=`find "$i" -printf "%s"` # read the file first to cache it in ram if possible if (( filesize then echo -e "\r $numfiles files left \c" cat "$i" > /dev/null else echo -e "\r $numfiles files left - Reordenando archivos con tamaño de $filesize ... \c" fi datestamp=`find "$i" -printf "%s"` cp -a -f "$i" tmpfile if (( $? )) ; then fail fi # check the file hasn't been altered since we copied it if ] ; then continue fi mv -f tmpfile "$i" if (( $? )) ; then fail fi done echo -e "\nDesfragmentacion concluida" rm -f dirlist Guarda el archivo y cierra el editor nano. El script necesita permisos para ejecutarse, se los concedemos. chmod u+x desfrag.pl Llego el momento de ejecutarlo. El script desfragmentador permite desfragmentar todo el disco sin tener que desmontarlo, pero no es necesario. Cuando trabajamos en linux lo hacemos sobre /HOME, y eso es lo que debes desfragmentar. Ejecuta el siguiente comando. sudo ./desfrag.pl /home El proceso comenzara a listar los archivos a reordenar, se paciente.
Inicio de la desfragmentacion en linux Dependiendo del tamaño del disco y de tu sistema, el tiempo del proceso puede variar.
La desfragmentacion del disco a terminado Nota final: Es importante que una vez comience la desfragmentación cierres todas las ventanas y aplicaciones del sistema, no lo toques hasta que termine el proceso, déjalo trabajar. Este script es super recomendado para los que hacen un uso intensivo de las descargas (por ejemplo torrent), bajan de la red una gran cantidad de datos y también los borran. Una vez termine el proceso de desfragmentación debes reiniciar el sistema, no te preocupes el script no a borrado nada, solo lo cambio de sitio (aun así, debes tener una copia de seguridad). Al reiniciar el sistema notaras enseguida que tu linux corre más ligero. En algunos sistemas puede aparecer un aviso de error en la linea 26 y 27, no te preocupes no pasa nada, es porque no hemos definido el tamaño de los archivos. El script continuara su proceso sin la intervención del usuario. Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article















