Actualización y los 4 millones de archivos

Un tiempo atrás actualicé un sistema Debian en forma rutinaria y hace un par de días comenzó a producir problemas extraños en las aplicaciones: desde pérdida de sesión al editar páginas web, errores para escribir en las bases de datos, hasta problemas de permisos en los archivos temporales.

El problema resultó ser la temida y oscura: tabla de inodos llena.

# df -i
Filesystem      Inodes    IUsed           IFree IUse% Mounted on
/dev/sda1       5120000 5120000     0        100%   /

Entonces, a salir a buscar dónde estaban los millones de archivos que ocupaban todos los inodos:

# find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n
...
3945231  /var/lib/php5/

y resulta que en ese directorio se mantenían unos casi cuatro millones de archivos llamados como sess_dn5m6oc4fcpfo0c95pq1se4rp0.

Aparte de iniciar un proceso de borrado masivo:

# cd /var/lib/php5
# find . -name "sess_*" -print | xargs rm -v

Inicié la búsqueda de las causas de fondo para evitar que el problema se vuelva a repetir en el futuro.

En Debian/Ubuntu el encargado de mantener los archivos de sesiones que se generan en /var/lib/php5 es el script

# cat /etc/cron.d/php5
# /etc/cron.d/php5: crontab fragment for php5
#  This purges session files older than X, where X is defined in seconds
#  as the largest value of session.gc_maxlifetime from all your php.ini
#  files, or 24 minutes if not defined.  See /usr/lib/php5/maxlifetime

# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime)

que como se puede ver, utiliza la salida de la ejecución de /usr/lib/php5/maxlifetime para determinar el tiempo de mantenimiento de los archivos de sesión de php.

El problema se generó en la ejecución de /usr/lib/php5/maxlifetime que producía el error de al ejecutar por la presencia de la directiva safe_mode en el archivo php.ini:

#  grep safe_mode /etc/php5/apache2/php.ini
safe_mode = On

en razón de que:

42 | WARNING | INI directive ‘safe_mode’ is deprecated from PHP 5.3 and forbidden from PHP 5.4.

Así la actualización a PHP 5.4 hizo que el archivo /usr/lib/php5/maxlifetime dejara de devolver un valor para devolver un error. Entonces el proceso de limpieza, dejó de limpiar y se juntaron cuatro millones de archivos que llenaron la tabla de inodos.

Solución permanente: comentar safe_mode = On en el archivo php.ini.

AutoMysqlBackup: Warning: Using a password on the command line interface can be insecure

Utilizo AutoMySQLBackup para respaldar bases de datos en varios servidores. Desde la versión MySQL 5.6 el comando mysql produce un warning si se ejecuta con la clave en la línea de comando haciendo que AutoMySQLBackup envíe un correo diario.

En un artículo del blog de Redeo encontré cómo él solucionó el problema quitando esas líneas de registro de errores y evitando el correo. Pero Redeo aclara que lo hizo contra el script disponible en sourceforge, no al paquete Debian automysqlbackup 2.6+debian.3-1 que es lo que tengo en mi caso.

Así que puse manos en el asunto para adaptarlo al script automysqlbackup de debian, y aquí está el diff:

689c689,696
<            cat "$LOGERR" | mail -s "ERRORS REPORTED: MySQL Backup error Log for $HOST - $DATE" $MAILADDR
---
>           # Remove annoying warning message since MySQL 5.6
>           sedtmpfile="/tmp/$(basename $0).$$.tmp"
>           grep -v "Warning: Using a password on the command line interface can be insecure." "$LOGERR" > $sedtmpfile
>           mv $sedtmpfile $LOGERR
>           if [ -z $LOGERR ]
>               then
>                   cat "$LOGERR" | mail -s "ERRORS REPORTED: MySQL Backup error Log for $HOST - $DATE" $MAILADDR
>           fi

La idea es borrar las líneas con el warning cuándo se envía el correo en

elif [ "$MAILCONTENT" = "quiet" ]

y enviar el resto de ellas, si es que existen; si no, evitar el incómodo correo diario con dicho warning.

Gnome 2 en tu Ubuntu 11.10

La interfaz Unity que viene por defecto en Ubuntu Desktop no es de mi agrado, sobretodo con:

a) Ubicar las aplicaciones. Por más que he tratado de llegar con clicks a los íconos de las aplicaciones, termino buscándolas por su nombre en la barra de búsqueda y para eso utilizo Gnome-Do que es más fácil.

b) La continua «oferta» de software que no tengo instalado me pone de mal humor. Si no las he instalado es porque no los quiero ni tener.

c) Ya en menor medida, la barra lateral que siempre está en conflicto conmigo, parece que competimos por ver quién está arriba. Aunque supongo que esto es algo a lo que uno fácilmente se adapta.

Así que puse manos a la obra de cómo tener el viejo Gnome 2 en el Ubuntu 11.10, y aquí la receta:

1

sudo apt-get install gnome-session-fallback

Cerrar sessión. Volver a abrir pero seleccionando Gnome Classic (No Effects) haciendo click en la ruedita dentrada junto al formulario donde se escribe el nombre usuario/clave.

2

Una vez dentro de GNOME:

sudo apt-add-repository ppa:jconti/gnome3

sudo apt-get update && sudo apt-get install indicator-applet-complete

3

Crear un nuevo panel y editar sus propiedades así:

General -> Orientación: Superior
Fondo -> Imagen de fondo: /usr/share/themes/Ambiance/gtk-2.0/apps/img/panel.png

Borrar el viejo panel (que está arriba)

Agregar al nuevo panel los siguientes Applets:

Barra de Menú
Miniaplicación completa de Indicadores

4

Editar /usr/share/themes/Ambiance/gtk-3.0/apps/gnome-panel.css y agregar la línea:

-PanelMenuBar-icon-visible: true;

justo debajo de la línea que dice PanelMenuBar.menubar.menuitem y antes del símbolo } de cierre.

5

Editar /usr/share/gnome-session/sessions/gnome-classic.session y cambiar la línea que dice:

RequiredProviders=windowmanager;notifications;

por

RequiredProviders=windowmanager;

6

Reiniciar (o cerrar sesión y volver a entrar asegurándose de tener Gnome Classic)

Google Storage

Google Storage es el espacio compartido de nube que ofrece Google para archivos en Gmail, fotos en Picasa y Google Docs, por defecto son 1GB gratis, que no es mucho si lo comparamos con las ofertas de otros servicios como DropBox (2GB) o Box (5GB), pero que tiene una muy competitiva relación espacio/precio cuando entramos a las opciones pagas.

Hasta ahora soy un entusiasta usuario DropBox y lo recomiendo, pero he empezado a prestar atención a un par de opciones que han aparecido para hacer uso de ese espacio que Google nos da con cada usuario.

google-docs-fs

Google-docs-fs es una aplicación escrita en Python que permite integrar (montar) el espacio disponible en Google Docs como parte del arbol de directorios de nuestro sistema y usarlo en forma transparente con nuestras aplicaciones, por ejemplo el Nautilus.

Se integra mediante FUSE que viene disponible en forma estandar en la mayoría de las distrubuciones de Linux y permtite que cada usuario del sistema pueda montar y desmontar su espacio en forma independiente y privada. Además de podeer usarlo en MacOS X con MacFUSE, lo que lo hace ideal para mi entorno de trabajo.

La instalación para Ubuntu es simple agregando un repositorio PPA con el comando:

sudo add-apt-repository ppa:invernizzi/google-docs-fs

y luego de instalado el paquete google-docs-fs y sus dependencias, ejecutar:

~$ mkdir GDocs
~$ gmount GDocs/ usuario@gmail.com
Password:
~$

y para desmontar es tan fácil como escribir gumount ~/GDocs/.

Insync

La segunda herramienta que me ha llevado a utiliziar este espacio de Google es Insync. Funciona al mejor estilo DropBox, es decir, genera una carpeta en tu home que estará sincronizada con el espacio en GoogleDocs.

Por ahora solo dispone de versiones para MacOS X (dónde lo he probado) y para Windows, pero está prometida una versión para Linux.

Lo que se ponga o se quite de esa carpeta, será sincronizado a la nube y luego con otras computadoras que estén vinculadas a la misma cuenta. Insync también permite administrar por la web la posibilidad de compartir documentos y carpetas (que es un servicio de GoogleDocs pero que Insync integra y maneja).

Comparando

Google-Docs-FS presenta archivos que están y son accedidos directamente en la nube, lo que supone un ahorro de espacio local, pero tambien una mayor lentitud en el intercambio de datos. Por su parte Insync trabaja sobre una copia local que sincroniza, en segundo plano, con el espacio en GoogleDocs.

Son herramientas distintas, por ejemplo, utilizaría Google-Docs-FS en computadoras donde no deseo tener una copia de todos mis archivos, pero si trabajar con ellos; por ejemplo en mi trabajo o en un servidor al que accedo remoto.

Ver:

if test "Ubuntu 10.10"; then echo 42; fi

Cuando Pensamiento Profundo, el más grande computador construído por una sociedad de seres pandimensionales, anunció tras siete millones y medio de años de cálculo que la respuesta definitiva al sentido de la vida, el universo y todo lo demás era el número 42, posiblemente lo hizo un día como hoy 10 del mes 10 del año 10 (que en binario representa el decimal 42); claro que en el correspondiente calendario de esa sociedad.

Qué afirmación más geek (yo mismo me asombro!), digna de la Guía del Autoestopista Galáctico (sin ningún interés de tratar de ponerme a la altura de Douglas Adams, por supuesto).

Cuando Pensamiento Profundo percibió que la respuesta final no conformaba, se apresuró a indicar que posiblemente no había sido formulada la pregunta definitiva, para lo cual construyeron un segundo computador que lograra formular dicha pregunta, ese computador fue «la Tierra».

Tal vez habría que habér preguntado: «Ubuntu 10.10?»

Sí, pues hoy es el lanzamiento de Ubuntu 10.10 (qué casualidad!!!)

La presentación oficial de Ubuntu 10.10 en Uruguay se realizará el próximo sábado 16 de octubre en la ciudad de Carmelo.

Lanzamiento Ubuntu 10.10

en la oportunidad estaré compartiendo con quienes asistan las características de la versión servidor y sus prestaciones para la construccion de computación en nube.

Notas en la prensa que he visto hoy a propósito de este evento en Carmelo:

Entonces a disfrutar este día tan especial…

Sea Ud. la Nube

La emergente nube (cloud computing) para alojar aplicaciones está siendo solución para muchas organizaciones. Pero qué sucede cuando sus datos deben permanecer en su red, detrás de su firewall? Qué sucede cuando Usted cuenta con la infraestructura de hardware y el personal capacitado y no necesita tercerizar estos servicios? En esos casos es posible beneficiarse de las ventajas de una nube propia. Con esta presentación: Sea Usted La Nube, se aborda un enfoque práctico sobre cómo tener una nuve propia, sus ventajas y consideraciones de implantación, con la posibilidad de escalar a una nube pública.

Público Objetivo: Administradores de servidores y centros de datos, administradores de redes basadas en Linux.

Requisitos: Nociones de instalación de Linux (Ubuntu).

Conferencia dictada en:

  • 17 ago 2010 – Zonamerica TechDay, Jacksonville, Zonamerica, Dpto. de Canelones, Uruguay