Thursday, March 22, 2007

DELL SERVER a la LINUX con un twist de RAID







Tengo un SERVER DELL SC1430 con dos disco duros SATA SEAGATE de 10,000 rpm y con un controlador de disco SAS 5IR con un chip LSILogic SAS1068-IR (el procesador es XEON pero eso no importa para fines de este post).

Necesitaba instalar Linux en este servidor, y no quería gastar REDHAT Enterprise, porque no se puede instalar un sistema básico o base, sino que siempre tienen que incluir muchas cosas por default y desactivar todo lo extra que no se desea, además me parece que es demasiado caro para lo que ofrecen.

Me estaba enamorando de Debian como sistema operativo, por su estabilidad, seguridad y flexibilidad a la hora de instalar. Así que empecé con la instalación de Debian (sarge) y de primaras no me detecto los SATA, así que tenia que buscar una distribución de Linux donde el instalador detectara los disco SATA, pero con las mismas características de Debian. Esto claro si me quería ahorrar el trabajo de crear mi propio disco instalador. De la nada recordé Ubuntu que es una distribución basada en Debian que posiblemente esta más actualizada que Dedian. Además tienen dos versiones la Ubuntu Desktop Edition y Ubuntu Server Edition, lo que me permite de primeras instalar lo que yo deseo: un servidor con sistema base.

Una vez seleccionado el sistema se prosiguió a la instalación. Primero se probo con la 6.06 LTS (Long Term Support) el cual brinda soporte de actualizaciones hasta el 2011. Se llego al punto de la partición, se detectan los dos discos SATA SCSI pero al momento de crear el raid, Ubuntu no lo reconoce. Después de investigar y tratar de crear el RAID con un Live CD de Ubuntu Desktop basado en este tutorial y este y este otro, mas o menos tienen la idea. El asunto esta en que trate y trate de varias formas, incluso considere compilar otra vez el kernel con los drivers de la tarjeta de RAID. Después probé con la Alternate Edition de Ubuntu que permite hacer unas cositas extras y finalmente probé con la versión 6.10, mismo resultado, peor a aun no mostraba la opción de crear el RAID, como en la versión 6.06.

Por unos momentos tire la tolla con Ubuntu y yo solo quería que el RAID funcionara, incluso trate de utilizar el CD que viene con el servidor: Dell OpenManage Server Assistant, el cual crea el RAID(por medio de software), pero solo permite continuar con la instalación si se tiene sistema operativo de tipo Enterprise de RedHat, SUSE o Microsoft. También trate de reiniciar cuando me pedía el CD del sistema operativo y continuar con Ubuntu pero se “congelaba” de mostrar la pantalla de partición. También probe con Fedora Core 6, ese era peor no permitía crear los RAIDS desde la instalación.


Después de dos días de estar batallando con esta instalación, revise todos los links por lo que había pasado y encontré un email de una Mailling List donde una habían podido instalar Ubuntu en el mismo modelo de servidor que el que yo tenia. Así que le escribí a ella porque a mi no me funcionaba con el 6.10 y a ella si le funciono así que quería saber como hizo.

Antes de que ella me respondiera me di cuenta de algo, que cuando se listaban los dos discos duros presentes en el servidor, se podía presionar ctrl+c y entra a la utilidad de la tarjeta de RAID (o SAS Configuration Utility). Así que entre navegue pro las opciones hasta encontrar una parte donde se podia crear el RAID!!!!!! Allí me di cuenta de mi grave error, asumir que el RAID ya estaba creado, o que se creaba a la hora de instalar el sistema operativo. Eso puede ser verdadero para RAIDs baratos pero este era una tarjeta PCI de RAID “Profesional”. Aquí es donde se puede ver la diferencia entre una caja comprada como servidor en contraste con una PC con características de servidor, como podrán ver en este articulo que hace esa comparación entre hardware de PC y Server.

Entonces proseguí a crear el RAID utilizando el SAS Configuration Utility. Al crearlo y reiniciar el servidor se puede observar que en vez de listarse dos discos duros SATA SEAGATE, se lista un solo disco duro: DELL Virtual Disk. Aquí la tarjeta PCI se encarga de todo y no el sistema operativo, si falla un disco duro tenemos el otro. Lo que segué es instalar Ubuntu, donde como lo especifica la persona de este email, no funcionara con la versión 6.06 LTS. En efecto no funciono se queda congelado en la parte de partición de discos, se puede presionar ctrl+c pero reinicia el wizard de partición de discos. En cambio con el la versión 6.10, el instalador detecta el disco SCSI DELL VIRTUAL DISK y podemos continuar con la instalación (y mas importante finalizarla).

Después de cómo 7 discos quemados y dos días lidiando con el mismo problema, que se puede concluir? Pues además de aprender a leer manuales (RTFM), documentación, etc. sigan las siguientes recomendaciones cuando se trata de Linux y servidores DELL:

• Nunca utilizar el cd de DELL para instalación de servidores(Dell OpenManage Server Assistant)
• El momento del bootear el servidor, crear los arreglos con la utilidad de RAID y no utilizar nada de dmraid o mdadm para crear fakeraids.
• Una vez creado, se puede iniciar con la instalación de Linux.

Monday, March 19, 2007

Pirates of the Caribbean: At World's End

Hoy se podra ver el trailer del fin de la trilogia de Piratas del caribe. Me parece que esta trilogia puede llegar a ser de las mejores, espero que no defrauden con la ultima instancia. Quise experimetar poner un video en mi blog asi que aqui les va:


Tuesday, March 13, 2007

Bitácoras (o Logging)

Actualmente es raro encontrar una aplicación o sistema que una vez terminado no deba ser corregido. La razón de esto es por la forma como analizamos, diseñamos, desarrollamos y probamos nuestras aplicaciones. Se debe ser realista sobre algo: en la actualidad se desarrolla mal software y así se siguiera mientras sigamos programando antes de elaborar un profundo análisis y diseño.. Mientras tanto, podemos seguir parchando y desarrollando nuevas versiones con lo único novedoso son correcciones de un error.

Instalamos nuestra aplicación en producción y al mes nuestro usuario nos comenta de un error raro y que no podemos replicar. De vez en cuando aparece este error y puede ser tan crítico al grado que se procesan las transacciones de forma incorrecta. Pero no podes replicarlo y no tenemos tiempo para estar pendientes de ese usuario. En este caso y en los otros casos donde deseamos un registro de todo lo que pasa con nuestra aplicación, es donde el logging en la capa de aplicación es muy útil.

Tener la capacidad de generar una bitácora de todas las excepciones ocurridas, mensajes de error, eventos, etc. generados en nuestras aplicaciones nos hace la vida más fácil. Además, tenemos la habilidad de registrar eventos relaciones con seguridad y así poder determinar si nuestra ampliación esta siendo atacada. Recordemos que esto aplica a aplicaciones Web o Windows.

Para java y C# existe unas herramientas que le permite al programador almacenar los registros de bitácora que deseamos almacenar sin mucho esfuerzo. Estas herramientas son Log4j (para java) y Log4net (para C# .NET). Además de brindar las clases que facilitan el registro de los eventos, también os permite cambar la configuración a partir de un archivo sin necesidad de recompilar el programa. Pueden encontrar un artículo de Security Focus interesante sobre como utilizarlo como bitácora de seguridad. También pueden ver ejemplos en las páginas respectivas de cada proyecto (los cuales pertenecen a Apache). Existe este otro artículo donde pueden hacer su primer “Hola, mundo con log4net”. Pero al final pueden encontrar los que necesitan en las páginas de cada herramienta y también buscan en su buscador favorito.

Si están metidos muy de lleno con la plataforma .NET y desean utilizar otro framework puede utilizar el Logging Aplication Block de las Patterns and Practices de Microsoft. Estas páginas le brindan las mejores prácticas para el desarrollo de software de alta calidad. Además brindan algunos bloques que adicionan funcionalidad al framework .NET.

Independientemente de que framework o metodología de registro de bitácoras utilicemos, es importante que lo hagamos no solo en nuestras aplicaciones, sino en todos nuestros servidores, puntos de autenticación, base de datos, etc. Y porque molestarse tanto? Bueno la información es poder y entre mas información tenemos mejores decisiones podemos tener. Además, creo que es un poco penoso que nosotros no sepamos que esta pasando, cuando somos los creadores o implementadotes de los sistemas.

Tuesday, March 06, 2007

Experimentando con Debian

Febrero fue un mes demasiado corto y ocupado asi que este era el post de Febrero :P

Después de un par de años trabajando con RedHat y Fedora decide aventurarme a trabajar seriamente con otra distribución: Debian. Debían no es una distribución que se debe dar a los que inician con Linux, a diferencia de Mandriva y Fedora, este no trae todos esos bonitos wizards gráficos para instalar el sistema operativo.

La versión Actual de Debían cuando se escribió este post es la 3.1 (o Sarge). Que se dice que es más fácil de instalar que las anteriores. Una ventaja evidente de Debian sobre las otras distribuciones es la cantidad de paquetes de software que puede ser instaladas con apt-get (su rival en otras distros es yum). Existen mucho más paquetes para Debian que para las otras distros. Se recomienda utilizar estos instaladores porque asi se puede desinstalar e instalar programas con mas facilidad y mas limpio que hacerlo manual. Aunque a mi parecer, compilar los sources a veces es la mejor opción, cuando se quiere full control sobre la instalación y se desea saber que esta pasando de verdad.

Otra ventajas de Debian es su estabilidad, seguridad, y en si la filosofía detrás, porque todo es basado en políticas muy bien pensadas y detallistas. A tal grado que un paquete no tiene un manual es considerado un bug.

Yo no soy un experto en pero basado en experiencia e investigación encontré estas ventajas. Si necesitan ser convencidos de porque Linux y mas un porque utilizar Debian, vean este articulo, esta interesante los puntos de vistas y argumentos.

Lo que me encanta de debian es que nos permite instalar un sistema operativo base, inecesarios para que el Debian ejecute correctamente. Las dos veces que lo instalado este viene con el kernel 2.4, por lo tanto seria bueno utilizar apt-get para instalar el nuevo kernel. Con el siguente comando:

$ apt-get install kernel-image | grep 2.6 podrán ver todas las versiones disponibles del kernel (tomando en consideración también le procesador de nuestra computadora).

Si deseamos trabajar con nuestro sistema, podra ser que necesitemos instalar aplicativos que necesitamos compilar por ciertas configuraciones que deseamos. Por lo tanto se debe instalar el make, gcc y otras librerías.

Si recibimos los siguientes errores entonces se deben instalar con nuestro manejador de paquetes favorito (en este caso core que es apt-get :D). Esta es una muestra de los erroes que se puede recibir;

Make not found, do
apt-get install make

If you get the error: gcc not found, do
apt-get install gcc

If you get the error "C compiler cannot create executables."
apt-get install libc-dev

Por cierto, ni el traceroute esta instalado (para instalarlo utilizar: $apt-get install traceroute ).

Para empezar con Debian, creo solo se debe bajar la imagen básica llamada netinst, donde pueden ver de que se trata haciendo clic aquí. De allí todos los paquetes los pueden bajar de Internet utilizando el apt-get. El uso del apt-get es básico, pero si tiene problemas pueden acudir a este HOW-TO. El apt-get depende muchas veces de los repositorios que se indiquen. Pueden estar localizados en Internet o en un CD o DVD. Para mas detalle puede avocarse a este link y creo que es suficiente para experimentar…