sábado, septiembre 27, 2014

La Ryder Chess

Al final del torneo Sinquefield de 2014, se jugó una competición denominada Ultimate Moves. La idea era que Rex Sinquefield (mecenas de la copa Sinquefield) y Randy Sinquefield (hijo de Rex) eligieran un equipo cada uno de ellos con los participantes del torneo y los echaran a 'pelear' entre sí en varias modalidades de partidas rápidas y semirápidas, en las que también jugaban padre e hijo.

Recordando esto y coincidiendo con la celebración de la Ryder Cup de este fin de semana, he pensado que se podría hacer algo similar en el ajedrez. En los torneos entre equipos de ajedrez, introducir las modalidades foursomes (jugadores alternan los movimientos), fourballs (jugadores forman mini equipos jugando individualmente) e individuales, podría darle una dimensión muy agradable a la competición. Por ejemplo, en el golf, un deporte tan individual como puede serlo el ajedrez, este modo de juego 'ryder' lo hace mucho más entretenido de ver. En todo caso, no tiene porque ser foursomes, fourballs & individuales, pero sí algo parecido.

En la retrasmisión que dieron online de la competición Ultimate Moves, era curioso ver las risas que se echaban los jugadores cuando veían errores o tenían que jugar posiciones en las que su compañero les había dejado en una situación comprometida.

miércoles, septiembre 24, 2014

Los concursos de chefs

Para mi, la cocina es una cuestión de tiempo y preparación, realizar una receta de la forma adecuada requiere su tiempo para ofrecer algo de comer que sea perfecto. Da igual lo que prepares. Quitar ese tiempo o incluir dificultades a la receta (como falta de ingredientes), va en contra de ese principio básico. Así que cuando veo en la tele un concurso en donde compiten una serie de Chef, me rechina por todos lados.

La cocina es una arte (efímero), como lo es construir un edificio. A nadie le gusta que por meterle prisas al arquitecto, se le olvide terminar una planta del edificio o que no tenga que sustituir las vigas de acero por otras de mala calidad que no van a aguantar porque han dicho que no pueden usar vigas de acero. Pero estos concursos, para incrementar el nivel de dificultad, van por ese camino y no me gusta que lo hagan. Así que no me queda más remedio que ver otra cosa.

Sin grua

A principio de la semana me fije que quitaron la grua de la torre Cajasol (o Torre Pelli o Torre Sevilla). Algún día la terminaran, creo que llevan dos años de retraso.

domingo, septiembre 14, 2014

Acceder a particiones de discos con LVM que están en archivos de imágenes en formato qcow de qemu

Ya el título del artículo se las trae, pero es así, es lo que tuve que hacer la semana pasada en el trabajo debido a un descuido y una configuración errónea en el backup.

En el trabajo, para hacer los backups de las máquinas virtuales que tenemos, no respaldamos todos los directorios de las máquinas al completo, sino que tenemos una serie de savesets (/etc/, /root/, /usr/local/, /opt, /var, /home) que son los que copiamos todos los días utilizando rsync. Durante una intervención en una de esas máquinas virtuales, eliminamos el contenido de un directorio del que no teníamos copia de seguridad y no nos dimos cuenta de ello hasta que fue demasiado tarde.

Aunque empezamos a mirar diferentes formas de recuperar el contenido, advertimos de que estas máquinas, al ser MV de un hipervisor con KVM, vimos que el directorio /var/ del hipervisor estaba respaldado por el rsync. Y dentro de /var esta /var/lib/libvirt que tiene la configuración de las máquinas virtuales y de los discos que utilizan las maquinas virtuales (Yuju!!). Así que era posible recuperar el contenido, al disponer de una copia de seguridad de la máquina al completo de la noche anterior. Sólo teníamos que montar los discos de la copia de seguridad.

Como primer intento, pensamos en copiar los discos al hipervisor y levantar una nueva máquina virtual, pero el hipervisor se encontraba en otra sede, por lo que llevar un disco de 12 GB iba a tardar cerca de cuatro horas. Otra solución, era montar los discos, localizar los dispositivos y acceder a las particiones, sin necesidad de levantar una máquina virtual, trabajando desde un equipo que tuviera acceso a las ficheros de imágenes de los discos que estaban en la copia de seguridad. Mucho más rápido.

El primer problema era acceder al formato qcow que tienen los discos de qemu. Con ellos directamente no podíamos trabajar, por lo que había que convertirlos a formato raw. Esto se puede lograr con el comando qemu-img y la opción convert. Si le añadimos la opción -p obtenemos el progreso de la conversión entre qcow y raw.
$ qemu-img convert -p servidor015.qcow servidor015.raw
El comando anterior, nos genera un nuevo archivo llamado servidor015.raw con el que podremos trabajar a partir de ahora. El siguiente paso ha sido ver que es lo que hay en la imagen raw (discos, particiones, formatos, etc). Realmente, no hace nada, solo nos va a mostrar lo que tenemos dentro del fichero raw.
$ disktype servidor015.raw
--- servidor015.raw
Regular file, size 12 GiB (12884901888 bytes)
GRUB boot loader, compat version 3.2, boot drive 0x80
DOS/MBR partition map
Partition 1: 500 MiB (524288000 bytes, 1024000 sectors from 2048, bootable)
  Type 0x83 (Linux)
  Ext3 file system
    UUID 205F140C-E079-4970-9D62-7EFA29DB423B (DCE, v4)
    Last mounted at "/boot"
    Volume size 500 MiB (524288000 bytes, 512000 blocks of 1 KiB)
Partition 2: 11.51 GiB (12359565312 bytes, 24139776 sectors from 1026048)
  Type 0x8E (Linux LVM)
  Linux LVM2 volume, version 001
    LABELONE label at sector 1
    PV UUID k9Aj9f-v3Uh-iNlg-K6s4-HAAS-1JO9-3Dnr77
    Volume size 11.51 GiB (12359565312 bytes)
    Meta-data version 1
El siguiente paso es utilizar losetup. Con este comando podemos montar la imagen como un device en el sistema.
$ losetup /dev/loop0 servidor015.raw
El device es /dev/loop0, y los siguientes pasos se van encargar de utilizar el dispositivo /dev/loop0 y seguir con el trabajo. No olvidemos que queremos acceder a la partición que tiene los datos de un servidor virtual del que tenemos una imagen en formato qcow de sus discos.

Antes de seguir, hay que echar un vistazo al dispositivo, dependiendo de lo que encontremos haremos una cosa u otra. En este paso, podemos utilizar fdisk, que nos tiene que aportar una información similar a la que obtuvimos con disktype. La diferencia es que fdisk se utiliza sobre un dispositivo (/dev/loop0) en lugar de emplearla sobre un archivo como hicimos con disktype. Si utilizamos fdisk sobre el fichero, hubiera dado un mensaje de error.
$ fdisk /dev/loop0
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Orden (m para obtener ayuda): p
Disk /dev/loop0: 12.9 GB, 12884901888 bytes, 25165824 sectors
Units =3D sectors of 1 * 512 =3D 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Identificador del disco: 0x0000320b
   Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/loop0p1   *        2048     1026047      512000   83  Linux
/dev/loop0p2         1026048    25165823    12069888   8e  Linux LVM
Orden (m para obtener ayuda): quit
Llegados a este paso del trabajo, vemos que no tenemos directamente dispositivos /dev/sdaX o /dev/sdbX, sino que nos han aparecido dispositivos de LVM, lo que nos complica un poco la vida, al tener que montar antes el LVM.

Lo primero aquí es leer los dispositivos que aparecen en /dev/loop0 y agregarlos al sistema.
$ kpartx -a /dev/loop0
Luego creamos unos directorios de trabajo que necesitaremos posteriormente y hacemos un scan de los grupos de volúmenes de lvm.
$ mkdir /mnt/p1
$ mkdir /mnt/p2
$ vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup" using metadata type lvm2
Con esto, ya tenemos un grupo de volúmenes llamado VolGroup, que no esta activo. Para poder utilizarlo, hay que activarlo primero.
$ vgchange -ay VolGroup
  2 logical volume(s) in volume group "VolGroup" now active
$ vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               11,51 GiB
  PE Size               4,00 MiB
  Total PE              2946
  Alloc PE / Size       2946 / 11,51 GiB
  Free  PE / Size       0 / 0
  VG UUID               XR6jkV-pokl-kI2y-d1MY-jjTm-5O1T-BUeD4k
Podemos comprobar los dispositivos que se han creado mirando en /dev/VolGroup/ y /dev/mapper
$ ls /dev/VolGroup/
lv_root  lv_swap
$ ls /dev/mapper/
control           loop0p1           loop0p2           VolGroup-lv_root VolGroup-lv_swap
El último paso a dar será montar las particiones. Como los datos están en el lv_root, nos centramos en él y lo montamos para ver si hemos tenido suerte.
$ mount /dev/mapper/VolGroup-lv_root /mnt/p2
$ ls /mnt/p2/
usr var root home etc lib datos imagenes lost+found
Todo esto, no se me ocurrió de golpe -no soy tan listo-, pero sabía que era posible hacerlo y gracias a las recetas de Antonio Mario (montar imagen qcow) y David Robinson (montar lvm) pude combinarlo y lograrlo.


Prevía a toda esta película, agregamos los directorios 'extras' que faltaban en la configuración del backup de la máquina. 

sábado, septiembre 13, 2014

Volviendo a Thunderbird

En Junio de 2006 empece a probar el cliente de correo Evolution. Las carpetas de búsqueda fueron el principal motivo del cambio, ya que por aquel entonces Mozilla Thunderbird carecía de ellas. Debido a unos problemas de rendimiento, por la cantidad de mensajes que tengo en mi cuenta de correo del trabajo, Evolution había dejado de ser manejable por una serie de problemas y estaba buscando alternativas.

Los problemas que tengo con Evolution estaban localizados inicialmente en las carpetas de búsquedas, parecía que todo el tiempo esta haciendo reindexaciones (tenía una 10 búsquedas predefinidas). Por ese motivo las tuve que desactivar (adiós a la característica que me hizo migrar a Evolution). Pero el problema seguía estando presente. Ha llegado a ser tan grave que ni siquiera podía búsquedas 'normales' de ningún tipo sin que se me quede el cliente de correo medio colgado (demasiados ficheros en el maildir???).

Como primera alternativa, vuelvo a probar Thunderbird. Veo que siguen teniendo mbox como formato por defecto para guardar los mensajes, pero la característica de las carpetas de búsqueda la tienen implementada. Me parece que el sistema maildir es más conveniente y echo en falta una opción para cambiarlo de forma transparente (hay formas para cambiar a maildir, pero me parecen peregrinas). Esperaré a ver que tal se porta.

Nrpe, sudoers y requiretty

Me ha pasado alguna que otra vez que cuando he configurado algún comando remoto que debía ejecutarse como root mediante el demonio nrpe, estos comandos fallaban miserablemente, pero si se ejecutaban desde la shell, bajo el usuario nrpe, no ocurría lo mismo, saliendo todo correctamente.

El problema es la opción 'default requiretty' del fichero /etc/sudoers que aparece por defecto y que obliga a que los comandos que hacen uso de permisos de sudo, necesiten ejecutarse desde un terminal. Y precisamente, los comandos invocados remotamente por nrpe carecen de dicho terminal. Comentar la opción en el fichero /etc/sudoers soluciona los problemas.

Lo que haces marca la diferencia

Soy de la opinión de que lo importante es lo que haces, muy por encima de lo que eres o lo que tienes.

sábado, septiembre 06, 2014

Retransmisión atinada

La retrasmisión de las partidas en directo del torneo de ajedrez Sinquefield 2014, en inglés de su majestad la reina de Inglaterra, son francamente buenas. Me entero de la mitad de la mitad de lo que dicen, pero aún así, el acierto en la elección de los comentarios es notable.

Para Yasser Seirawan todas las jugadas son un 'guauuu' y Maurice Ashley consigue explicarte por qué se hacen unos movimientos y no otros. Jennifer Shahade ha tomado el papel de hacer las preguntas que los aficionados harían, permitiendo que Yasser y Maurice le den réplica sin parecer pedantes ni aburridos, evitando despliegues irritantes de posiciones.

Además de que los tres son grandes maestros, también se nota que Jennifer y Yasser son buenos divulgadores. Maurice, entre sus muchas habilidades, destaca también por ser un experto motivador, dando conferencias sobre ello, así que no es de extrañar el éxito de la retransmisión en un campo que puede ser considerado muchas cosas, pero que no destacaría por ser tildado de emocionante.

martes, septiembre 02, 2014

Instalación de pseudonube con OwnCloud

Ayer noche me entretuve en probar OwnCloud. Detallo los pasos para la instalación de OwnCloud en una máquina virtual con Centos 6.5.

Habilitar el repositorio de OwnCloud para Centos
# cd /etc/yum.repos.d/
# wget http://download.opensuse.org/repositories/isv:ownCloud:community/CentOS_CentOS-6/isv:ownCloud:community.repo
Instalamos los paquetes de OwnCloud y de mysql para la Base de datos
# yum -y install owncloud
# yum -y install mysql-server
Configuramos los demonios del servidor web y de la base de datos para que se inicien al arrancar el sistema, ademas de levantarlos ahora para continuar con la instalación
# chkconfig mysqld on
# chkconfig httpd on
# service httpd start
# service mysqld start
Accedemos al mysql para configurar la password de root y creamos la base de datos en el mysql para luego utilizarla en el software de instalación de OwnCloud 
# /usr/bin/mysqladmin -u root password 'password'
# mysql --user=root -p
> create database owncloud;
> CREATE USER 'owncloudusr'@'localhost' IDENTIFIED BY 'owncloudpwd';
> GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloudusr'@'localhost' ;
El último paso es acceder por por http a la url http://server/owncloud para terminar instalación. Aquí creamos un usuario con permisos de administrador y la conexión con la base de datos que hemos creado en el paso anterior.

Hay tres pasos adicionales que hacer que resumo de forma somera:
  1. Configurar el servidor web para que utilize https.
  2. Configurar router de casa para que haga un NAT hacia el servidor de nuestra red de casa donde está instalado el OwnCloud.
  3. Habilitar en un servicio de DNS Dinámico tipo no-ip o dyndns para acceder desde fuera de nuestra red de casa al servidor que tiene el OwnCloud.
Como mi objetivo era probar una solución de 'nube', OwnCloud me ha desilusionado un poco. Realmente no es una nube como tal, OwnCloud proporciona una aplicación que instalado en sistema tipo AWS o OVH, disponer de nuestros archivos en la red al modo que lo hace DropBox. Quien proporciona la infraestructura de la nube no es OwnCloud, sino el proveedor elegido por nosotros.

Pensaba más bien en un escenario en el que tengo un servidor en una oficina de Londres y levanto una instancia de un sistema de ficheros al que la gente de la oficina de Londres puede acceder (o remotamente). Pero luego levanto otra instancia, en Sidney, en la que instalo otra nube en un servidor de la mismo. A esta nube le digo que sus archivos están en la nube de Londres. De tal forma, que todo lo que haga en Londres, lo tengo en Sidney (la gente que trabaja en Sidney accede a la nube de la oficina de Sidney, pero si se cae Londres no lo nota y si se cae Sidney, puede acceder a la nube de Londres).

Y a la inversa para la nube de Londres, si hay algún cambio en la nube de Sidney, tienen que recogerlo en Londres. De tal forma, que hay una única nube soportada por la infraestructura de los servidores de cada oficina. A esta nube puedes enganchar otros oficinas. Es un equipo redundado, todas las oficinas son 'masters' y los archivos están a la misma vez en todos los sitios. En apariencia no hay nube en Londres ni en Sidney. Hay una única nube, aunque físicamente hay dos nubes con el mismo contenido replicado en cada una.

Pero eso es lo que creía que ofrecía OwnCloud. Una vez que he visto la documentación, corrijo mi error. OwnCloud en ningún momento dicen que vaya a hacer nada de eso. Desde luego, hace muy bien su trabajo y la interfaz web para el manejo de archivos (muy parecida a DropBox) es buena. Los clientes para escritorio y dispositivos móviles no los he probado, pero supongo que lo harán igualmente bien. En todo caso, lo repito, mis espectativas no coinciden con lo que OwnCloud ofrece.