Archive of February 2009


Mon 16 Feb

4gb seg fixup

Un error muy habitual que podremos ver en los logs después de crear un domU es:

gb seg fixup, process sendmail (pid 6442), cs:ip 73:00e991f7

Donde en lugar de sendmail podremos ver cualquier otro proceso del sistema. Para solucionarlo:

echo 'hwcap 0 nosegneg' > /etc/ld.so.conf.d/libc6-xen.conf ldconfig reboot

0 Comments · Tags: , ,

Mysql - Rollover tables

A veces nos es necesario guardar gran cantidad de datos en una tabla mysql, pero no es necesario almacenarlos para siempre. Un ejemplo claro sería un sistema de logs almacenando en una BBDD en lugar del propio sistema de ficheros. Este sistema tiene grandes ventajas, pero también unas grandes desventajas en cuanto a rendimiento:

* El aumento desmesurado de la tabla y su penalización en el rendimiento. * Gasto innecesario del espacio disponible en el disco duro. * Si borramos entradas en la tabla para liberar espacio (por ejemplo las de hace 30 días, varios cientos de miles de entradas), la tabla se quedará bloqueada, el demonio no podrá escribir, los logs se encolarán, la tabla tendrá que ser optimizada cada poco tiempo… vamos, practicamente el fin del mundo.

Para solucionar este problema podemos hacer rollover de los logs he ir rotandolos. Para esto es necesario convertir la tabla en un "motor de almacenamiento". Esta técnica te permite combinar tablas con una misma estructura en una tabla más grande.

Ejemplo:

El ejemplo es para mantener los datos de 3 días, de forma que sea mas sencillo de explicar:

Se crearían las tablas log1, log2, log3 y se mergean. Las nuevas entradas se guardarán en log1. Cuango hagamos la rotación (por ejemplo una vez al día) log3 se dropeará, log2 se renombrará a log3 y log1 se renombrará a log2. Se crea una nueva tabla log1 y comienza de nuevo el proceso.

* Drop log3 * Renombrar log2 -> log3 & Renombrar log1 -> log2 * Crear tabla log1

¿Ventajas?

* Se pueden borrar más de un millón de entradas en menos de 0,2 segundos (aprox. xD) * No es necesario optimizar las tablas, ya que no se borran registros. * Más velocidad de busqueda. * Menos bloqueos.

¿Cómo se convierte la bbdd?

Primero un ejemplo sencillo para entenderlo, luego aplicable a la tabla log ;)

Creamos las dos tablas exactamente iguales y las mergeamos:

mysql> CREATE TABLE A (name varchar(100)) ENGINE=MyISAM; Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE B (name varchar(100)) ENGINE=MyISAM; Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE TOTAL (name varchar(100)) ENGINE=MERGE UNION=(A,B) INSERT_METHOD=LAST; Query OK, 0 rows affected (0.01 sec)

Añadimos datos a las dos tablas y hacemos un select del merge:

mysql> INSERT INTO A VALUES ('Miguel'); Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO B VALUES ('Angel'); Query OK, 1 row affected (0.00 sec)

mysql> select * from TOTAL; +--------+ | name | +--------+ | Miguel | | Angel | +--------+ 2 rows in set (0.00 sec)

Ya están, las dos tablas mergeadas. Ahora borramos la tabla A y la creamos de nuevo. De esta forma puedes borrar un millon de entrada de golpe, cargandote una tabla, en lugar de ir registro a registro colapsando el server y bloqueando la tabla:

mysql> drop table A; Query OK, 0 rows affected (0.00 sec)

mysql> flush tables; Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE A (name varchar(100)) ENGINE=MyISAM; Query OK, 0 rows affected (0.00 sec)

mysql> select * from TOTAL; +-------+ | name | +-------+ | Angel | +-------+ 1 row in set (0.00 sec)

Facil, sencillo y para toda la familia.


Sun 8 Feb

Mi nuevo escritorio Gnome

Lo que más me gusta de los escritorios y gestores de ventanas libres son sus infinitas posibilidades de configuración. Jugando un poco con la apariencia, es casi imposible encontrar dos escritorios iguales en el mundo, lo que lo hace algo más personal ;) Para mi la presentación del escritorio es uno de los aspectos que más cuido, ya que es donde tendré mi vista puesta gran parte del día. Imaginate estar mirando una pantalla llena de colores rosas, amarillos o verdes chillones, lo más probable es que te terminen sangrando los ojos. El marrón mierda de Ubuntu tampoco se salva xD

El pilar base a la hora de configurar mi escritorio es el fondo de pantalla. Debe ser simple, con dos o tres colores básicos y a poder ser apagados. Estos tres colores serán los que finalmente se apliquen a los bordes de la ventana, controles, iconos, sombras etc. De esa forma se logra un escritorio uniforme, donde todos los elementos se enlazan en cierta medida con el fondo de pantalla a través de sus colores compartidos.

Todo este rollo es para subir mi nuevo escritorio Gnome en ArchLinux (porfín con Ext4). Se aceptan críticas :P

[caption id="attachment_138" align="aligncenter" width="300" caption="Gnome + Archlinux Roolzz"]Gnome + Archlinux Roolzz[/caption]