23 de agosto de 2012

Cambiar resolución de la consola linux con Grub2

La resolución inicial configurada en debian6.0 de 800x600 es poco práctica ya en la consola el texto es muy grande y se ven muy pocos caracteres.

Para cambiar esto a una mayor resolución, digamos 1024x768, desde el arranque de linux modificaremos grub2 del siguiente modo:

1) Editar el fichero /etc/default/grub
     añadir las lineas:

     GRUB_GFXMODE=640x480
     GRUB_GFXPAYLOAD_LINUX=1024x768

que indican respectivamente la resolución del menu de inicio de grub y la resolución de la consola.

2) Actualizar el fichero de configuración grub2

     # update-grub

3) Reiniciar el sistema.

Si hay algún problema con la resolución y se queda la pantalla en negro, se puede acceder al menu de configuración en el arranque de grub2 con la letra "e", cambiar los comandos de arranque, poner al final de la linea del kernel "vga=640x480" que seguro que funciona, arrancar con 'control-x' y arreglar los ficheros de configuración de grub2 que no funcionen.

Para ver las resoluciones soportadas al arranque de grub2 teclear "c" para acceder a la consola y con el comando "vbeinfo" nos indicará todas las resoluciones que soporta nuestra tarjeta gráfica.

Ref.: http://wiki.sabayon.org/index.php?title=HOWTO:_Using_Custom_Framebuffer_Resolution_with_GRUB2

9 de agosto de 2012

Reparar tablas rotas MyISAM en MySQL

MySQLUno de los problemas que aparecen de forma recurrente aunque no con de forma habitual son en las bases de datos MySQL son las tablas rotas. Se suelen producir cuando las tablas no se han cerrado correctamente y lo típico es cuando se apaga el ordenador en caliente, con MySQL metiendo o consultando datos.

Las tablas marcadas como crashed deben repararse lo cual, si las tablas son extensas, lleva su tiempo.

Para tablas MyISAM tenemos dos comandos:

msqlcheck: comprueba tablas con en servidor MySQL en funcionamiento.
myisamchk: comprueba tablas con en servidor MySQL parado.

Si el problema es serio usar myisamchk que es mas potente. Parar el servidor MySQL y reparar el problema.


Las bases de datos MySQL se encuentran en el directorio /var/lib/mysql/

Dentro de este directorio hay subdirectorios con el nombre de cada base de datos que contienen los ficheros correspondientes a cada tabla.

Comandos:

  • myisamchk --check               /var/lib/mysql/mybasededatos/*.MYI
  • myisamchk --silent --fast      /var/lib/mysql/mybasededatos/*.MYI
  • myisamchk –recover -q        /var/lib/mysql/mybasededatos/*.MYI
  • myisamchk –recover            /var/lib/mysql/mybasededatos/*.MYI
  • myisamchk –safe-recover    /var/lib/mysql/mybasededatos/*.MYI
  • myisamchk –o                      /var/lib/mysql/mybasededatos/*.MYI


Protocolo:

0) Parar el servidor MySQL:
         # service mysql stop

1) Chequear integridad de todas las tablas de todas las bases de datos MySQL:
     Rápida: solo chequea las que están marcadas como rotas:

         myisamchk --silent --fast /var/lib/mysql/*/*.MYI

     Este comando esta bien para detectar de forma rápida si hay tablas marcadas como crased.
2) Reparando las tablas rotas:
     Como son procesos que duran mucho tiempo es recomendable probar primero la reparación rápida.

     Reparación rápida: solo intenta reparar el arbol del índice:

         # myisamchk -r -q tabla.MYI

     Reparacion estandard:
         # myisamchk -r tabla.MYI

     Reparación safe-recover, no esta en el manual? 
         # myisamchk -r --safe-recover tabla.MYI


3) Optimizar las tablas de una base de datos

         # myisamchk -o tabla.MYI                            una tabla
         # myisamchk -o -B basededatos                  todas las tablas de las bases indicadas
         # myisamchk -o /var/lib/mysql/*/*.MYI          optimizar todo


También he visto este comando que no he usado:
# myisamchk --silent --force --update-state -O key_buffer=64M -O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M *.MYI

Ref.:

8.6. El programa mysqlcheck para mantener y reparar tablas


7 de agosto de 2012

Nueva presentación de las búsquedas de documentos pdf en www.pedeefes.com

www.pedeefes.com
La presentación de documentos del indexador y buscador de documentos pdf  - www.pedeefes.com se ha renovado, siendo más directo y ágil.

Se ha simplificado la cantidad de información para cada documento obtenido de la búsqueda y se ha diseñando una presentación tipo librería que permite una navegación más rápida por los documentos.


 ...


Cada documento encontrado en la búsqueda presenta la siguiente información:
  • Un preview de la primerá página del documento .pdf.
  • Cada imagen de los documentos es un link directo al documento que nos permite ver o descargar el documento .pdf completo.
  • Un link a la web donde se aloja el documento, lo que nos permite ver su origen.
  • El Tag del link al docuemento  .pdf.
  • El número de Páginas del documento .pdf.
  • El tamaño en Kb. del documento.

Con esta información podemos navegar agílmente por los documentos y hacernos una idea aproximada de si es el documento que estamos buscado, abrirlo en una nueva ventana del navegador  haciendo click en el preview y descargarlo en caso que nos interese.

Una buena idea es descargar desde www.pedeefes.com los documentos pdf a nuestro ebook y leerlos offline cuando tengamos un poco de tiempo libre.

RAID-1 por software en debian con dos memorias USB

Para mejorar la velocidad de las bases de datos un aspecto crítico es la velocidad de acceso al disco duro.

Con hdparm podemos comprobar la velocidad de acceso y optimizar la configuración del disco duro para reducir el tiempo de acceso.

Los sistemas RAID  es lo mas adecuado para mejorar el acceso y seguridad de los datos. He configurado dos memorias USB En las bases de datos un tema crítico para mejorar la velocidad de busqueda es el tiempo de acceso al disco duro. Para comprobar los tiempos de acceso podemos usar la herramienta hdparm.

Probado con dos memorias USB de 32GB en mi servidor micra, con debian 6.0

Protocolo para montar un sistema RAID1 con dos memorias USB:

1) Creo particiones iguales formateadas en ext3 en los usb.

2) Monto los usb en micra en /mnt/usb1 y /mnt/usb2

3) Mido las velocidades de acceso de cada usb por separado:
                # hdparm -tT /dev/sdb1    (177.29 MB/sec ; 15.41 MB/sec)
                # hdparm -tT /dev/sdc1    (178.13 MB/sec ; 15.45 MB/sec)

4) Instalo mdadm. Lo configuro para que no inicie ningún raid al arranque.
               # aptitude install mdadm

5) Desmontamos los discos USB para que nos deje crear el RAID
               # umount /dev/sdb1
               # umount /dev/sdc1

6) Creamos el disco RAID-1 con los dos USB:
               # mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

7) Formateamos el nuevo disco RAID:
               # mkfs.ext3 /dev/md0

8) Montamos el dispositivo RAID:
               # mount /dev/md0 /mnt/raid1

.. y ya esta.

Veamos la velocidad de acceso:

          # hdparm -T /dev/sdb /dev/sdc /dev/md0
          /dev/sdb:  Timing cached reads:   350 MB in  2.01 seconds = 174.41 MB/sec
          /dev/sdc:  Timing cached reads:   350 MB in  2.00 seconds = 174.61 MB/sec
          /dev/md0:  Timing cached reads:   338 MB in  2.01 seconds = 168.46 MB/sec

                                         ¡¡¡ Pues no hemos mejorado nada !!! ???

Revisando /proc/mdadm veo que todavia no ha terminado la sincronización de los dispositivos:
                # cat /proc/mdadm
                Personalities : [raid1] 
                md0 : active raid1 sdb1[1] sdc1[0]
                30468024 blocks super 1.2 [2/2] [UU]
                [======.......]  resync = 30.2% (9201920/30468024) finish=42.4min speed=8346K/sec
                unused devices:

La sincronización tarda mucho!!!! ya que tiene que recomponer el raid.
Esto lo hace cada vez que se activa el RAID o se cambia un disco.


PROBANDO LA BDD EN EL RAID1:
Paso la base de datos indexpdf02 al raid1 y redirecciono el directorio en /var/lib/mysql/ a directorio copiado en /mnt/raid1 de modo que las consultas las realizará en el disco raid1.
---------------------------------------------------------------------------------------------------------------
Consulta "google" en el HD160GB, tarda 66.60 sec y recupera 4070 documentos.
         Reinicio mysq
Consulta "google" en el RAID1, tarda 86,13 sec y recupera 4070 documentos.
---------------------------------------------------------------------------------------------------------------
Consulta "server" en el HD160GB, tarda 87,36 sec y recupera 7075 documentos.
         Reinicio mysq
Consulta "server" en el RAID1, tarda 222,19 sec y recupera 7075 documentos.
---------------------------------------------------------------------------------------------------------------

Confirmado,esto NO mejora la velocidad de lectura y con los USB.
Puede que sea porque todavia no estan sicronizados los datos de los USB???

... efectivamente hay que dejar que se sincronicen los discos que componen el RAID.


PROBANDO LA BDD EN EL RAID1  after resync:
---------------------------------------------------------------------------------------------------------------
Consulta "google" en el HD160GB, tarda 31.98 sec y recupera 4070 documentos.
         Redirecciono la bdd y reinicio mysq
Consulta "google" en el RAID1, tarda 11.05 sec y recupera 4070 documentos.
---------------------------------------------------------------------------------------------------------------
Consulta "raid server" en el HD160GB, tarda 98.61 sec y recupera 244 documentos.
         Redirecciono la bdd y reinicio mysq
Consulta "raid server" en el RAID1, tarda 89.93 sec y recupera 244 documentos.
---------------------------------------------------------------------------------------------------------------
Consulta "google server" en el HD160GB, tarda 451.33 sec y recupera 510 documentos.
         Redirecciono la bdd y reinicio mysq
Consulta "google server" en el RAID1, tarda 447.35 sec y recupera 510 documentos.
---------------------------------------------------------------------------------------------------------------

Copiando, salvando y Redireccionando la bdd:
Copio la BDD al RAID, la remobro para tener una copia de seguridad y redirecciono mysql a la bdd en el raid.

from HD160GB to RAID:
mv indexpdf02 zz-indexpdf02
ln -s /mnt/raid1/indexpdf02/ indexpdf02
service mysql restart

from RAID to HD160GB:
rm indexpdf02
mv zz-indexpdf02/ indexpdf02/
service mysql restart

De este modo puedo comprobar el rendimiento en el disco duro y en sistema raid de los USB.

Ver: http://misnotaslinux.blogspot.com.es/2010/01/bases-de-datos-mysql-distribuidas-en.html


Conclusiones:

- La configuración de un RAID por software en debian es muy sencilla.

- El limitante que he encontrado en este RAID por software ha sido el bus de comunicación de datos de los USB que al ser común constituye el cuello de botella de la transferencia de datos.

- El tiempo para rehacer el RAID es considerable. De modo que no hay que conectar y desconectar los USB o montar y desmontar el RAID ya que cada vez que lo hagamos tiene que rehacerse y esto lleva su tiempo.

- Pese a todo si he visto una mejora en el tiempo de acceso a los datos, de modo que puede ser una alternativa de apoyo en sistemas con escasos recursos y aliviar algo la carga a discos duros.


Ref.:

http://www.linuxhispano.net/2011/02/09/calcular-la-velocidad-del-disco-en-linux/
http://lamaquinadiferencial.wordpress.com/2009/02/22/raid-1-por-software-en-ubuntu-debian-discos-en-espejo/
http://www.sahw.com/wp/archivos/2007/03/04/como-montar-en-diez-comodos-pasos-un-raid-para-debian-gnulinux/
http://www.megalinux.com.ar/articulos:raid