miércoles, 18 de diciembre de 2013

XenServer Tools ISO must be ejected from all running VMs

Hola!

Algo que personalmente me parece muy pesado es cuando vas a instalar un patch en XenServer que actualiza las XenTools, como el Service Pack (XS62ESP1), recibas un mensaje de error como el siguiente:

# xe patch-apply uuid=0850b186-4d47-11e3-a720-001b2151a503 host-uuid=d1dda2db-29fe-41c6-a82b-e35ae8f05a69
The patch precheck stage failed with an unknown error.  See attached info for more details.
patch: 0850b186-4d47-11e3-a720-001b2151a503 (XS62ESP1)
info: XenServer Tools ISO must be ejected from all running VMs.

Para contraatacar esta problema, simplemente ejecutamos:
# xe vbd-list vdi-uuid=$(xe vdi-list name-label=xs-tools.iso --minimal) 

Y sabremos que máquinas virtuales tienen la iso de las Xentools "attached". Si lo que quieres es ya directamente, quitar la iso de todas, ejectuar:
# for vbd in `xe vbd-list vdi-uuid=$(xe vdi-list name-label=xs-tools.iso --minimal) --minimal | sed s/','/' '/g` ; do xe vbd-eject uuid=$vbd ; done 

También encontré en el Blog de Citrix un script llamado all-dvd-eject.sh que funciona de maravilla
http://blogs.citrix.com/2010/01/28/eject-all-dvds-from-xenserver-vms/

Saludos!!

lunes, 16 de septiembre de 2013

Cómo ver los 50 ficheros abiertos, más grandes con lsof

Hola!

Como a muchos nos ha pasado alguna vez... pasteo el lsof de la muerte que nos mostrará los 50 ficheros más grandes que tenemos abiertos en el sistema.
# lsof -s | awk '$5 == "REG"' | sort -n -r -k 7,7 | head -n 50
Así podemos ver ficheros que nos pueden estar gastando disco de forma indisciminada y verlos fácilmente ;)

Otro caso que tambien requiere una red de tuberías arcanas, para ver que procesos Dead de un sistema, y contarlos. Muy útil si por ejemplo tienes un Load Average alto o muy alto, sin embargo, haciendo un top, ves que no estas consumiendo CPU... Con lo siguiente los puedes ver y destruir con un kill -9

# top -b -n 1 | awk '{if (NR <=7) print; else if ($8 == "D") {print; count++} } END {print "Total status D: "count}'
Fuente aquí  y aquí Saludos

martes, 10 de septiembre de 2013

Configurar Powerpath en Oracle VM en vez de usar Multipath

Hola amigos! Como algunos ya sabéis estoy probando Oracle VM para backends de bases de datos. Y aquí va primer post, para configurar powerpath en vez de multipath para todos los que tengáis cabinas EMC.

Para luego verificar que vemos las mismas LUNS y mismos UUIDs, podemos guardar la salida de:
#  ls -l /dev/mapper/
total 0
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce2027004ed03e645919e311
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce202700a2ffea74fe15e311
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce202700ec38369a364be111
Primeramente desactivamos multipath y reniciamos el servidor
# chkconfig multipathd off
# /etc/init.d/multipathd stop
Una vez UP, miramos que no tengamos ningún device en el /dev/mapper
# ls -l /dev/mapper
total 0
crw------- 1 root root 10, 236 sep  9 15:48 control
Nos descargamos el nuevo udev del repositorio de Oracle y lo instalamos
# wget http://public-yum.oracle.com/repo/OracleVM/OVM3/latest/x86_64/udev-095-14.27.100.1.el5_7.4.2.x86_64.rpm
# rpm -Uvh udev-095-14.27.100.1.el5_7.4.2.x86_64.rpm
warning: udev-095-14.27.100.1.el5_7.4.2.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
   1:udev                   ########################################### [100%]
Ahora, lo mismo pero con las versión correcta de powerpath.
# rpm -iv EMCPower.LINUX-5.7.1.01.00-006.OL5_UEK2_R3.x86_64.rpm 
Ya podemos añadir la key y reniciar
# emcpreg -add XXXX-XXXX
# reboot
Cuando tengamos otra vez el servidor arrancado, verificamos que en el device mapper estan las LUNS que teniamos con multipah con el mismo UUID. Pero primeramente acabamos de configurar PowerPath:
# powermt check_registration
# powermt set policy=co dev=all
# powermt display dev=all
# powermt save
Comprobamos el dev mapper:
# ls -l /dev/mapper/
total 0
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce2027004ed03e645919e311 ../emcpowerc
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce202700a2ffea74fe15e311 ../emcpowerb
lrwxrwxrwx 1 root root      12 sep 10 10:08 360060160ce202700ec38369a364be111 ../emcpowera
Con esto ya tendríamos que tener incluso montado el cluster ocfs2
# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              3050092   1498204   1394452  52% /
/dev/sda1               101086     28542     67325  30% /boot
tmpfs                   541872         0    541872   0% /dev/shm
none                    541872        96    541776   1% /var/lib/xenstored
/dev/emcpowere        20971520    269076  20702444   2% /poolfsmnt/0004fb0000050000b8c6c5abcb3fd94b
/dev/emcpowerd       419430400  56515584 362914816  14% /OVS/Repositories/0004fb00000300000e98b1c9f943d355
Tengo que reconocer que en algunos aspectos como el RawDevice Mapping que tiene OVM está muy bien, es una lástima que con XenServer no lo tengamos solucionado ahún :D
Saludos

viernes, 6 de septiembre de 2013

Cómo hacer strace a un Apache

Hola,

¿Cómo podemos llegar más a fondo que la información que nos dan los logs de apache? Por ejemplo las llamadas al sistema, ficheros que se abren, etc...

Una forma elegante usando strace, por ejemplo con:
strace -f -s 4096 -o /tmp/asd.out `pgrep apache| awk '{print "-p "$1}'|xargs` 
Si abrimos otro terminal con una sesion SSH y hacermos un tail de /tmp/asd.out, podremos ir viendo como se atiende cada petición HTTP
tail -f /tmp/asd.out
>4) = 548
5257  poll([{fd=11, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
5257  write(11, "-\0\0\0\3select type,value from cdef_items where id=7", 49^C

Analizando el strace lanzado:

-t Trace child processes as they are created by currently traced processes as a result of the fork(2) system call.

-s Specify the maximum string size to print (the default is 32).  Note that filenames are not  considered  strings  and  are  always printed in full

-o Fichero de salida

-p El PID que queremos stracear (Como apache tiene varios PIDS, hacemos el subcomando `pgrep apache| awk ... que nos dara una salia << -p pidApache_1 -p pidApache_2 >>

Saludos

lunes, 15 de julio de 2013

Hack Secondary Storage VM (SSVM)

Hola,

Después de un rato de investigación sobre la System VM, SSVM de CloudSatck hago unos cuantos apuntes:
  • El password por defecto de root es 6m1ll10n
  • La clave RSA para acceder por SSH a susodicha máquina se encuentra en: /usr/lib/cloud/common/scripts/vm/systemvm/id_rsa.cloud (en instalaciones Ubuntu 12.04 por APT). Copiamos esta clave y la dejamos con permisos 0700 en /root/  por ejemplo
  • Por supuesto, si tienes la clave no hace falta el passwd, solo tienes que tener una interface en la red (cloud_link_local_network) 169.254.3.X para acceder por SSH, ssh -i id_rsa.cloud root@169.254.3.121  -p 3922
  • Y ojo con el IPTABLES en la SSVM, por defecto intercepta todas las peticiones HTTP y las bloquea. incluso las de la propia red... iptables -F
Saludos

miércoles, 3 de julio de 2013

Muerte por RANDOM

Cómo morir haciendo un random, recomendable ejecutar en tty1

while true ; do echo -ne "\033[01;$((30+$RANDOM%9));$((40+$RANDOM%9))m" ; echo < /dev/urandom ; done

lunes, 1 de julio de 2013

Upgrade de XCP 1.6 a XenServer 6.2

Hola!!

Desde que XenServer es libre, XCP como distro, en principio ya no tiene sentido. Hasta el punto que la ISO de Citrix y la de XCP será la que esté en xenserver.org.

Solo comentaros que la actualización de XCP 1.6 a XenServer 6.2 funciona sin problemas. He usado la instalación desde ISO, reiniciando nodo por nodo y la configuración a funcionado bien sin ningún problema aparente.


Saludos

viernes, 28 de junio de 2013

Travestir Xen Cloud Platform para ser XenServer

Hola!
Hoy vamos hacer que el panda de XCP 1.5 se ponga traje y corbata para que lo podamos integrar con CloudStack. Para ello hay que seguir los pasos de http://wiki.xen.org/wiki/XCP_CloudStack

Primero hacemos ver que tenemos los repos de XenServer...
cp /etc/xensource/installed-repos/xcp:main /etc/xensource/installed-repos/xs:main

Nos hacemos un backup del fichero NFSSR.py y copiamos el de Citrix

mv /opt/xensource/sm/NFSSR.py /opt/xensource/sm/NFSSR.py.backup
wget http://download.locatrix.com/xcp/cloudstack/NFSSR.py -O /opt/xensource/sm/NFSSR.py

Permisos...
chmod 755 /opt/xensource/sm/NFSSR.py Y con esto ya tendríamos que poder añadirlo a nuestra nube