lunes, 29 de septiembre de 2014

Supervisor (watchdog) simple para monitorear un servicio apache.

Con este watchdog simple podemos reiniciar el servicio apache si fuese necesario, de igual forma podemos si fuese necesario realizar acciones como notificar a un usuario o algo por el estilo, pero en este ejemplo reiniciaremos apache.

martes, 5 de agosto de 2014

Instantáneas (snaphots) de Volúmenes LVM uso y recuperación.

En este articulo abarcaremos el uso de los snapshots o instantáneas de volúmenes LVM y su uso.
Un snapshot se podría definir simplemente como una fotografía en un momento determinado de un volumen LVM (en este caso) esto crea una copia de todo el contenido del volumen y nos permite manipularlo sin que esto afecte la data original.

lunes, 4 de agosto de 2014

Migrar equipo Físico (Windows) a #Xen #OpenSource + #LVM

Importante

Que cubre este articulo:

  • Instrucciones básicas en Windows para preparar su migración a un equipo virtual xen.
  • Uso de herramientas de particionado como GParted para re-definir particiones (De ser necesario)
  • Puesta a punto del S.O. migrado.
    • Opcional instalación de Drivers GLPV para el SO.
    • Opcional Reducción del tamaño del disco del Sistema Operativo Windows

lunes, 25 de noviembre de 2013

Hilos #concurrentes en #perl

En esta oportunidad hablaré de como ejecutar rutinas de forma concurrente.

No pretendo abarcar demasiado explicando que es esto. Una explicación detallada puede ser conseguida en: http://es.wikipedia.org/wiki/Hilo_en_sistemas_operativos, por acá solo me limitaré a decir que es una manera de ejecutar rutinas en perl con la cual se aprovechan las bondades de multinucleo de los procesadores, permitiendo ejecutar una rutina varias veces de forma paralela.

miércoles, 11 de septiembre de 2013

Listar directorios por tamaño desde el terminal #Tips #Trucos

Un truco para saber que directorio tiene mayor tamaño es el siguiente:
du /home/user -lh --max-depth=1 | sort -rh | head
Esto nos dará en orden descendiente los 10 directorios de mayor tamaño. (ojo cuidado porque el primero en listarse siempre será el indicado /home/user)

miércoles, 12 de junio de 2013

Buscar y eliminar paquetes huérfanos GNU/Linux #Debian #Tips

Manteniendo a tono nuestro sistema.

Dependiendo de la frecuencia con la que se instalan paquetes, se hacen pruebas e incluso se mezclan herramientas para instalar paquetes, nos podemos encontrar en un escenario donde terminamos con varios paquetes huérfanos, un ejemplo claro es durante una usuario que utiliza Synaptics para instalar paquetes, aptitude en un terminal y apt-get

lunes, 25 de febrero de 2013

Generar una tabla con números aleatorios #Postgresql

Generar una tabla con números aleatorios #Postgresql

Para generar una tabla con números aleatorios Postgresql, se puede hacer lo siguiente:

select id,random()*10000 as venta 
from (
    select * from generate_series(1,100) as id
) as x

jueves, 21 de febrero de 2013

Recuperar LVM sin Backup

Lo primero es hacer un auto-te lo dije, esto porque siempre he tenido pendiente que se debe respaldar la configuración del (los) volúmenes lógicos, pero usando como excusa una cosa y otra no lo hice; para hacer el cuento corto, me pasó.

Tenía un equipo Virtualizador con un raid1 y sobre este raid un LVM, uno de los discos comenzó a fallar pero como estaban en raid, estaba tranquilo, así que me dispuse a detener el disco y en ese momento todo fue cuesta a bajo, pues bien, cuando detuve el disco para sacarlo, el equipo se congeló (probablemente el disco estaba en corto, la verdad no lo sé)

Procedí a sacar el disco y reiniciar y mi sorpresa es que el equipo virtualizador no iniciaba, no me preocupé aún este punto, solo metí mi CD de debian, arranque en modo experto monte el raid, y un grub-install resolvió.

Reinicié el equipo y todo normal, a excepción de que una de las maquinas virtuales no arrancaba, por lo que me metí por vnc para ver que sucedía (en este punto es válido informar que a mi maquinas virtuales no les creo los discos usando archivos sino les entrego volúmenes LVM) mi sorpresa es que me dice que no encuentra los volúmenes lógicos para arrancar.

Respiro profundo y en la consola de initramfs hago un:

lvm
pvscan

Y me dice que encuentra el volumen pero que la metadata es inválida me comencé a preocupar.

Hago:

vgscan

Y me dice que no hay volúmenes lógicos definidos. Oficialmente preocupado.

Ya con esto comienzo a buscar en Internet y no encontré al menos de momento nada que me ayudara directamente. Salvo que personas con casos similares a los míos resolvieron volcando los primeros bits de la partición y de aquí sacaron el archivo de backup de lvm

Eso no funcionó para mi, pero si me orientó en el camino, ya que en esa página se asegura que el archivo de configuración se guarda al principio d ela partición, pero pensé que no necesariamente era mi caso, dado a que la partición la entrego desde el virtualizador en LVM y el a su vez esta partición la trabaja y la convierte a LVM. Tal véz el Journaling del virtualizador hizo su trabajo (solo especulo).

Así que hice lo siguiente:

  1. Cree un nuevo volúmen lógico en el virtualizador un tanto más grande que el volumen que deseaba restaurar y le dí formato ext2
  2. Le entregué este nuevo "disco" a la maquina virtual.
  3. Inicie la maquina virtual y esperé que saliera el initramfs
  4. Monte la partición en /target
  5. Hice un volcado completo del disco (en mi caso /dev/sda5 donde estaba creado el volumen en la maquina virtual) a un archivo (lo llame salida) en mi nuevo disco:

    dd if=/dev/sda5 of=salida.txt

  6. Apagué la maquina virtual y monté el disco en el virtualizador.

  7. Busqué en el archivo "salida.txt" la cadena "logical_volumes" y me hice una idea en que parte estaba las líneas que necesitaba (realmente en este punto fue suerte porque nunca había modificado el sistema de archivos y solo había una copia)

    grep -a -n -i logical_volumes salida.txt

  8. Con sed estraje ±100 líneas.

    sed -n -e '201200,201300p' -e '201300q' > tmp.txt

  9. En el nuevo archivo, con vim busque la cadena "#Generated" y al encontrarlo encontré la configuración, esta la pegue en un nuevo archivo llamado backup.conf

  10. Desmonté mi disco en el virtualizador e inicie la maquina virtual hasta que cayera de nuevo en el initramfs.
  11. Ahora mi nuevo problema, la metadata sigue mala. Por lo que cambié el uuid para que reparara la metadata

    pvchange -u /dev/sad5

  12. Al ejecutar vgcfgrestore me daba error (lógico, el uuid del pv no coincida con el uuid del sda5).

  13. Hice un pvdisplay y tome nota del nuevo uuid.
  14. Apague nuevamente mi maquina virtual monté el disco en el virtualizador, edité el archivo, cambio el uuid del pv0 para que cocindiera con el uuid de la maquina.
  15. Desmonté e inicie de nuevo la maquina virtual hasta el initramfs.
  16. Ejecute vgcfgrestore y funcionó.

    vgcfgrestore -vvv -f /target/backup.conf

  17. Reinicié la maquina virtual y arrancó sin problemas.

Mientras redacto este articulo me doy cuenta que los comandos sed y grep los pude haber ejecutado directamente sobre /dev/sda5, y de esta forma ahorrarme el volcado del disco, en fin, son cosas que se piensan luego con calma, si alguien lo puede probar.

Moraleja. Siempre sacar el archivo backup de la partición lvm y si es posible sacarlo del equipo.

Hay usuarios que cuando colocan en LVM toda la instalación de su distro, cambian la ubicación de los backups de los LVM para que lo haga en la partición sin LVM de arranque /boot esto es una alternativa. Ya que ante algún problema la partición se puede montar tranquilamente como un sistema de archivo.

jueves, 14 de febrero de 2013

Consultar estado de tablas de una base de datos #postgresql #Tips #Trucos

No voy a entrar en el tema de si es un error de aplicación de base de datos, solo digamos que por algún motivo tienes un abrazo mortal o bloqueo mutuo en una base de datos, y es necesario ver quienes son los interlocutores (probablemente te des cuenta porque al menos uno de ellos te va a llamar) que intervienen en dicho abrazo mortal.

miércoles, 13 de febrero de 2013

Cambiar TABLESPACE en #postgresql

Cambiar el TABLESPACE en postgresql

Luego de optimizar un poco mi servidor de base de datos siguiendo el articulo de phenobarbital, me encontré en la situación de como cambiar mi base de datos ya existente para que utilizara el nuevo TABLESPACE definido en otra partición del disco.
Buscando en Internet, vi usuarios que aplicaron complejos scripts en PHP y demás. realmente no me convencían mucho, pero es una alternativa, así que pensé en hacerlo de otra manera

viernes, 3 de agosto de 2012

#Ratón (#mouse) en modo terminal(#consola) #Tip

Por lo general un sysadmin se encuentra habituado a no utilizar ratón en modo consola, pero a veces su presencia nos ayuda mucho.

El paquete en cuestión se llama gpm Generic Propourse Mouse y en debian se instala:

aptitude install gpm

Luego de esto tendremos un puntero con las siguientes opciones:

  • Sombrear
  • Copiar (Sombrea un texto y queda copiado)
  • Pegar (botón derecho del ratón).

Es muy útil cuando se tienen que editar archivos en modo consola.

martes, 31 de julio de 2012

#Trim #Perl #Tips

En días pasados publiqué una entrada de como eliminar espacios en blanco en #Perl, esta es una versión más corta para hacerlo en una sola línea, digamos una función trim like

$_ =~ s/^\s+|\s+$//g;

lunes, 30 de julio de 2012

#Tip: Convertir de minúsculas a mayúsculas (y viceversa) #Perl con tr/[]/[]/

Para convertir las mayúsculas a minúsculas en una cadena, se hace lo siguiente:

$_ =~ tr/[A-Z]/[a-z]/

Para convertir las minúsculas a mayúsculas se hace lo siguiente:

$_ =~ tr/[a-z]/[A-Z]/

domingo, 29 de julio de 2012

Entorno gráficos en servidores (porque los sysadmin no los usan).

En esta oportunidad quiero conversar sobre los entornos gráficos en los servidores.

Hace algún tiempo discutía con un colega quien me recalcaba mi necedad de no utilizar un entorno gráfico en un servidor (entiéndase por un entorno gráfico un gnome, kde, fluxbox, etc...) y más aún me insistía lo fácil que resultaban las configuraciones de un servidor Windows por tener interfaces gráficas.

Básicamente mis motivos o los que les daba en aquel entonces eran los siguientes:

  1. Cualquier interfaz gráfica que agregue representa uso de recursos del servidor Necesarios para el procesamiento de lo que sea que sirva.
  2. Un sysadmin no debería estar frente a los servidores, sino en remoto. (En este punto me alego que para eso estaban los software de control remoto) mi respuesta fue: Al problema de entorno gráfico le agrego un proceso más como un software de control remoto causando adicional a la disminución de recursos mas problemas del que cuidarme como parches de seguridad.
    En este punto me alegó que ssh era un proceso de acceso remoto, y respondí sí, creado para eso y que corre como cualquier otro proceso independiente del entorno gráfico.
  3. Si se necesita correr un programa que requiera entorno gráfico, entonces se hace un X Forward incluso SSH facilita esta tarea.
    En este punto en particular, recuerdo que necesitábamos instalar Lotus Domino en un servidor con Linux, por lo que para argumentar mi punto inicie el instalador en modo gráfico mediante X Forward y un tunel ssh.

En fin, para un sysadmin, la carga de procesos en su servidor es crucial, y no quieren desperdiciar un solo kbyte de memoria en procesos que son prescindibles.

Adicionalmente, es más geek hacerlo de esa manera. :-D


Algunas recomendaciones para liberar recursos.

  • Deshabilitar los procesos que no se usen. (update-rc.d).
  • Los entornos gráficos no son necesarios.
  • Limpiar los paquetes descargados de instalaciones (aptitude clean).
  • Una alternativa pero que requiere de mayor conocimiento es compilar un kernel a la medida, esto tiene dos problemas generar el kernel con cada actualización de seguridad y estar pendiente de las novedades de seguridad.

viernes, 27 de julio de 2012

Perl: Eliminar espacios en blanco (Tip).

Para eliminar los espacios en blanco de una cadena en perl se hace elo siguiente:

$_ =~ s/\s//g;

Esto eliminará automáticamente todos los espacios en blanco de la cadena.

Eliminar carácteres al inicio de una cadena.

Si se quiere eliminar todos los espacios en blanco al inicio de una cadena:

$_ =~ s/^\s+//;

Eliminar los carácteres al final de una cadena

Para eliminar los carácteres al final de una cadena:

$_ =~ s/\s+$//;

martes, 24 de julio de 2012

Redacción de documentos (de forma inteligente)

En esta oportunidad quiero compartir una de mis herramientas preferidas: Lyx.

Lyx, es lo que se puede llamar un frontend para Latex. Nos permite la redacción de documentos de forma inteligente ocupándose de los estilos y permitiendonos preocuparnos por lo importante, el documento.

Su principal característica es que es un editor WYSIWYM (What You See It's What You Mean) lo que ves es lo que quieres decir. Por lo que nos permite estructurar un documento sabiendo que lo que decimos es lo que debe ser (adiós a los espacios fantasmas) y luego como por arte de magia generamos un documento (postscript, pdf, web).

¿Qué tipos de documentos se pueden hacer?:

  • Presentaciones (con el complemento beamer).
  • Libros.
  • Currículos.
  • Tesis.

(son algunos de los que he realizado hasta ahora).

lunes, 23 de julio de 2012

CloudComputing (y su lado poco discutido).

Es innegable el avance del CloudComputing (Computación en la Nube), la capacidad de ofrecer un software como servicio es una de las virtudes de la nube, imaginen la posibilidad de tener un servicio listo donde quieras que te encuentras sin necesidad de configurar, realizar instalaciones engorrosas y menos aún asistir técnicamente a todas las computadoras.

No pretendo extenderme hablando de CloudComputing como tal sino de algunas de las cosas que poco se discuten sobre la misma.

Una de las ventajas que te ofrecen con el CloudComputing es que ahorras dinero al tener los servicios centralizados y que solo pagas lo que usas, pero hay que ver lo que se encuentra detrás de todo esto.

  1. Si bien es cierto que se paga por lo que se usa, en la mayoría de los casos los licenciamientos son para más, por lo que si no se estima bien la cantidad de usuarios puedes verte amarrado en un contrato por lo menos hasta que termine el mismo.
  2. El modelo de CloudComputing, por lo menos desde mi humilde punto de vista incrementa los riesgos del monopolio, ya que te amarra una empresa. Imaginen que tienen una cantidad importante de información almacenada en un servicio de nube como Google Docs, y deseamos movernos a Office 365 entonces:

    • ¿Cómo haría el proceso?
    • ¿Tendríamos que tener los dos modos de licenciamiento abiertos hasta poder terminar de migrar la información?
    • ¿Quien me asiste a mover la información de la casa rival?
  3. Imaginen un escenario donde llega un cliente/proveedor con un archivo digital en llamémosle Word, el archivo es el compendio de todos los manuales corporativos y pesa la humilde cantidad de 5GB. Tendría que subirlo a la nube para poderlo abrir (Obviamente no tengo suite ofimática local que sentido tendría tener los dos), ¿Cúanto tarda esto?, Lo modifiqué, el cliente/proveedor lo necesita, ¿cómo se lo doy? (Se que tienen mecanismos de compartición de archivos, y que yo le compartiría el enlace, pero la cuestión aquí es que esto apoya el punto 2. Fuerzo a una persona a usar una plataforma.)

  4. Los temas de privacidad no están claros: Supongamos un escenario donde los servidores de almacenamiento se encuentran en E.E.U.U. pero el servicio se encuentra en un país donde es legal la poligamia, ¿El país donde se encuentran los servidores por orden legal de ese país pueden ingresar a mi información aunque en mi país la poligamia sea legal?

Lamentablemente en el punto 4 entra a jugar una variable de la que poco se habla en el Internet, que es la ubicación física del cloud. Hasta ahora muchos han hecho pensar que el Internet no tiene ubicación física, y que por consiguiente no reside en ninguna parte, esto es falso, las interacciones e ideas que fluyen por el Internet son así, pero lo que se puede consultar, foros, páginas, blogs, wikis (Facebook, twitter, youtube), tienen una ubicación física, y las ubicaciones físicas se encuentras normadas por las leyes del estado/país donde esta, obvio que dependiendo del caso tendrán más de una ubicación y puede ser en diferentes países, pero esto solo complica el panaroma.

Cloud Computing Privada y Pública

Ahora bien, como si esto no fuera suficiente, le vienen a vender al usuario promedio dos nuevas ideas CloudComputing Privada y CloudComputing Pública.

¿Pero bien como se mastica esto?

La respuesta fácil es: igual. Es lo mismo, el concepto aplica es al ámbito, si lo aplicas en una LAN o directamente en Internet.

El problema aquí es que se está descubriendo el agua tibia (al igual que paso con los tablets) Lo único que cambia aquí es el modo, anteriormente comprabas un software y ahora sencillamente lo alquilas y traspasas costos de mantenimiento y operación al proveedor.

El concepto de CloudComputing privado puede tener dos vertientes, la primera a la modalidad en la cual los privilegios se encuentran signados únicamente a una rol (Por ejemplo una empresa) y otro en el cual el proveedor coloca un servicio físico en las instalaciones del cliente (Ejemplo colocar un servidor pero la operación es a costas del proveedor)


Otras desventajas.

Una desventaja más es la posibilidad de personalizar, es decir, el software es como es y hace lo que hace. Por ejemplo no puedo querer que la Suite de Office 365 trabaje ahora con documentos de gráficos vectoriales, puedo pedirlo al proveedor, pero su respuesta dependerá de muchos factores, supongamos que estoy en una nube donde edito documentos, y se me ocurre editar los documentos vía mensaje de texto (SMS), probablemente para mí eso represente una gran solución, pero en el universo del proveedor no, ya que el tendrá 10.000 usuarios y solo yo quiero eso. Esto nos lleva a otra Ventaja/Desventaja:

Ventaja:

No debemos preocuparnos por las actualizaciones, siempre estaremos en la última versión.

Desventaja:

Debemos preocuparnos por las actualizaciones, siempre estaremos en la última versión

Para aquellos que no entienden, probablemente no han sufrido o padecido un no me abre un archivo de office 2003 en 2007. Para quien lo padeció sabe a qué me refiero.

Qué pasa si las actualizaciones no son compatibles con mi modelo de negocios.

Por ejemplo:

Supongamos que la empresa "A" tiene un software bajo SAS de nomina. Entonces La reglamentación (leyes) cambian y le dan a la empresa 1 año para adecuarse a la nueva normativa; el proveedor inmediatamente adecuará su software, y lanzará la actualización digamos que al segundo mes desde aprobada la nueva ley, la empresa "A" no tiene aún listos los procedimientos internos porque están tranquilos porque tienen un año para adecuarse, abre el día de hoy el software y se encuentran con que ha cambiado.

¿Qué debe hacer la empresa?

No le queda de otra que adaptarse; el problema es que en un ambiente sano, los sistemas trabajan para las empresas y no las empresas para los sistemas.

Obvio que se puede alegar que existen contratos de servicios, y que tal vez mi ejemplo es algo extremo, solo quería exponerlo de forma clara, puede pasar con algo menos sutil, una macro de un archivo.

Hace pocos días una persona que conozco casi realiza una transferencia de USD$ 55,800.00 porque el proveedor de servicios cambio la "," por un "." en la manera de expresar las cifras.

Entonces ¿Es malo el CloudComputing?

No, el problema no es el CloudComputing, sino la centralización de la data, el riesgo es que por ejemplo si los datos están en mi equipo necesitan artificios legales para poder ingresar en mi equipo, si están en la plataforma Cloud, pueden ingresar con cualquier pretexto al proveedor, ¿Tenemos una orden de revisión porque estamos apreciando consumos elevados en su centro de datos? una vez adentro quien le dice que revisar o que no. ¿Recuerdan el caso MegaUpload?

Yo en lo particular utilizo servicios de almacenamiento en la nube para:

  • Respaldar información no sensible.
  • Compartir información de una manera más fácil.
  • Punto de acceso entre mis deferentes locaciones.

¿Son los hostings un servicio en Cloud?

Esto es difícil de responder, están ofreciendo un servicio amarrado un Sistema Operativo que ellos actualizan y mantienen, por lo que en cierta medida puede considerarse un cloud, esta es una pregunta que requiere mucho análisis y prefiero de momento no responder.

Estas son mis impresionas hasta ahora. Probablemente más adelante continúe ahondando con este tema

domingo, 22 de julio de 2012

Compilar programas sin saber dependencias (GNU/Linux Debian)

En oportunidades necesitamos compilar programas, pero no conocemos todas las dependencias (en mi caso siempre trato de que los programas que voy a instalar se hagan a la debian way

Pues bien, cada autor de paquetes debería indicar claramente todas las dependencias y tal vez utilizando herramientas como apt-file podemos instalarla, pero dependiendo del paquete, pues bien, esto se puede convertir en un dolor de cabeza.

Existe una herramienta llamada auto-apt, que se encarga de buscar todas las dependencias si existen en el sistema por nosotros.

Para instalar: aptitude install auto-apt

Luego de instalado se debe actualizar:

  1. auto-apt update
  2. auto-apt update-local #(esto es para que actualice y tome en cuenta los paquetes ya instalados)

Y para ejecutarlo: auto-apt run ./configure (dependiendo del paquete que quiera instalar cambiará el fichero)

Se dará cuenta que la utilidad ejecutará el configure instalando todas las dependencias que necesita.

Lo bueno

Te permite instalar las dependencias necesarias para que tu programa compile completamente.

Lo malo

No todas las dependencias son obligatorias pero auto-apt las instalará de todas formas.

sábado, 21 de julio de 2012

Buscar un archivo especfico en la paqueteria de GNU/Linux Debian

Este es un truco que me ha funcionado, ocurre que alguna vez necesito un archivo/binario, etc.. y no recuerdo el paquete al que pertenece, aquí viene un gran amigo y me ayuda: apt-file.

Se instala como cualquier otro paquete:

aptitude install apt-file

Luego lo actualizas

apt-file update

El procedimiento de actualización tardará dependiendo de la cantidad de lineas en el sources.lst

Posteriormente lo ejecutas, por ejemplo si quisiera saber en que paquete se encuentra la utilidad ifconfig lo único que tengo que hacer es:

apt-file search -x \/ifconfig$

Explico la línea anterior:

  • apt-file search indica que a la utilidad que busque :-D.
  • -x que utilice el texto de busqueda como expresión regular.
  • \/ifconfig$ indica lo que termine con /ifconfig (luego publicaré sobre las expresiones regulares)

Esto nos arrojará el resultado del que paquete que tiene la utilidad deseada se llama net-tools

viernes, 20 de julio de 2012

Truco: Listar las tarjetas instaladas en GNU/Linux Debian

Este es un pequeño truco para saber cuales tarjetas de red tienes instaladas en tu equipo con Linux:

ifconfig -a -s | awk '{print $1}'

Esto nos dira en un formato columna todas las tarjetas de red (activas o no) instaladas en el equipo.

Si qusiera todas las tarjetas activas lo único que hay que hacer es:

ifconfig -s | awk '{print $1}'

Otra maneras de hacerlo (Aunque prefiero la explicada):

ifconfig -s [-a] | grep -i eth

Si, sé que hay otras maneras, pero sinceramente este me parece una muy fácil de hacer.