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

lunes, 17 de junio de 2013

CentOS 6.4 XenServer HVM domU Install Error

Hola!!


Recientemente he visto un bug a la hora de instalar CentOS 6.4 sobre XenServer tanto en ramas 5.6 como en 6.x. El problema es que no acaba de arrancar la minimal install iso. El truco, sencillo.

En un dom0 del pool, cambiamos los parámetros de la vm HVM que estamos probando:

xe vm-param-set uuid= platform:viridian=false

Con esto y un Control+Alt+Supr y la máquina tendría que arrancar con el setup de Centos 6.4


Saludos!

martes, 4 de junio de 2013

Instalando Bochs en GNU/Linux - Un emulador de PC x86 Arcano -


Hola! Hoy vengo con Bochs... Es un emulador opensource para entorno PC hecho en C++ por Kevin Lawton.
Evidentemente en cuanto a rendimiento, bochs es bastante más lento que QEMU ya que lo emula TODO. Pero me ha hecho gracia probarlo por el hecho que es bastante arcano, que ocupa 4,2M y es muy "actual" ya que la última release, es del 26 de Mayo de este año...

Descomprimimos el código fuente y accedemos al directorio
$ tar -xvzf bochs-2.6.2.tar.gz
$ cd bochs-2.6.2

Instalamos dependencias para poderlo compilar
$ sudo apt-get install libxrandr-dev  libxt-dev libxaw7-dev  g++

Hacemos el ./configure para Linux
$ sh .conf.linux

$ make
$ make install

Ya lo tenemos!
$ bochs

========================================================================
                       Bochs x86 Emulator 2.6.2
                Built from SVN snapshot on May 26, 2013
                  Compiled on Jun  4 2013 at 13:21:12
========================================================================
00000000000i[     ] LTDL_LIBRARY_PATH not set. using compile time default '/usr/local/lib/bochs/plugins'
00000000000i[     ] BXSHARE not set. using compile time default '/usr/local/share/bochs'
00000000000i[     ] lt_dlhandle is 0xa8a9e18
00000000000i[PLGIN] loaded plugin libbx_unmapped.so
00000000000i[     ] lt_dlhandle is 0xa8aa3f8
00000000000i[PLGIN] loaded plugin libbx_biosdev.so
00000000000i[     ] lt_dlhandle is 0xa8aaa18
00000000000i[PLGIN] loaded plugin libbx_speaker.so
00000000000i[     ] lt_dlhandle is 0xa8aaf30
00000000000i[PLGIN] loaded plugin libbx_extfpuirq.so
00000000000i[     ] lt_dlhandle is 0xa8ab3f8
00000000000i[PLGIN] loaded plugin libbx_parallel.so
00000000000i[     ] lt_dlhandle is 0xa8ac830
00000000000i[PLGIN] loaded plugin libbx_serial.so
00000000000i[     ] lt_dlhandle is 0xa8af758
00000000000i[PLGIN] loaded plugin libbx_gameport.so
00000000000i[     ] reading configuration from .bochsrc
00000000000e[     ] .bochsrc:522: ataX-master/slave CHS set to 0/0/0 - autodetection enabled
------------------------------
Bochs Configuration: Main Menu
------------------------------

This is the Bochs Configuration Interface, where you can describe the
machine that you want to simulate.  Bochs has already searched for a
configuration file (typically called bochsrc.txt) and loaded it if it
could be found.  When you are satisfied with the configuration, go
ahead and start the simulation.

You can also start bochs with the -q option to skip these menus.

1. Restore factory default configuration
2. Read options from...
3. Edit options
4. Save options to...
5. Restore the Bochs state from...
6. Begin simulation
7. Quit now

Please choose one: [6]


Saludos!!

lunes, 3 de junio de 2013

Configurar memoria para el Dom0

Hola amig@s! Para la versión 6.10 de XenServer, ya no tenemos que ir a rascar el fichero extlinux.conf para ampliar la memoria reservada para el Dom0, simplemente con ejectutar xen-cmdline de este modo:

/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=2048M,max:2048M

Con esto, una vez reiniciado el host, ya lo tendríamos ampliado a 2048M en vez de los 752M por defecto.

Ahora si ejecutamos cat /proc/xen/ballon deberíamos ver algo así:

(Sin ampliar 752 MB)
#cat /proc/xen/balloon
Current allocation:   759040 kB
Requested target:     761856 kB
Minimum target:       203776 kB
Maximum target:       778240 kB
Low-mem balloon:           0 kB
High-mem balloon:          0 kB
Driver pages:           4096 kB

Ampliado a 2940M
# cat /proc/xen/balloon
Current allocation:  3002368 kB
Requested target:    3002368 kB
Minimum target:       397440 kB
Maximum target:      3018752 kB
Low-mem balloon:           0 kB
High-mem balloon:          0 kB
Driver pages:           4096 kB

Be Zen my Friend ;)
Saludos!

martes, 30 de abril de 2013

Ext4 group descriptors corrupted + LVM cifrado

Hola!! he aquí otro error que da como resultado una petada al puro estilo Windows... PC sin arracar.

Mira que hay veces que he apagado mal el portátil y bueno, es algo que nunca me había pasado, hasta hoy. Cómo arreglarlo, facil:

Arrancamos con nuestra distro USB/CD live como Arch.

Cargamos el módulo del kernel
modprobe dm-crypt

Ejecutamos
cryptsetup luksOpen /dev/sda5 crypt1

Escaneamos los volumenes LVM:
vgscan --mknodes
vgchange -ay

Y le damos caña:
fsck /dev/mapper/xubuntu-root

Suerte!!

jueves, 14 de marzo de 2013

Cómo Liberar tu teléfono Orange

Hola! Desde hace un tiempo estábamos planteando la opción de unificar las comunicaciones de casa. Desde tiempo, usamos Jazztel como proveedor de ADSL y es la que  más ventajas me aporta, buen rendimiento, anexo-M, buen soporte técnico (Le puedes decir al técnico que falla la autentificación radius y te entienden :D). 

Tras recibir ofertas con información sobre contratos de móviles de voz y datos de Jazztel y hacer unos números, nos decidimos hacer la portabilidad de mi móvil a Jazztel, pero mi querido iPhone, era Orange... 

Pues tan sencillo como llamar al telefono 2286 de Orange y pedir la liberación por IMEI (este se puede consultar en el propio telefono, o bien marcando *#06#). Si no tienes permanencia, no vas a tener ningún problema. 

Pasados 4 días actualizé ITunes y el IOS a 6.1.2 con la antigua targeta, apagé el móvil y puse la Micro SIM de Jazztel y listos. Eso sí para que te funcione el 3G tienes que configurar las opciones de Datos de Telefonía Mobil, la APN jazzinternet 

Saludos!!


martes, 5 de febrero de 2013

XenServer - Nagios check usando XAPI

Hola! Este es el nuevo checkeo para XenServer que he estado haciendo. Es basicamente diferentes petiociones que realiza el servidor nagios contra la XAPI directamente. Es decir que no hace falta tener nrpe en los hosts. Simplemente con visibilidad al puerto 80/433 el checkeo es capaz de funcionar. 

Lo puedes descargar usando git en:

Por defecto, recomiendo poner el Master-Host en la definicion del servicio, pero no es mandatorio ya que el scrpt comprueba automáticamente si es el host master o no, y si no es master, se conecta al master. (obey your master, master!)

#!/usr/bin/python
# WTFPL (Do What The Fuck You Want To Public License)
#
#           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#                   Version 2, December 2004
#
#Copyright (C) 2013 Ferran Serafini 
#
#Everyone is permitted to copy and distribute verbatim or modified
#copies of this license document, and changing it is allowed as long
#as the name is changed.
#
#           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
#
# 0. You just DO WHAT THE FUCK YOU WANT TO.

import sys, time
import os
import XenAPI

...
Definicón del comando
define command{
        command_name check_xen
        command_line $USER1$/check_xen.py $ARG1$ root $ARG2$ $ARG3$ $ARG4$ $ARG5$
        }

Utilizaremos el mismo command para definir 3 servicios, uno para monitorizar los Hosts del pool, otro para verificar que estos hosts estan conectados a la cabina y otro que verifica el espacio disponible en los SR

Definicion de los servicios
#Cluster Hosts
define service{
        use                             C-XEN_HW
        host_name                       SB-XENBOX
        service_description             SB-XENBOX-CLUSTER_HOSTS
        check_command                   check_xen!Master_Host!passwd!HOSTS!0!0
        }
#Cluster PBDs
define service{
        use                             C-XEN_HW
        host_name                       SB-XENBOX
        service_description             SB-XENBOX-CLUSTER_STORAGE_PBDs
        check_command                   check_xen!Master_Host!passwd!SR!0!0
        }
#Free Storage
define service{
        use                             C-XEN_HW
        host_name                       SB-XENBOX
        service_description             SB-XENBOX-SHARED_STORAGE_FREE
        check_command                   check_xen!Master_Host!passwd!DISK!95!98
        }

Y con esto ya tenemos un nuevo check para Nagios ;)

jueves, 3 de enero de 2013

DNS de Google hackeados?

Han hackeado los DNS de google?

whois google.com
Whois Server Version 2.0

Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.

Server Name: GOOGLE.COM.ZZZZZZZZZZZZZZZZZZZZZZZZZZZ.LOVE.AND.TOLERANCE.THE-WONDERBOLTS.COM
   IP Address: 50.62.130.9
   Registrar: GODADDY.COM, LLC
   Whois Server: whois.godaddy.com
   Referral URL: http://registrar.godaddy.com

 Server Name: GOOGLE.COM.ZZZZZZZZZZZZZZZZZZZZZZZZZZ.HAVENDATA.COM
   IP Address: 50.23.75.44
   Registrar: PDR LTD. D/B/A PUBLICDOMAINREGISTRY.COM
   Whois Server: whois.PublicDomainRegistry.com
   Referral URL: http://www.PublicDomainRegistry.com

 Server Name: GOOGLE.COM.ZZZZZZZZZZZZZ.GET.ONE.MILLION.DOLLARS.AT.WWW.UNIMUNDI.COM
   IP Address: 209.126.190.70
   Registrar: PDR LTD. D/B/A PUBLICDOMAINREGISTRY.COM
   Whois Server: whois.PublicDomainRegistry.com
   Referral URL: http://www.PublicDomainRegistry.com

En realidad NO, es un TROLL. Nuestro amigo whois busca por todos los campos registrados en la base de datos, por lo tanto si en server name, ponemos cualquier chorrada, en las búsquedas aparecerá.


por ejemplo, pasa lo mismo con microsoft.com

   Server Name: MICROSOFT.COM.ZZZOMBIED.AND.HACKED.BY.WWW.WEB-HACK.COM
   IP Address: 217.107.217.167
   Registrar: DOMAINCONTEXT, INC.
   Whois Server: whois.domaincontext.com
   Referral URL: http://www.domaincontext.com

   Server Name: MICROSOFT.COM.ZZZ.IS.0WNED.AND.HAX0RED.BY.SUB7.NET
   IP Address: 207.44.240.96
   Registrar: TUCOWS.COM CO.
   Whois Server: whois.tucows.com
   Referral URL: http://domainhelp.opensrs.net

 Server Name: MICROSOFT.COM.WILL.BE.SLAPPED.IN.THE.FACE.BY.MY.BLUE.VEINED.SPANNER.NET
   IP Address: 216.127.80.46
   Registrar: ASCIO TECHNOLOGIES, INC.
   Whois Server: whois.ascio.com
   Referral URL: http://www.ascio.com