miércoles, 1 de mayo de 2013

Mover el /var a otro disco

Levanté un template de una virtual que había creado hace tiempo, pero tenía sólo 5Gb en el / y todo en la partición, como tenía que instalar un squid tenía que crear una nueva partición en /var donde iba a ir el cache y los logs.

Agregué un nuevo disco en XenServer con la virtual apagada, como tengo la versión free, no me dejaba agregarlo en caliente, en realidad me dejaba pero no lo reconocía el S.O.

Luego de agregarlo utilizamos el fdisk para ver el device del disco:

# fdisk -l


Vemos que el nuevo que aparece es el /dev/xvde, ahora lo seleccionamos para crear la partición, presionamos la "n", la "p" para indicarle que es primaria y el "1" para indicar el número. Finalmente presionamos la letra "w" para guardarla:


# fdisk /dev/xvde
Command (m for help): n
   e   extended
   p   primary partition (1-4)p
Partition number (1-4): 1
First cylinder (1-6527, default 1): ENTER
Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): ENTER
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#


Formateamos la partcición en ext3:

# mkfs.ext3 /dev/xvde1


Buscamos el UUID de la partición para posteriormente agregarlo al fstab:

#blkid /dev/xvde1
/dev/xvde1: UUID="a24ea09d-c1c4-4288-bd45-475d6e782d00" SEC_TYPE="ext2" TYPE="ext3"


Creamos el /var1 y editamos el fstab:


# mkdir /var1/

# vim /etc/fstab
UUID=a24ea09d-c1c4-4288-bd45-475d6e782d00       /var1   ext3    defaults        1       2


Montamos el /var1:

# mount /var1

 # ls -l /|grep var
drwxr-xr-x 14 root root  142 Mar 20  2012 var
drwxr-xr-x  3 root root 4096 Apr 29 11:05 var1


Copiamos todo el contenido del /var a /var1:

# cp -Rpf /var/* /var1/

# umount /var1

# mv /var /var2


Modificar en el fstab el /var1 por /var:


# vim /etc/fstab
UUID=a24ea09d-c1c4-4288-bd45-475d6e782d00       /var    ext3    defaults        1       2

# mkdir /var

# mount /var


Verificamos que el /var está ahora con 50Gb:

#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda2            4.9G  910M  4.0G  19% /
tmpfs                 121M     0  121M   0% /lib/init/rw
udev                  116M  128K  116M   1% /dev
tmpfs                 121M     0  121M   0% /dev/shm
/dev/xvda1            184M   21M  155M  12% /boot
/dev/xvde1             50G  557M   47G   2% /var


Borramos el /var1 y el /var2 que quedaron:

#rm -rf /var1 /var2/



martes, 26 de marzo de 2013

XenCenter Error: The ballooning daemon is not running

Hoy se llenó la partición del / de un XenServer e intentaba reiniciarlo o apagarlo desde el XenCenter y no me lo permitia, también probe por linea de comandos desde la consola y nada.


En los logs aparecía el siguiente mensaje:

The ballooning daemon is not running


Consultando la documentación de xen encontré lo siguiente y luego me dejo reiniciarla:

# xe-toolstack-restart

viernes, 22 de marzo de 2013

Monitoreo espacio DBspaces en Informix

Aclaración:

Tener en cuenta que este script fue creado particularmente para el DBspace datadb de un especifico server para el chunk: 1ec9a2038


Creamos un archivo para el script y colocamos lo siguiente:

vim check_informix_dbspace_morsa
#!/bin/bash
SIZE_DATADB_DBSPACE=`onstat -d | grep 1ec9a2038 | awk '{print $6}'`
if test $SIZE_DATADB_DBSPACE -lt 206431
then
  echo CRITICAL - DBspace is $SIZE_DATADB_DBSPACE
  exit 2
else
  if test $SIZE_DATADB_DBSPACE -lt 306431
  then
    echo WARNING - DBspace is $SIZE_DATADB_DBSPACE
    exit 1
  else
    echo OK - DBspace is $SIZE_DATADB_DBSPACE
    exit 0
  fi
fi


Agregarlo al Nagios con NRPE:

Si queremos agregar el monitoreo al nagios con NRPE nos basamos en este enlace que ya fue explicado:

Monitoreo Base de Datos Infomix con Nagios y NRPE

Creamos el script:

Lo llamamos como queremos, en mi caso le puse: check_informix.sh y colocamos lo siguiente dentro:

# vim /ruta/al/script/check_informix.sh

#!/bin/bash
sudo /usr/local/apps/informix/bin/onstat |grep On-Line > /tmp/informix-nagios.log
if test $? -eq 0
then
echo OK - DB On-Line
/usr/bin/rm /tmp/informix-nagios.log
exit 0
else
echo CRITICAL - DB Off-Line
exit 2
fi


Como llamarlo del NRPE:

Editamos el nrpe.conf con lo siguiente:

# vim /ruta/a/la/configuracion/del/nrpe/nrpe.cfg

command[check_stateDB]=/ruta/al/script/check_informix.sh


Reiniciamos el demonio del NRPE:

# ps -efa | grep nrpe

# kill -9 pid_del_proceso_nrpe

# /ruta/al/nrpe/folder/bin/nrpe -c /ruta/al/nrpe/folder/etc/nrpe.cfg -d


Lo agregamos en el services del nagios:

# vim /ruta/al/folder/de/nagios/etc/services.cfg

define service{
use                             generic-service
host_name                       Informix Server
service_description             Informix_State
check_command                   check_nrpe!check_stateDB
}

jueves, 21 de marzo de 2013

No responde consola de XenServer ni XenCenter

Me quede sin espacio en la particion / del un servidor xenserver de citrix que tenia 3 VMs corriendo.

Las virtuales y la maquina base respondian ping pero no podia acceder desde el xencenter ni desde la consola conectando el monitor.

Por SSH pude ingresar, intentaba reiniciar el xapi y quedaba colgado.

Los mate manualmente con kill y luego inicie el servicio y levanto correctamente:

# ps -efa | grep xapi

# kill -9 PIDs_de_los_procesos_xapi

# service xapi restart

Pude acceder a la consola desde el server fisico y desde el xencenter.


domingo, 3 de marzo de 2013

Recopilación de Comandos de Informix

Muestra ultimas lineas del online.log:

#onstat -m


Ver estado de la DB, muestra dbspaces y espacio de c/u:

#onstat -d


Levanta la DB:

#oninit -v


Baja la DB preguntando:

#onmode -k  


Baja la DB sin preguntar:

#onmode -ky


Para gestionar la DB, crea, consulta, dreopea bases y tablas:

#dbaccess    


#onmonitor


Permite bajar y subir el access plus:

#accplusdb


Ver quien esta usando la DB:

#ipcs            
#ipcrm -q ID Semaforo
#ipcrm -m ID Memoria
#ipcrm -s ID Cola


Para ver lockeo de tablas:

#onstat -k


Para ver sesiones que lockean:

#onstat -ses


Para matar sesiones, en este caso vemos con el comando previo que sesion la lockea:

#onmode -z ID  


Inactiva, pero online -Pone la DB en modo Quiescent, espera que todos los usuarios salgan de la DB. No permite nuevas conexiones al motor, las que existen las cierra en modo normal:

#onmode -sy


Nos movemos al siguiente log logico:

#onmode -l


Nos devuelve descripcion del nro de error que le pasamos:

#finderr Nro-error  


Pasa la DB llamada "Base" a modo transaccional UNBUFFERED:

#ontape -s -L 0 -U Base


Pasa la DB llamada "Base" a modo transaccional BUFFERED:

#ontape -s -L 0 -B Base


Pasa la DB llamada "Base" a modo NO TRANSACCIONAL, permite hacer consultas pero no modificaciones:

#ontape -s -L 0 -N Base


Para backups de Logical Logs:

#ontape -a   


Para ver si se backupean los Logical Logs:

#onstat -l

Crea export llamado Base.exp con datos de las tablas:

#dbexport Base


Importa de Base.exp el sql dentro:

#dbimport Base


Load:

#echo "load from archivo.unl insert into tabla" | dbaccess base


Bajar estructura de una tabla de una Base:

#dbschema -t tabla -d base


Unload base:

#echo "unload " | dbaccess base


Descargar a un archivo contenido de una tabla:

# echo "UNLOAD TO 'nombre_archivo.unl' SELECT * from nombre_tabla | dbaccess nombre_db

miércoles, 6 de febrero de 2013

Usos útiles del comando find

Listar cuales son directorios recursivamente:

# find . -type d
.
./CARPETA1
./CARPETA1/CARPETA-1a
./CARPETA2
./CARPETA2/CARPETA-2a
./CARPETA3
./CARPETA3/CARPETA-3a
./CARPETA4
./CARPETA4/CARPETA-4a


Listar archivos recursivamente:

# find . -type f
./CARPETA1/CARPETA-1a/archivo-1a
./CARPETA1/CARPETA-1a/archivo-2a
./CARPETA1/archivo1
./CARPETA1/archivo2
./CARPETA2/CARPETA-2a/archivo-1a
./CARPETA2/CARPETA-2a/archivo-2a
./CARPETA2/archivo1
./CARPETA2/archivo2
./CARPETA3/archivo1
./CARPETA3/archivo2
./CARPETA4/archivo1
./CARPETA4/archivo2


Listar archivos dentro de la ruta actual que tengan nombre archivo1: (recursivo)

# find . -name archivo1 -type f -exec ls {} \;
./CARPETA1/archivo1
./CARPETA2/archivo1
./CARPETA3/archivo1
./CARPETA4/archivo1


Borrar archivos dentro de la ruta actual que tengan nombre archivo2: (recursivo)

# find . -name archivo2 -type f -exec rm {} \;


Buscar archivos que en los últimos 5 días NO se modificaron:

# find /ruta -type f -mtime +5 -print


Buscar archivos que en los últimos 5 días se modificaron:

# find /ruta -type f ! -mtime +5 -print


Archivos modificados en las últimas 24 hs:

# find /home/ruta -mtime -1 -print


Borrar archivos mayores a 1Gb:

# find /home/users -size +1000000k -exec rm {} \;


Borrar archivos gz de cierta ruta mayores a 1Gb y modificamos hace más de 2 semanas:

# find /ruta/*gz -size +1000000k -mtime +14 -exec rm {} \;


Buscar archivos que tienen la cadena "PEPE" dentro y mostrar los archivos que la contienen:

# find . -type f -exec grep -l "PEPE" {} \; -exec rm {} \;


Buscar archivos que tienen la cadena "PEPE" dentro y mostrar las líneas:

# find . -type f -exec grep "PEPE" {} \;
PEPE es un pendorcho


Buscar archivos sin distinguir entre mayúsculas y minúsculas que contengan la cadena Pepito, PEPITO, PePiTo, etc y mostrar los archivos que contienen:

# find . -type f -exec grep -i "PePito" {} \;

Para buscar en el primer arbol de directorio usamos el parámetro -maxdepth en 0, si quisieramos utilizar el primer y segundo nivel ponemos 1 y así sucesivamente. En este ejemplo buscamos todos los directorios que hay en la ruta del sarg y filtramos por el año actual, el primer arbol de directorio, solo los directorios que no fueron modificados hace más de 30 días y los borramos:

# find /var/lib/sarg/Weekly/`date +%Y`* -maxdepth 0 -type d -mtime +30 -exec rm -r {} \;