Como defragmentar una partición XFS

Lamentablemente, no todo es color de rosa con XFS y por lo tanto, habrá que defragmentarlo. Si bien no es como defragmentar NTFS en Windows, es algo que tenemos que tener en cuenta para evitar que el sistema “se pete o casque el disco duro.” A no desilusionarse, no es nada complicado.

Quiero decir, antes que nada, que ésto es meramente una tarea de mantenimiento simple en cualquier sistema o servidor web y no es una contra importante como para no utilizar el sistema XFS. De cualquier manera, sepan que es una tarea simple y fácil de hacer.

Lo primero es tener instalado xfsdump:

  • Para instalar xfsdump en sistemas Debian usamos:
apt-get install xfsdump
yum install xfsdump

Ahora vamos a ver cuantas de nuestras particiones deben ser defragmentadas:

xfs_db -r /dev/PARTICION

se abrirá un prompt, ahí debemos escribir:

frag

Nos indicara el porcentaje de framgentación del sistema de archivos XFS. Por la red se dice que cuando alcance el 10% debe ser defragmentado. Yo he defragmentado sistemas con un 6% y tardó un poco, supongo que debe depender de las caracterísiticas del equipo.

No es algo complicado, pero recomiendo hacerlo todo modo mono-usuario (runlevel 1) (recovery mode, se selecciona al arranque.)

Ahora sí, pasamos a defragmentar (suponiendo que lo necesitamos):

xfs_fsr -v /dev/PARTICION 

Recordad que en PARTICION irá nuestra partición en cuestión: hda1, sda2, etc.
Eso es todo, nada complicado. A no preocuparse, no tarda lo mismo que Windows y depende de nuestro equipo y porcentaje de fragmentación.

Borrado seguro de discos duros con DBAN

Pensar siempre que un formateo del disco duro no evita que se pueda recuperar información de los discos duros. Para evitar que alguien pueda recuperar información de tus discos duros necesitas una herramienta como Darik’s Boot and Nuke (“DBAN”).

DBAN es un disco de arranque que borrará de forma segura completa y automaticamente el contenido de cualquier disco duro que pueda detectar. DBAN previene u obstaculiza la recuperación de datos a todas las técnicas conocidas del análisis forense del disco duro.

DBAN cuenta con drivers para discos SCSI, IDE, PATA y SATA. Y soporta los sistemas de archivos FAT, VFAT y NTFS de Microsoff, así como los sistemas de archivos ReiserFS, EXT2, EXT3, EXT4 y UFS de unix.

Además, DBAN (Darik’s Boot and Nuke) es software libre…

Descarga | ISO DBAN 2.2.6 Beta.

Darik’s Boot and Nuke (“DBAN”)
Darik’s Boot and Nuke (“DBAN”)

Cambiar la codificación de archivos de ISO-8859-1 a UTF-8

Hace un rato he tenido que cambiar la codificación de un buen número de programas de un cliente que tenía hechos en PHP con codificación ISO-8859-1 a codificación UTF-8. En entornos Linux se dispone de un comando muy útil para estas tareas, iconv.

El siguiente ejemplo muestra cómo cambiar la codificación del archivo oldfile.htm de ISO-8859-1 a UTF-8, dejando el archivo resultante con el nombre newfile.html.

iconv --from-code=ISO-8859-1 --to-code=UTF-8 ./oldfile.htm > ./newfile.html

Si lo que necesitamos es cambiar la codificación de varios archivos sustituyendo los archivos originales, podemos utilizar la instrucción for de Bash

for i in *.php; do iconv --from-code=ISO-8859-1 --to-code=UTF-8 $i -o $i.utf8; mv $i.utf8 $i; done

El Archivo Zip de la muerte – 42.zip

42.zip es un archivo zip de 42.374 bytes, contiene 16 archivos zips que a su vez contienen otros 16 zips y así hasta 6 veces. Los 16 últimos zips contienen un archivo de 4,3 Gb cada uno. Si descomprimimos el archivo 42.zip de 42.374 bytes obtendriamos 4.5 Pb de datos descomprimidos.

  • 16 x 4294967295 = 68.719.476.720 (68GB)
  • 16 x 68719476720 = 1.099.511.627.520 (1TB)
  • 16 x 1099511627520 = 17.592.186.040.320 (17TB)
  • 16 x 17592186040320 = 281.474.976.645.120 (281TB)
  • 16 x 281474976645120 = 4.503.599.626.321.920 (4,5PB)

Este tipo de archivos se denominan Zips de la muerte o Zips bomba y suelen usarse como herramienta para ataques DoS.

PD:  hay que ver como una cosa tan pequeña te puede joder el servidor enterito 😀 , así que pequeños sysadmins tener muy definidas las reglas de cuotas de disco con sus respectivas alertas a vuestro email 😀
raiola manda y no el panda

Comandos para buscar ficheros y carpetas en Linux

Vamos a ver algunos de los comandos que nos pueden resultar útiles cuando queremos buscar un archivo y/o carpetas en linux, desde consola.

  • locate
locate archivo.php

Este comando buscar en una “especie de base de datos” donde tiene la ruta de los fichero y así resulta mucho más rápido encontrar los ficheros o carpetas que si se tiene que recorrer toda la estructura de directorios.

Hay que tener en cuenta que la “base de datos” del locate puede estar obsoleta. Para actualizarla debemos usar este comando (lo pondré en segundo plano con “&” porque le puede costar en ejecutarse).

updatedb &
  • find

El comando find sirve para buscar ficheros y directorios pero es muy complejo y tiene muchas opciones, de las cuales sólo explicare algunas.

La ruta de acceso por defecto es el directorio actual (representado con un “. “)  y la expresión por defecto es –print. A la hora de buscar, puedes especificar muchos parámetros:

  1. el nombre (-name xxx)
  2. find . -name tureceta*
  3. Si es un archivo o carpeta (-type f –type d)
  4. find . -type f -name tureceta*
    find . -type d -name tureceta*
  5. Los permisos que tiene (-perm nnn)
  6. find . -type d -perm 777
  7. El usuario al que pertenece (-user usuario1)
  8. find . -type f -user usuario1
  9. El grupo al que pertenece (-group grupo1)
  10. find . -type f -group grupo1
  11. Si el fichero está vacio (-empty)
  12. find . -type f -empty
  13. El tamaño (-size n[cwbkMG]) siendo
    ‘b’    para bloques de 512-byte (este es el de por defecto)
    ‘c’    para bytes
    ‘w’   para two-byte words
    ‘k’    para Kilobytes (1024 bytes)
    ‘M’   para Megabytes (1048576 bytes)
    ‘G’    para Gigabytes (1073741824 bytes)

    find . -size 21k
  14. Modificados los datos en las últimas X*24h (- dtime n)
  15. find . -tipe f -dtime 2  (en las últimas 48h = 2*24)
  16. Accedidos en las últimas X*24h (- atime n)
  17. find . -tipe f -atime 2  (en las últimas 48h = 2*24)

Recordar que con la ayuda y con el man del comando tendréis toda la información

find --help
man find
  • whereis
  • Buscar la localización de un fichero binario, fuente o man

    [root@server ~]# whereis grep
    grep: /bin/grep /usr/share/man/man1/grep.1.gz /usr/share/man/man1p/grep.1p.gz
  • which
  • Buscar la localización de un fichero binario o ejecutable

    [root@sever ~]# which grep
    /bin/grep