jueves, 22 de enero de 2009

Comprimiendo ficheros

No es raro oir a un usuario quejarse porque se le bloquea el programa de correo. Cuando llegas ahi, tiene un adjunto de chorrocientos megas en la bandeja de salida o están recibiendo otro regalito por el estilo. El usuario "tipo" no hace un uso adecuado de herramientas de compresión, mientras que el que si lo hace emplea herramientas, por lo general, de pago. No comprendo muy bien por qué, existiendo herramientas como 7 zip:
  • Permite comprimir en diferentes formatos:
  • Permite leer de estos formatos:
  • Permite partir el fichero comprimido en varias partes.
  • Permite establecer contraseña sobre el fichero comprimido.
  • Permite crear archivos .EXE autoextraibles, por si el receptor no tiene el 7 zip.
  • Se integra en el explorador de Windows:
  • Lo mejor, permite el uso desde línea de comandos, ideal para programar tareas de copias de seguridad.
Aunque sólo se anuncie para Windows, existe un port para Linux: . El problema es que carece de frontend, así que mejor que los usuarios de Linux se instalen la versión de Windows usando Wine.

Y dependiendo de la máquina, variará su velocidad:

El uso de CPU mostrado debe ser porque lo ejecuto bajo Linux ;-)

Refrán informático


"Si funciona, no lo toques."

Anónimo con experiencia

sábado, 17 de enero de 2009

Virtualizando con VMWare Server

Poco que contar de esta maravillosa herramienta (que llevo años usando) que no se haya escrito ya. Precisamente ahora, en estos tiempos de crisis en los que el reaprovechamiento de hardware resulta esencial, aprovecho para explicar cómo me va esto de tener varios ordenadores (Guests) dentro de uno solo (Host) usando esta herramienta y qué usos son los que yo he aplicado en mi día a día.

Básicamente, trabajo a diario con estas máquinas virtuales (Guests) y usando estas aplicaciones, todo bajo Hosts de marca con VMWare Server 1.0x:

  • Windows 2003 Server + MS Exchange Server 2003 (menos de 60 usuarios)
  • Windows 2003 Server + MS Sharepoint 2K7 .
  • Windows 2003 Server + MS SQL Server 2005 (BBDD de Sharepoint, menos de 8 Gb).
  • Windows 2003 Server como controlador secundario de Active Directory (ojo, el primario no recomiendan virtualizarle).
  • Varios Windows 2003 Server + IIS.
  • Varios Windows 2003 Server + IIS en clúster.
  • Windows 2003 Server + IIS + Apache + SQL Server Express + MySQL.
  • Windows 2000 Server + IIS + SQL Server 2000.
  • Varios Windows 2000 Server para aplicaciones bajo Terminal Server (menos de 15 usuarios por máquina, hasta 20 aplicaciones distintas).
  • Varios Windows XP para uso de usuario final usando RDP.

Desde el punto de vista del mantenimiento y sostenibilidad del sistema, esta muy bien contar con las ventajas que puede ofrecer VMWare Server:

  • El uso de máquinas virtuales te independiza del hardware usado, pues pasar de un servidor a otro se limita a instalar VMWare Server en el nuevo servidor, copiar los ficheros de los Guests y configurarlos dentro de VMWare Server.
  • Se puede instalar en varios sistemas operativos (Windows, Linux, Solaris, ...). Por si el día de mañana toca cambiar...
  • Es posible mantener Hosts fríos sin coste económico del software. Si el equipo no está encendido...
  • Es maravilloso para hacer pruebas y experimentos con los servidores (usando los de backup, claro).
  • Tiene multitud de Appliances gratuitas disponibles (Guests con aplicaciones preconfiguradas y listas para funcionar), lo que se merece un artículo por si solo.
  • Es asombrosamente estable si el host está bien configurado y cuenta con el hardware apropiado.
No todo es perfecto, al ser una versión gratuita tiene sus limitaciones pero puede ser suficiente para la mayoría:
  • Admite Guests de un máximo de 3.6 Gb de RAM (v1.0x) y 8 Gb (v2.0)
  • Admite Guests de un máximo de 2 procesadores virtuales.
  • No hace magia: Si los Guests hacen uso intensivo de disco, mantenlos en discos duros separados o irá muy despacio. Tampoco puedes montar el proxy de la red de la empresa en un clónico con una sola tarjeta de red a 10 Mb/s, ni ejecutar tu servidor desde el pendrive USB..

A través de mi experiencia, me aventuro a dar estas recomendaciones para los Hosts:

  • La más importante: Compra hardware de marca, con componentes de calidad, porque la fiabilidad tiene que estar garantizada. Haz contrato de mantenimiento con la casa.
  • Procura usar RAID por hardware:0, 1, 0+1 o 1+0, dependiendo de lo que necesites. No uses RAID 5, porque se escribe más despacio en disco respecto a las lecturas y penaliza a las máquinas.
  • Compra toda la RAM que vayas a necesitar, no seas roñoso.
  • Configura VMWare Server para que reserve RAM en exclusiva para cada máquina y no haga SWAP en disco.
  • Procura usar el Host en exclusiva para los Guests.
  • Haz backups periódicos de los Guests y/o mantén copias frías (apagadas) en otros servidores.

Y estas son recomendaciones para los Guests:

  • Instala las VMWare Tools. Siempre.
  • Sólo si el suministro eléctrico está asegurado (SAI) y el hardware es apropiado, se pueden deshabilitar los volcados de RAM a disco en el fichero .VMX, con lo que la velocidad de la máquina aumentará muy significativamente al no trabajar con los ficheros .VMEM. Si tienes un Guestcon >3 Gb de RAM, figúrate que uso de disco hace...
  • Procura no partir de una máquina procedente de P2V a no ser que no te quede más remedio. Si procuras instalarla de 0, con lo justo y necesario que vayas a usar, tendrás un mejor control del Guest y consumirá menos recursos.
  • Si se va a usar el disco del Guest intensivamente, créalo de un tamaño fijo desde el principio (allocate disk space now), si no se hace un uso intensivo o para máquinas de prueba, procura ahorrar espacio.
  • Procura asignar las direcciones IP por DHCP y MAC. Te ahorrará sustos y disgustos.
  • Ojo al copiar, clonar o mover los Guests: Necesitarás conservar los datos identificativos únicos del Guest o volver a generarlos.

Sistemas operativos que uso en servidor (Host):

  • Windows Server 2003 Enterprise: Fiabilidad total, meses sin reiniciar (mala praxis, lo sé...). La versión Enterprise es por aprovechar más de 4 Gb de RAM en el Host. Los Performance Counters de VMWare Server son indispensables para depurar problemas de interacción y/o configuración de los Guests.
  • Fedora 9: Para hacer lo mismo que el anterior, pero gratis. Fiabilidad total. El "pero" es que la instalación es más complicada y cada upgrade del kernel requiere recompilar la aplicación y rezar para que tire (o quedarse con una versión de kernel fija).
  • Windows XP Professional: Tan estable como sea el Windows XP... Sólo recomendable para pruebas o máquinas no críticas. Los problemas no los dará VMWare Server ;-)

Por cierto, respuestas a ciertas preguntas que quedaban en el aire....:

  • ¿Qué aprovechamiento Host/Guest tengo? Actualmente trabajo con unos 4 equipos (Guests) montados en cada servidor (Hosts con SCSI, RAID y doble procesador). Con el mismo coste final, me parece mejor usar un servidor de marca de 6000 Euros que 4 servidores clónicos de 1500 Euros. El ahorro energético también es significativo. Si los Guests consumen poca CPU y disco, se pueden montar más Guests en menos Hosts, pero si trabajan intensivamente cambia la película.
  • ¿Por qué uso la versión 1.0x y no la 2.0? Como dice el viejo dicho del informático: "Si funciona no lo toques...". Me han hablado bien de la v 2.0, pero siempre trabajo con a 1.
  • ¿Por qué VMWare Server y no VMWare Player, gratuito también? Muy sencillo, VMWare Server corre como servicio y no requiere intervención para los encendidos y apagados controlados de las máquinas virtuales cuando se apaga el host: VMWare Server no requiere que un usuario inicie una sesión y es más fácil para trabajar con él de cara a instalarlo en servidores o correr varios Guests.
  • ¿Por qué VMWare Server y no VMWare ESXi (gratuito)? Supongo que porque todavía no lo he probado. Tiene pinta de ser un auténtico cristo trabajar con esa versión. Si realmente necesitase aprovechar la virtualización al máximo, me iría a la versión de pago.
  • ¿Por qué VMWare y no otra plataforma de virtualización? Principalmente trabajo con Hosts/Guests WIndows y Linux y, hoy por hoy, es la mejor opción con diferencia.
  • ¿Cambiaría VMWare Server en un futuro por otro sistema? Estoy siguiendo de cerca las mejoras en Linux y paravirtualización, especialmente XEN. Si tuviese un Mac usaría Parallels sin duda. Pero me parece que los tiros van a ir por otro sitio: alquilar el Host en internet. Mi problema del día de mañana va a consistir en reducir los requisitos de los Guests al mínimo por costes y exprimir la paravirtualización en entornos multiguest.

Enlaces interesantes:

Tabla comparativa de plataformas de virtualización.

viernes, 16 de enero de 2009

Monitorizando equipos (I)

Una de las tareas que te encargan nada más llegar a un puesto de trabajo es la de documentar todos los equipos lo que tienen funcionando: servidores, estaciones de trabajo, modificaciones en los mismos, software instalado, etc... Para registrar todo esto existen multitud de herramientas de pago, pero soluciones gratuitas también., empezaré por las "pequeñas".

Una que siempre me gustó bajo Windows fue SYDI (Script Your Documentation Instantly): unos scripts (.vbs) que recogen información de Windows (muy buena y completa), SQL Server (le hacen falta unos retoques al script), MS Exchange (beta) y Linux (nunca la probé, pero parece "very buggy"). Como se ve, la única que me gusta es la de Windows: Con una línea de comandos (y los privilegios necesarios) puedes documentar un Active Directory con equipos que corran Windows 2000 o superior usando consultas LDAP para especificar los equipos.
Los informes por equipo se pueden generar como XML (para ver individualmente como HTML o parsear varios en Excel y compa) y en formato Word para presentar al jefe:


Tal vez a alguien le interese combinarlo con Silent Runners, otro script (.vbs) que detecta lo que se ejecuta al arrancar Windows y genera un fichero de texto con ello. Comparando 2 ficheros veremos las diferencias, mejor si usas WinMerge:



En modo gráfico también existe Autoruns de Sysinternals, otra de las "imprescindibles" a la hora de revisar lo que ejecuta un equipo:


lunes, 5 de enero de 2009

Monitorizando programitas... (II)

Otra de las herramientas indispensables para realizar el seguimiento de programas es el Process Monitor de Sysinternals (ahora absorbido por Microsoft). Este programa permite escuchar todo lo que se hace en el equipo, además de poder guardarlo o filtrarlo para posteriores búsquedas. Muy útil cuando un programa intenta acceder a algún sitio y no genera ningún error que te de la pista.


Ojo, la cantidad de información que se genera es brutal, recomiendo filtrar primero por Nombre de usuario y Nombre de ejecutable para no sobrecargarlo, aunque todo depende del uso que se le quiera dar.

sábado, 27 de diciembre de 2008

Monitorizando programitas... (I)

Frecuentemente hay problemas con aplicaciones que dependen de varios servidores, y hay que buscar los problemas en multitud de sitios:
  • Visores de eventos de Windows.
  • Ficheros de LOG generados por los programas.
  • Nuevos registros en tablas (SQL Server).
  • Tráfico UDP.
  • RSS.
  • StdOut y StdErr.
Pues esto se simplifica bastante usando la herramienta LogView4NET (de Sourceforge, claro). Esta pequeña aplicación (requiere .NET 2.0 instalado) permite crear una serie de "escuchas" donde nosotros le digamos, para luego poder grabar estas configuraciones en un fichero XML de configuración en el que se definen qué palabras o frases hay que resaltar y cuales hay que obviar.


El resultado es una pantalla de fondo negro en la que van apareciendo todos los eventos que necesitemos para la depuración del problema. Esto resulta muy útil para depurar tanto aplicaciones de factura propia como aplicaciones comerciales haciendo doble-clic al fichero de configuración para abrir la pantalla de monitorización.


Yo lo uso para monitorizar todos los visores de eventos de una red de servidores en tiempo real, con un fichero para los servidores de Active Directory, otro para los servidores de SQL Server, otro para los servidores de IIS, etc... de tal manera que en una sola pantalla puedo ver todo lo que está pasando en el conjunto de servidores.


LogView4NET es una herramienta muy útil para la depuración de aplicaciones desarrolladas en la propia empresa, pero hace falta que los desarrolladores colaboren dando los puntos de control a examinar... Todavía no he encontrado ningún software que me ayude a ello, aunque puede que recurriendo al hardware lo consiga:

martes, 16 de diciembre de 2008

Accesos directos DE VERDAD

Meses sin escribir, qué trabajo da esto de ser padre... primerizo.

En fin, volviendo al tema, otra de las pesadillas de CASI todos los usuarios que conozco es la apertura de programas, documentos, enlaces, etc. Tardan un huevo y la yema del otro en buscar el enlace y cada vez que les veo agradezco más haber descubierto el programa Launchy (de Sourceforge, claro).

El funcionamiento es muy sencillo: Lo bajas, lo instalas y, si quieres, escoges alguna carpeta más para indexar. El programa trabaja en segundo plano monitorizando lo que tengas ahi (configurable) y se mantiene a la espera hasta que pulsas ALT + Espacio (configurable) y te abre una ventana donde empiezas a escribir parte del nombre de lo que quieras abrir y él te irá mostrando las ocurrencias. Yo tengo indexados > 100 accesos directos por VNC a ordenadores en el trabajo, chorrocientas aplicaciones instaladas, un listado de Favoritos enorme, documentos, etc...

Cuanto más lo usas, mejor escribes lo que quieres buscar, por ejemplo: si para abrir Firefox ("Mozilla Firefox") yo tecleo "Mozilla", me muestra varias opciones y tengo que tecear mucho, pero con "fox+[INTRO]" entro directo.

En el aspecto gráfico, a quien no le guste como viene puede cambiarlo en deviantART:


Ojo, este programa se convierte en insustituible. Mi botón Inicio se ha oxidado... Si tardo más de 2 segundos en abrir LO QUE SEA me preocupo.

Para instalarlo en Fedora 9 ahy que realizar lo siguiente:
- Descargar la última versión.
- Instalar las dependencias ejecutando lo siguiente en una ventana de Terminal:
su -
[introducir contraseña de root]
yum install boost-devel qt-devel
- Preparar y lanzar la instalación desde donde se haya descomprimido la descarga:
make
make install