He estado utilizando a MongoDB con Debian para montar las bases de datos de la empresa donde trabajo (ser jefe tiene sus ventajas) y hasta hoy en la mañana no había tenido ningún problema. Traté de instalar mongodb en una de las máquinas de la oficina que tenía ya instalado Debian y falló. No tenía mucho tiempo de revisar, pensé que era un problema aislado y seguí con los pendientes del día anterior.
Poco entregaron un servidor y lo asignaron al área para que trabajaramos ahí y pusieramos en producción un proyecto, me sentí motivado porque siempre es bueno estrenar los juguetes nuevos, más si es un servidor.
Instalé algunas librerías, uno que otro paquete que necesitaba, NodeJS y demás. No tuve problema alguno hasta que empecé con MongoDB. Dos fallos en un día. Ni modo, a darle..
Seguí los pasos de la página oficial pero cuando quise iniciar el servicio....
[FAIL] Starting database: mongod failed!
[FAIL] Starting database: mongod failed!
invoke-rc.d: initscript mongod, action "start" failed.
dpkg: error al procesar mongodb-org-server (--configure):
el subproceso instalado el script post-installation devolvió el código de salida de error 1
Configurando mongodb-org-mongos (2.6.4) ...
Configurando mongodb-org-tools (2.6.4) ...
dpkg: problemas de dependencias impiden la configuración de mongodb-org:
mongodb-org depende de mongodb-org-server; sin embargo:
El paquete `mongodb-org-server' no está configurado todavía.
dpkg: error al procesar mongodb-org (--configure):
problemas de dependencias - se deja sin configurar
Se encontraron errores al procesar:
mongodb-org-server
mongodb-org
E: Sub-process /usr/bin/dpkg returned an error code (1)
¡El mismo error apareció!
No iniciaba...
"Ok, tranquilo", me dije a mi mismo. "Revisa los logs antes de googlear", recordé. Quise hacer las pruebas en la máquina que previamente había mostrado ese error. Es mejor echar a perder un equipo de 10mil pesos que uno de 10mil dólares...
En la guía de instalación decía claramente que los logs se guardaban en /var/log/mongodb.
tail -n30 /var/log/mongodb/mongod.log
La clave estaba en un par de líneas:2014-07-15T12:59:41.089+0000 [initandlisten] ERROR: Insufficient free space for journal files
2014-07-15T12:59:41.089+0000 [initandlisten] Please make at least 3379MB available in /data/db/journal or use --smallfiles
Lo chistoso es que según yo, ese disco tenía 1TB.
Bien, ahora para ver el problema:
df -h
root@delta:/home/global# df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
rootfs 323M 164M 143M 54% /
udev 10M 0 10M 0% /dev
tmpfs 790M 352K 790M 1% /run
/dev/disk/by-uuid/9710f932-bf8e-4455-a0af-5df066802577 323M 164M 143M 54% /
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 4.7G 0 4.7G 0% /run/shm
/dev/sda9 890G 3.5G 842G 1% /home
/dev/sda8 368M 82M 268M 24% /tmp
/dev/sda5 8.3G 2.5G 5.5G 31% /usr
/dev/sda6 2.8G 1.4G 1.3G 52% /var
El error estaba en que instalaron Debian en todo el disco duro con la opción de separar el directorio /var
En este caso el espacio disponible estaba en /home. Entonces lo más práctico es cambiar el path en la configuración. Consulté la guía nuevamente. Para no hacer tanto rollo y hacer las pruebas más rápido, creé un directorio y edité el archivo de configuración; no sin antes hacer
cp /etc/mongod.conf /etc/mongod.conf.bak
Cambié la opción al directorio que había creado.Traté de iniciar nuevamente:
mongod --config /etc/mongodb.conf
Intenté reparar:
mongod --repair
Ok, cambiaré el path de la base.
mongod --repair --dbpath /home/global/mongodb/
De nuevo error. De regreso a ver el .log.
Ahora el error es de permisos.
¡Já! Creé el directorio para la base de datos como root. A todo el mundo le puede pasar...
chown mongodb mongo/*
¡Listo!
Ahora vamos por el server, será lo mismo pero tendré que esperar hasta el lunes porque ya casi es hora de la salida...