¿Sueña Tux en código fuente?

No solo sobre pingüinos se puede escribir

Entradas etiquetadas ‘ejemplos

6 Ventajas de la virtualización – Casos reales

dejar un comentario »

La virtualización se basa en unir, integrar, mejorar.

Unir: En los centros de computo por lo general vemos una gran cantidad de máquinas fisicas corriendo un servicio por máquina, dejando de utilizar todo el poder de los procesadores actuales. El administrador de infraestructura se siente orgulloso (y con razón) de que sus 30 servidores funcionan como un reloj, pero si una máquina falla por lo general no se tiene un segundo servidor que pueda reemplazarlo.Con virtualización puedo migrar o recuperar un backup en una nueva máquina para no tener largos tiempos muertos.

En ocasiones en un solo servidor (sin importar su tamaño) se encarga de 1 o 2 aplicaciones corriendo dentro de ella. Por ejemplo la pagina de tu compañía esta corriendo sobre 1 máquina física? Que % de uso de CPU está en uso?

Lo que un sysadmin por lo general implementaría en el anterior ejemplo es un servidor con poca memoria como para no desaprovechar mucho la máquina (estoy hablando de una pagina simple… nada de alto trafico / aplicaciones)

Si se virtualiza un número de esos sistemas infrautilizados en un solo servidor físico, se ahorrará energía, espacio, capacidad de refrigeración y administración, debido a que se ha reducido el número de servidores físicos.

Algunas ventajas de la virtualización son:

Aislamiento: las máquinas virtuales son totalmente independientes, entre sí y con el hypervisor. Por tanto un fallo en una aplicación o en una máquina virtual afectará únicamente a esa máquina virtual. El resto de máquinas virtuales y el hypervisor seguirán funcionando normalmente.

Un hipervisor (en inglés hypervisor) o monitor de máquina virtual (virtual machine monitor) es una plataforma que permite aplicar diversas técnicas de control de virtualización para utilizar, al mismo tiempo, diferentes sistemas operativos (sin modificar o modificados en el caso de paravirtualización) en una misma computadora. Es una extensión de un término anterior, “supervisor”, que se aplicaba a kernels de sistemas operativos. (Tomado de wikipedia – mas info: google)

Seguridad: cada máquina tiene un acceso privilegiado (root o administrador) independiente. Por tanto, un ataque de seguridad en una máquina virtual sólo afectará a esa máquina.

Flexibilidad: podemos crear las máquinas virtuales con las características de CPU, memoria, disco y red que necesitemos, inclusive especificando a que “vlan” debe estar conectada, sin necesidad de “comprar” un servidor con esas características. También podemos tener máquinas virtuales con distintos sistemas operativos, ejecutándose dentro de una misma máquina física.

Agilidad: el despliegue o creación de una máquina virtual es un proceso muy rápido, básicamente la ejecución de un comando. Por tanto, si necesitamos un nuevo servidor lo podremos tener casi al instante, sin pasar por el proceso de compra, configuración, etc.

Portabilidad: toda la configuración de una máquina virtual reside en uno o varios ficheros. Esto hace que sea muy fácil clonar o transportar la máquina virtual a otro servidor físico, simplemente copiando y moviendo dichos ficheros que encapsulan la máquina virtual.

Recuperación rápida en caso de fallo: si se dispone de una copia de los ficheros de configuración de la máquina virtual, en caso de desastre la recuperación será muy rápida, simplemente arrancar la máquina virtual con los ficheros de configuración guardados. No es necesario reinstalar, recuperar backups y otros procedimientos largos que se aplican en las máquinas físicas.

Estas ventajas tienen un precio, que consiste fundamentalmente en una pérdida de rendimiento, es decir, una aplicación generalmente correrá más despacio en una máquina virtual que en un servidor físico.
La degradación dependerá de la tecnología de virtualización utilizada, de la configuración realizada a nivel hypervisor y de la propia aplicación.
Por regla general, las aplicaciones que más repercuten la pérdida de rendimiento son las que realizan operaciones frecuentes de entrada/salida.

Y el hardware?

Otro aspecto a tener en cuenta es que la máquina física deberá contar con suficiente memoria para poder arrancar todas las máquinas virtuales.
Si queremos crear, por ejemplo, 10 máquinas virtuales en un servidor físico y que estén funcionando simultáneamente, hay tecnologías que permiten hacerlo con 1 sola CPU física. Pero al menos necesitaremos 1 GB de memoria para cada máquina virtual, más la requerida por el hypervisor, lo que daría lugar a unos requerimientos de unos 12 GB de memoria. Es decir, necesitaríamos un servidor con 1 CPU y 12 GB de memoria (lo que es una configuración bastante extraña). Recordemos sin embargo que la mayoría de servidores actuales manejan procesadores de múltiples núcleos y algunas herramientas para virtualización permiten asignar por ejemplo a una máquina virtual múltiples núcleos.

En casa por ejemplo se pueden desplegar múltiples máquinas virtuales con el fin de realizar pruebas (instalar al mismo tiempo Windows y todas las máquinas Linux que queramos probar sin necesidad de formatear el disco duro con cada instalación)

Escrito por jmmejiav

14 septiembre 2011 a 5:11 PM

Rsync para sincronización local (2 directorios mismo pc)

dejar un comentario »

El escenario

Tengo los datos importantes en mi disco duro local y deseo hacer una copia de seguridad ya sea en una memoria USB previamente montada o en un segundo disco duro dentro de la misma máquina la cual solo utilizo para backups.

Dentro de dicho directorio (origen) tengo archivos que no cambian de backup en backup (o cambian muy poco) y por lo tanto no es necesario sobre-escribirlos en el destino de backup. En el directorio origen adicional tengo subdirectorios algunos de los cuales están vacíos y por lo tanto no deben ser copiados.

Parece complejo cierto? pero la solución es simple

El comando

rsync -uarmzhP /dir/origen/ /dir/destino

-u : update

-a: archive mode

-r: recursive

-m: no envía los directorios vacíos

-z: comprime mientras transfiere (así se ahorra tiempo y ancho de banda)

-h: presentación para humanos

-P: muestra el progreso de la copia

Si deseo borrar en el directorio destino los archivos que ya no esten en el directorio origen el comando completo sería:

rsync -uarmzhP –delete /dir/origen/ /dir/destino

donde

- -delete: borra en el destin0 los archivos que ya no estén en el origen

Nota: son dos guiones seguidos (-  -)

Si tienes preguntas, comentarios o felicitaciones te invito a plantearlas en mi cuenta de twitter

Escrito por jmmejiav

10 junio 2011 a 5:44 PM

Escrito en GNU/Linux

Etiquetado con , , , , ,

Resumen de comando TAR para compresión y backups

con 4 comentarios

icono de articuloLa orden tar
La utilidad tar (Tape Archiver) es una herramienta de fácil manejo disponible en todas las versiones de Unix y la mayoría de Posix que permite volcar ficheros individuales o directorios completos en un único fichero; inicialmente fué diseñada para crear archivos de cinta (esto es, para transferir archivos de un disco a una cinta magnética y viceversa), aunque en la actualidad casi todas sus versiones pueden utilizarse para copiar a cualquier dipositivo o fichero, denominado `contenedor’.

Si deseas mas información y algo de historia del comando de la definición puedes mirar la página del proyecto GNU y Tar

Sintaxis y funciones comunes

La sintaxis para tar es:

tar <funciones> archivo_a_crear <archivos_a_adicionar>

Las funciones más comúnmente utilizadas son:

-c: Crea un contenedor
-x: Extrae archivos de un contenedor
-t: Testea los archivos almacenados en un contenedor
-v: Modo verbose
-f: Especifica el nombre del contenedor
-Z: Comprime o descomprime mediante compress/uncompress (obsoleto)
-z: Comprime o descomprime mediante gzip
-j: Comprime o descomprime mediante bzip2
-p: Conserva los permisos de los ficheros

Ejemplos prácticos

Para estos ejemplos voy a generar “contenedores” del directorio, subidrectorios y archivos que se encuentran en /var/log y los voy a guardar en la carpeta /tmp. Recordemos que tar maneja el concepto de”contenedor” (el los crea, no los comprime, por lo que es necesario pasarle parámetros adicionales para que realice la compresión) por esto lo que primero explico es como crearlo y luego comprimirlos.

1. Crear un contenedor sin comprimir y luego verificar su contenido

$ tar -cvf /tmp/ejemplo1.tar /var/log

$ tar -tvf /tmp/ejemplo1.tar

2. Crear un contenedor comprimido con gzip y luego verificar su contenido

$ tar -czvf /tmp/ejemplo2.tar.gz /var/log

$ tar -tzvf /tmp/ejemplo2.tar.gz

3. Crear un contenedor comprimido con bzip2 y luego verificar su contenido

$ tar -cjvf /tmp/ejemplo3.tar.bz2 /var/log

$ tar -tjvf /tmp/ejemplo3.tar.bz2

4. Extraer los datos almacenados en el contenedor sin comprimir, luego del comprimido con gzip y por ultimo el que fue creado con bzip2.Lo descomprime en el directorio donde estamos ubicados.

$ tar -xvf ejemplo1.tar

$ tar -xzvf ejemplo2.tar.gz

$ tar -xjvf /tmp/ejemplo3.tar.bz2

5. Eliminar archivo /var/log/borrame.txt del “contenedor” simple (sin compresión). Para saber si el archivo existe en el archivo se puede antes utilizar:

$ tar -tvf ejemplo1.tar | grep borrame.txt

y luego para borrarlo

$ tar -v –delete var/log/borrame.txt -f ejemplo1.tar

Es de resaltar en este punto que la opción -f siempre especifica el nombre del archivo a crear.

También cabe señalar que no es posible realizar este proceso de borrado en archivos comprimidos como muestra el ejemplo a continuación:

$ tar -zv –delete var/log/messages.0 -f ejemplo2.tar.gz
tar: No se pueden actualizar archivos comprimidos
Intente`tar –help’ o `tar –usage’ para mayor información.

6. Generar un archivo comprimido utilizando una larga lista de archivos

Si quisiéramos ingresar varios archivos de diferentes sitios por lo general seria necesario especificar el nombre de cada archivo o el directorio y el archivo que quisiéramos agregar en el “contenedor comprimido”. Pero esto seria algo “fastidioso” si las rutas o archivos fueran muchos y largos. No seria mejor que tomara los datos de un archivo y comprimiera esos directorios?

El archivo puede tener cualquier nombre y los directorios o archivos deben estar separados con un espacio (deben tener la ruta completa preferiblemente) Quiero hacerle backup a estos archivos, por lo que lo coloco en un archivo que llamé listadito… contenido de archivo: (separado con espacio cada archivo o directorio)

/etc/passwd /var/log/dm* /home/mmejiav/docs/h_vida_mmejiav.pdf /var/log/messages /sbin
luego el comando sería:

$ tar -cjvf /tmp/ejemplar.tar.bz2 $(cat listadito)

Para finalizar se puede decir que existen infinidad de combinaciones que pueden solucionar las necesidades particulares del usuario. Por esto invito a buscar en google (la mayor fuente de información) o en la documentación (man)

Escrito por jmmejiav

1 agosto 2007 a 10:48 PM

Escrito en GNU/Linux

Etiquetado con , , ,

Comando rsync para copias (backups) remotas

con 2 comentarios

La necesidad

Hace poco necesitaba hacer una copia de seguridad de los datos de mi pc amarillo (192.168.0.8) al pc gris (192.168.0.9) el cual solo tiene el sistema operativo básico (nada de entorno gráfico) y bastante espacio libre en el disco duro.

Pero si lo hacia con scp demoraba demasiado, así que me obligue a buscar otra solución

El comando y las opciones

Según nuestra amiga la wikipedia

“Rsync es una aplicación para sistemas de tipo Unix que ofrece transmisión eficiente de datos incrementales comprimidos y cifrados. Mediante una técnica de delta encoding, permite sincronizar archivos y directorios entre dos máquinas de una red o entre dos ubicaciones en una misma máquina, minimizando el volumen de datos transferidos.”

Si deseas saber mas información sobre la aplicación puedes consultar en la wikipedia la información

El comando que utilice dice básicamente:

$ rsync -uarmzhP –delete –rsh=ssh –stats /local/dir user@ipremota:/remote/dir

Las opciones son:

-u : update

-a: archive mode

-r: recursive

-m: no envía los directorios vacíos

-z: comprime mientras transfiere (así se ahorra tiempo y ancho de banda)

-h: presentación para humanos

-P: muestra el progreso de la copia

–delete: borra en el destin0 los archivos que ya no estén en el origen

–rsh: especifica el shell remoto a usar (en este ejemplo ssh)

–stats: entrega alguna información por cada archivo que transfiere

Nota: las 3 ultimas opciones tienen dos guiones unidos (- -) por alguna extraña razón el blog me convierte los dos guiones en uno solo

Luego se coloca el directorio origen de la información (para el ejemplo /local/dir) y a continuación el usuario, símbolo de arroba y dirección ip de la máquina destino y también el directorio destino (user@ipremota:/remote/dir) estas opciones en la máquina destino se deben a que estamos usando ssh como protocolo de transferencia.

Por ultimo pide el passwd del usuario en la maquina destino y listo… comienza la copia.

Otra opción bastante poderosa es:

“–exclude-from=nofiles”

El archivo “nofiles” (puede ser cualquier nombre) es un archivo en el cual se colocan los archivos a no hacer backup, separados en líneas diferentes. Por ejemplo:

*.avi

*.mpg

*.mp3

Al ser tan complejo y poderoso se pueden colocar muchas otras opciones… puedes mirar el sitio web de rsync para encontrar más opciones y ejemplos. O también con man rsync se encuentran otras opciones.

Escrito por jmmejiav

1 agosto 2007 a 3:01 PM

Escrito en Debian, GNU/Linux

Etiquetado con , , , , ,

Comandos básicos para administración de archivos

dejar un comentario »

icono de articuloLa mejor manera de aprender a manejar el sistema de archivos es utilizar la línea de comandos… olvidar un poco el sistema gráfico e intentar hacer las cosas a la “antigua”
Al final de cuentas todo lo que esta encima de la línea de comandos son solamente mascaras que ejecutan algo por debajo.
Y si de aprender se trata lo mas util es como vimos antes ejecutar un
$ man comando

Los comandos que te recomiendo querido lector aprender son:
cd => para cambiar de directorios
ls => para listar contenidos
cp => copiar datos
mv => mover datos de un sitio a otro
mkdir => crear directorios
rm => borrar datos y tambien directorios
rmdir => borrar directorios

otros comandos muy útiles cuando estas en la terminal son:
file => determina el tipo de un archivo
cat => hace muchas cosas… entre ellas visualizar el contenido de uno o mas archivos
echo => “imprimir” cosas por la pantalla
more => visualizar ficheros por la pantalla; la principal diferencia con cat es que se puede controlar el número de líneas que aparecen en pantalla.
less => paginar texto en pantalla
wc => cuenta el número de palabras, líneas o bytes dependiendo de lo que se necesite.
head => escribe por salida estándar las primeras líneas de un archivo.
tail => escribe por salida estándar las últimas líneas de un archivo.
touch => modifica fecha de creación o crea un archivo vacío, dependiendo de lo que se necesite.

Un util tutorial con mucha información util y la explicación de estos comandos la puedes encontrar en:

http://es.tldp.org/Tutoriales/doc-tutorial-linux/tutorial-gnu-linux/indice.html

Pero la mejor forma de encontrar rápidamente información es con man y el comando… tal como explique en una entrada anterior de este blog

Escrito por jmmejiav

23 julio 2007 a 5:58 PM

Escrito en GNU/Linux

Etiquetado con , , , ,

Seguir

Get every new post delivered to your Inbox.

Únete a otros 116 seguidores