29/3/09

Tipos de virtualizacion

En el articulo anterior vimos como instalar una maquina virtual, ahora vamos a ver de que se trata todo esto internamente...

La virtualización es un tema de moda, debido a la mayor potencia de los servidores y a la facilidad de gestión que ofrece disponer de diferentes servidores dentro de una misma máquina, abstrayendo a los servidores virtuales del hardware real, permitiendo asignarles más o menos recursos, o incluso pudiendo moverlos de un servidor físico a otro en tiempo real. De todas formas, la virtualización no es algo nuevo, de hecho estaba contemplada ya en los antiguos mainframe IBM System/360 de la década de 1960. Sin embargo no ha sido hasta fechas recientes en las que su uso se ha generalizado, principalmente debido a la potencia de los equipos actuales y a su bajo precio.


Tipos de virtualizacion

Básicamente podemos considerar 3 tipos de virtualización:
  1. Emulación
  2. Virtualización completa (Full Virtualization)
  3. Paravirtualización (Paravirtualization).
Emulacion

La emulación se basa en crear máquinas virtuales que emulan el hardware de una o varias plataformas hardware distintas. Este tipo de virtualización es la más costosa y la menos eficiente, ya que obliga a simular completamente el comportamiento de la plataforma hardware a emular e implica también que cada instrucción que se ejecute en estas plataformas sea traducida al hardware real.

Sin embargo la emulación tiene características interesantes, como poder ejecutar un sistema operativo diseñado para una plataforma concreta sobre otra plataforma, sin tener que modificarlo, o en el desarrollo de firmware para dispositivos hardware, donde se pueden comenzar estos desarrollos sin tener que esperar a tener disponible el hardware real.

Uno de los ejemplos más destacados de la actualidad es QEMU. QEMU, entre otras cosas, permite emular diferentes plataformas Hardware como x86, x86-64, PowerPC, SPARC o MIPS. Así pues, podríamos tener dentro de un servidor linux varios equipos x86 o PowerPC, corriendo diferentes versiones de Linux.

Virtualizacion Completa

Con este término se denominan aquellas soluciones que permiten ejecutar sistemas operativos huesped (Guest), sin tener que modificarlos, sobre un sistema anfitrión (Host), utilizando en medio un Hypervisor o Virtual Machine Monitor que permite compartir el hardware real. Esta capa intermedia es la encargada de monitorizar los sistemas huesped con el fin de capturar determinadas instrucciones protegidas de acceso al hardware, que no pueden realizar de forma nativa al no tener acceso directo a él.

Su principal ventaja es que los sistemas operativos pueden ejecutarse sin ninguna modificación sobre la plataforma, aunque como inconveniente frente a la emulación, el sistema operativo debe estar soportado en la arquitectura virtualizada.

En lo que respecta al rendimiento, éste es significativamente mayor que en la emulación, pero menor que en una plataforma nativa, debido a la monitorización y la mediación del hypervisor. Sin embargo, recientes incorporaciones técnicas en las plataformas x86 hechas por Intel y AMD, como son Intel VT y AMD-V, han permitido que soluciones basadas en la virtualización completa se acerquen prácticamente al rendimiento nativo.

Un par de ejemplos significativos son VMware y KVM.

Hay que tener en cuenta también que la virtualización completa no se refiere a todo el conjunto de hardware disponible en un equipo, sino a sus componentes principales, básicamente el procesador y memoria. De esta forma, otros periféricos como tarjetas gráficas, de red o de sonido, no se virtualizan. Las máquinas huesped no disponen de los mismos dispositivos que el anfitrión, sino de otros virtuales genéricos. Por ejemplo, si se dispone de una tarjeta nVidia GeForce en el anfitrión, los equipos huesped no verán esta tarjeta sino una genérica Cirrus.

Paravirtulizacion

La paravirtualización surgió como una forma de mejorar la eficiencia de las máquinas virtuales y acercarlo al rendimiento nativo. Para ello se basa en que los sistemas virtualizados (huesped) deben estar basados en sistemas operativos especialmente modificados para ejecutarse sobre un Hypervisor. De esta forma no es necesario que éste monitorice todas las instrucciones, sino que los sistemas operativos huesped y anfitrión colaboran en la tarea.

Uno de los componentes más destacados de esta familia es XEN. Permite paravirtualización utilizando sistemas operativos modificados, y virtualización completa sobre procesadores con tecnología Intel-VT o AMD-V. Para la gestión de las máquinas virtuales existen aplicaciones propietarias e incluso alguna open-source como ConVirt, que permite gestionar también desde un único sitio las máquinas virtuales de diferentes servidores, realizar tareas sobre ellas, o modificar sus configuraciones.


Basado en el articulo de linuxinsight

24/3/09

Instalacion y configuracion de VirtualBox en Debian

VirtualBox es una aplicación que nos permite ejecutar diferentes Sistemas Operativos simultáneamente en el mismo equipo de manera virtual.

Me decidí instalar la versión que trae modulos cerrados ya que tiene algunas ventajas sobre la versión libre. para ver estas diferencias ingresen aqui

Bueno, manos a la obra!

Agregar el siguiente repositorio a nuestro source.list
deb http://download.virtualbox.org/virtualbox/debian lenny non-free
Para aquellos distraídos lo hacemos con el siguiente comandito:
# vim /etc/apt/source.list
Descargamos The Sun public key
wget http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc
Agregar la clave
# apt-key add sun_vbox.asc
Actualizamos la lista de paquetes:
#apt-get update
Instalamos:
apt-get install virtualbox-2.1
Hecho! Recuerdo cuando usaba etch, había algunos inconvenientes, al parecer en esta versión de virtualbox y con la nueva versión de kernel incorporada estos fueron solucionados, pero por si acaso, lean esta sección...

Instalar Guest Additions cuando virtualizamos un debian:
Ejecutar en una terminal los siguientes comandos:
# aptitude install gcc linux-headers-$(uname -r) make
en la ventana de VirtualBox seleccionar las siguientes opciones del menú, debe verificarse que no se tenga montando un medio en la unidad de CD/DVD previamente.
Devices > Install Guest Additions ...
en la terminal ejecutar los siguientes comandos:
# cd /media/cdrom
# sh VBoxLinuxAdditions-x86.run
Después de instaladas las aplicaciones adicionales es necesario reiniciar el sistema operativo huésped:
# reboot

Solucion de algunos problemas que pueden aparecer

Para poder usar VirtualBox hay que darle permisos al usuario de que lo utilice, para ello editamos "/etc/group" y agregamos nuestro usuario al grupo vboxusers, quedando asi:
vboxusers:x:xxxx:nuestro_usuario
o hacerlo de una con el siguiente comando:
gpasswd -a nuestro_usuario vboxusers
A veces esto no es suficiente, por lo que al ejecutar VirtualBox puede marcar un error de escritura en "/dev/vboxdrv". Esto se soluciona nombrando como propietario de "/dev/vboxdrv" a nuestro usuario:
# chown nuestro_usuario:nuestro_usuario /dev/vboxdrv
Reiniciamos el servicio:
# /etc/init.d/vboxdrv restart

Usando el USB


Para poder utilizar los puertos USB en la maquina virtual, vamos a crear un grupo al que llamaremos "usbusers" y le asignaremos el GID 1100. Despues habra que agregar nuestro usuario a este grupo.
# addgroup --gid 1100 usbusers
# gpasswd -a nuestro_usuario usbusers
Ahora necesitamos modificar un script del sistema que se encarga entre otras cosas, de cargar el sistema de ficheros usbfs.
# vim /etc/init.d/mountkernfs.sh
Nos vamos a la linea 70 y dejamos la linea que comienza con "domount" como aparece a continuación:
if [ -d /proc/bus/usb ]
then
domount usbfs usbdevfs /proc/bus/usb usbfs -onodev,noexec,nosuid,devgid=1100,devmode=0664
Una vez hechas estas modificaciones, reiniciamos el equipo.


Compartir carpetas

Para poder compartir archivos entre el Host Virtual (Invitado) y el Anfitrión es necesario instalar en el Host Invitado la aplicación "virtual box Guest Additions".
Pasos a seguir:
  • Instalar "virtual box Guest Additions". Cuando la maquina virtual se este ejecutando, hacer clic en el menú "Dispositivos" y luego en "instalar Guest Additions". Guest Additions es un conjunto de utilidades que mejoran las capacidades del sistema virtualizado, entre ellas el compartir carpetas.
  • Apagar la maquina virtual
  • Compartir la carpeta en el Host Anfitrión con el comando:
  • VBoxManage sharedfolder add "Nombre_Maquina_Virtual" -name "nombre_a_mostrar" -hostpath "/ruta/carpeta/compartida"
  • También se puede compartir desde La configuracion de la maquina en La opción "Directorios compartidos"
  • Iniciar la maquina virtual.
Para acceder a la carpeta compartida:
  • En Windows hacer: ir a "Mi PC" luego precionar el boton que dice "Carpetas", luego expandir "Mis Sitios de red", expandir "Toda la Red" expandir "VirtualBoxShared Folders" y aqui apareceran las carpetas compartidas.
Tambien puede mapear la unidad de red con: net use z: vboxsrvNombre_Carpeta_compartida
  • En Linux se monta la unidad con: mount -t vboxsf [-o OPTIONS] nombre_carpeta_Compartida /ruta/donde/se/desea/montar
Para ver las carpetas que tiene compartidas desde el Host Anfitrion se hace con: VBoxManage list vms o desde las configuraciones de la maquina en la Opcion "Directorios compartidos"
Podran leer y escribir en la carpeta compartida desde la maquina virtual.


Habilitar el Copy-Paste entre el Host Anfitrión y el Invitado

Para poder utilizar esta función es necesario instalar en el Host Invitado la aplicación "virtual box Guest Additions".
  • En un Host Invitado con Windows cuando la maquina virtual se este ejecutando, haga clic en el menú "Dispositivos" y luego en "instalar Guest Additions".
  • En un Host Invitado con GNU/Linux se requiere instalar los headers del kernel que se este usando. Para saber el kernel que usamos tecleamos "uname -r". Ejemplo: si tenemos el kernel "2.6.18-5-486" instalamos el paquete "linux-headers-2.6.18-5-486":
  • # aptitude install linux-headers-2.6.18-5-486
  • Ahora hacemos clic en el menu "Dispositivos" y luego en "instalar Guest Additions". Esto nos montara un CD-ROM virtual. Nos vamos a /media/cdrom/ e instalamos el paquete VBoxLinuxAdditions.run y luego reiniciamos o apagamos la maquina virtual:
    # cd /media/cdrom
    # sh VBoxLinuxAdditions.run
    # poweroff
  • Ya que instalamos "virtual box Guest Additions" ahora nos vamos en el administrador de VirtualBox, entramos a la configuración de la maquina virtual, en la opción "General", en la pestaÃḟa "Avanzado" en la opción "Portapapeles Compartidos" seleccionamos: "Anfitrión a Huesped", "Huesped a Anfitrión" o "Bidireccional" según lo deseado.

Configurar la maquina virtual para que forme parte de la red local


Para entender mejor como configurar la red es necesario una breve explicación de las posibles configuraciones de la red. Al configurar la red de la máquina virtual se pueden elegir entre las siguientes opciones:
  1. Not attached (No conectado).- Sirve para desactivar la tarjeta de red virtual, por lo que no tendrá acceso a ninguna red
  2. NAT .- Sirve basicamente para acceder a Internet, descargar archivos y enviar correos, pero las funciones avanzadas de red no estran habilitadas. La maquina virtual obtiene una IP de un router que viene siendo VirtualBox y que funciona como DHCP asignando una IP 10.0.2.0 a la primera interface y 10.0.3.0 a la segunda interface, el trafico de la maquina virtual es transparente.
  3. Host Interface Networking (Interface Anfitrion) .- Simulacion de una red real, el Host puede enviar datos al invitado y viceversa, se puede conectar a la red. Se tiene que crear una interface de red virtual en el Host anfitrión por cada tarjeta (interface) de red que use(n) la(s) maquina(s) virtual(es)
  4. Internal Networking (Red Interna) .- Similar a "Host Interface Networking", sin embargo el acceso a Internet es limitado, de esta manera se mejora la seguridad y velocidad.
La que nos interesa es "Host Interface Networking (Interface Anfitrion)". Esta configuración sirve para configurar la máquina virtual para forme parte de la red.

Configurar la maquina virtual como Host Interface Networking (Interface Anfitrión)

A grandes rasgos lo que se tiene que hacer para configurar interfaces permanentes en el Host anfitrión con GNU/Linux es:
  1. Crear un puente a la interfaz real. Esto permite compartir la interfaz física entre la interfaz real y la virtual
  2. Por cada tarjeta de red virtual (invitada) usada, debe ser creado un nueva interfaz virtual en el Host padre (llamada tap0 o vbox0 similar) y agregada esta interfaz al puente.
  3. Finalmente especificar la nueva interfaz en las configuraciones de la tarjeta de red virtual de la maquina virtual.
Ahora veremos detalladamente los pasos para configurar interfaces permanentes en el Host Anfitrión con Debian y derivadas:
1- Instalar el paquete "uml-utilities" en el Anfitrión, que contienen herramientas para crear tarjetas de red virtuales y el paquete de utilerías bridge "bridge-utils". Generalmente se instalan con el sistema base.
# apt-get install uml-utilities
# apt-get install bridge-utils

Para que el usuario que ejecutara la maquina virtual tenga acceso a la interfaz, el usuario tendrá que pertenecer al grupo "uml-net" por lo que hay que agregarlo:
# gpasswd -a usuario uml-net

Esto modificara el archivo "/etc/group/" quedando la linea del grupo uml-net asi­:
uml-net:x:NNN:usuario

2- Editar el archivo "/etc/network/interfaces" para declarar la interfaz de red virtual a utilizar por el Host Invitado especificando la interfaz a utilizar (tap0) y usuario que la usara, para ello agregamos las siguientes lineas:

auto tap0
iface tap0 inet manual

up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user usuario

Modifique usuario por el usuario que ejecutara la maquina virtual.

Es importante que nuestra interfaz real (ejemplo eth0) este comentada o que no tenga asignada una IP del mismo rango, de lo contrario el Host Anfitrion no saldra a Internet.

3- La primera vez que se use, se debe activar el el bridge y la interfaz creada con los siguientes comandos:
# /sbin/ifup tap0
# /sbin/ifup br0

Esto solo es necesario la primera vez, las siguientes veces se activaran automaticamente.

4.- En el archivo "/etc/network/interfaces" hay que declarar el bridge (llamado br0) y agregar la interfaz creada al mismo:

auto br0
iface br0 inet dhcp
bridge_ports all tap0

Tambien, se puede asignar una IP estatica dependiendo de las necesidades.

Si hemos seguido correctamente los pasos del 2 al 4, en "/etc/network/interfaces" y deseamos unir a la red dos maquinas virtuales deberiamos tener el siguiente contenido:

auto lo

iface lo inet loopback

#iface eth0 inet dhcp
#auto eth0

auto tap0
iface tap0 inet manual

up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user usuario

auto tap1

iface tap1 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user usuario

auto br0
iface br0 inet dhcp
bridge_ports all tap0 tap1

NOTA: las interfaces virtuales declaradas y que formen parte de un bridge no deben tener ninguna direccion IP asignada, por ello se pone "0.0.0.0" en vez de una IP real.

5.- Reiniciamos el servicio networking:
# /etc/init.d/networking restart

6.- Modifique la configuracion de la maquina virtual. Esto se hace desde la aplicacion VirtualBox, en "Configuraciones", "Red", "Attached to", modificando un adaptador de red y especificando "Host Interface Networking"/"Interface Anfitrion" y en el campo "Interface name" tecleamos "tap0" o "tap1" dependiendo del nombre de interfaz virtual configurada en "/etc/network/interfaces".
7.- Finalmente vaya al Host Virtual (Invitado) y configure los paramentros de red apropiadamente.
Clonar una maquina virtual
- Nos ubicamos donde estan guardados los vdi (/home/usuario/.VirtualBox/VDI) y clonamos el vdi con un UUID diferente:
$ cd /home/usuario/.VirtualBox/VDI
$ VBoxManage clonevdi NombreOriginal.vdi NuevoNombre.vdi

- Desde el administrador de VirtualBox creamos una nueva maquina; elegimos el mismo sistema operativo y otro nombre para la nueva maquina, asignamos memoria. En disco duro elegimos existente y elegimos el creado en el paso anterior (NuevoNombre.vdi) y listo ya tenemos una nueva maquina virtual identica.
Importar una maquina virtual

Una vez abierta la pantalla principal del VirtualBox hay que ir a Archivos->Virtual Media Manager para añadir la imagen de disco que hayamos guardado en un lugar conocido, para eso pulsamos en el botón Agregar sólo tenemos que seleccionar el fichero .vdi que contiene un disco duro virtual, normalmente con algo instalado en él.
Una vez hecho esto, sólo tenemos que crear una nueva Máquina (boton Nueva desde la pantalla principal) y seguir el sencillo asistente que se nos presenta. La única diferencia está en que en el paso de elección de disco virtual, en lugar de crear un disco con el botón que se nos muestra, elegimos del ComboBox la imagen que hemos añadido en la etapa anterior.

Debo de reconocer que el articulo no es mio, si no recuerdo mal creo que era de esdebian con algunos agregados propios...

23/3/09

Por que no es necesario desfragmentar en linux

Navegando por el web, encontré un articulo interesante y entendible para el resto de los humanos, que no disponemos de conocimientos técnicos suficientes =P
Les aclaro que es una traducción burda, el link por supuesto esta en la parte inferior

Esa es una pregunta que se puede encontrar con regularidad en los foros de Linux, cuando los nuevos usuarios no pueden encontrar la herramienta de desfragmentación de su nuvo y flamante sistema operativo. Aquí está mi intento de dar una respuesta simple, lease no técnica, de por qué algunos sistemas de archivos sufren más de la fragmentación que otros.

En lugar de limitarnos a tropezar a través de un montón de explicaciones técnicas, voy a optar por considerar que una imagen ASCII que vale más que mil palabras. Esta es la imagen que se utiliza para explicar el resto del texto:
a b c d e f g h i j k l m n o p q r s t u v w x y z

a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Esta es una representación de una parte (muy pequeña) del disco duro, aún completamente vacío (llena de ceros). Las letrasThe az 's at the top and the left side of the grid are used to locate each individual byte of data: The top left is aa , top right is za , and bottom left is az . Las letras en la parte superior y del lado izquierdo de la red (a-z) se utilizan para localizar cada uno de los bytes de datos: La parte superior izquierda se encuentra aa, en la superior derecha za, y abajo a la izquierda es az.

Vamos a comenzar con un sistema de archivos simple, un tipo que la mayoría de los usuarios están familiarizados: Uno que necesita desfragmentación de vez en cuando. Tales sistemas de archivos, siguen siendo importantes para los usuarios de Windows y Linux: estos se usan solo para unidades flash USB, FAT es todavía ampliamente utilizado - por desgracia y sufre del mal de la fragmentación.

Agregamos un archivo en nuestro sistema de archivos, y en nuestra unidad de disco duro ahora parece esto:
   a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t a e l e 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e H e l l o , _ w o r l d 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
donde las filas de la g a z que dan vacias.

Expliquemos lo que vemos aqui: Las cuatro primeras filas del disco están dedicados a una "Tabla de contenido", o TOC. Esta tabla almacena la ubicación de cada archivo en el sistema de archivos. En el ejemplo anterior, la tabla contiene un archivo, llamado "hello.txt", y dice que el contenido de este archivo se encuentran entre ae y le. Nos fijamos en esos lugares, y vemos que el contenido del archivo es "Hello, world"

Vamos bien hasta hora? Bien añadamos otro archivo:
   a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t a e l e b y e . t x t m e z
b e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e H e l l o , _ w o r l d G o o d b y e , _ w o r l d
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Como se puede ver, el segundo archivo se ha añadido inmediatamente después del primero. La idea aquí es que si todos los archivos se mantienen juntos (unidos), acceder a los mismos será más rápido y fácil: La parte más lenta del disco duro es el cabezal, cuanto menos se mueva, más rápido su lectura / escritura.

El problema aparece cuando nos decidimos a editar nuestro primer archivo. Supongamos que queremos añadir algunos signos de exclamación para que nuestro "Hola" paresca más entusiasta. Ahora tenemos un problema: No hay lugar para estos signos de exclamación en nuestro sistema de ficheros: El archivo "bye.txt" está en el camino. Ahora tenemos sólo dos opciones, que son pesimas ideas:
  1. Borramos el archivo de su posición original, y ponemos el nuevo archivo más grande al final del segundo archivo - en donde participan lotes de lectura y escritura
  2. Fragmentamos el archivo, de modo que existe en dos lugares pero sin que haya espacios vacíos - rápido de hacer, pero se ralentizará todos los accesos al archivo.
Ilustremos esto para la primer opcion:
a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t a f n f b y e . t x t m e z
b e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 G o o d b y e , _ w o r l d
f H e l l o , _ w o r l d ! ! 0 0 0 0 0 0 0 0 0 0 0 0
y para la segunda tenemos:
   a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t a e l e a f b f b y e . t x
b t m e z e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e H e l l o , _ w o r l d G o o d b y e , _ w o r l d
f ! ! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
El enfoque 2 es por lo que lo sistemas de archivos deben ser defragmentados
El enfoque 2 es por lo que los sistemas de archivos deben ser desfragmentados reularmente.
Asi que todos los archivos son colocados uno al lado del otro y cada vez que un archivo se amplia, se fragmenta. Y si un archivo se reduce, deja un vacío. Soon the hard drive becomes a mass of fragments and gaps, and performance starts to suffer. Pronto el disco duro se convierte en una masa de fragmentos y brechas deteriorando el rendimiento.

Vamos a ver qué pasa cuando usamos una filosofía diferente. El primer tipo de sistema de archivos es ideal si solo se tiene un usuario, accedediendo a los archivos más o menos el orden en que fueron creados , uno tras otro, con muy pocas modificaciones. Linux, sin embargo, siempre fue concebido como un sistema multi-usuario: Se garantiza que se tiene más de un usuario intentando acceder a más de un archivo al mismo tiempo. Por lo tanto, se necesita un enfoque diferente para el almacenamiento de archivos. Cuando creamos el archivo "hello.txt" en un sistema de archivos en Linux, se tiene este aspecto:
   a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t h n s n 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 0 0 0 0 0 0 0 H e l l o , _ w o r l d 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Y cuando añadimos otro archivo
a b c d e f g h i j k l m n o p q r s t u v w x y z
a T O C h e l l o . t x t h n s n b y e . t x t d u q
b u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 0 0 0 0 0 0 0 H e l l o , _ w o r l d 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 G o o d b y e , _ w o r l d 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
La parte ingeniosa de este enfoque es que el cabezal del disco puede ubicarse en el medio, y la mayoría de los archivos, en promedio, serán cercanos: después de todo, así es en promedio como se trabaja.

Más cuando agreguemos nuestra signos de exclamación a este sistema de archivos, observar los muchos problemas que causa:
   a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t h n u n b y e . t x t d u q
b u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 T O C
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
n 0 0 0 0 0 0 0 H e l l o , _ w o r l d ! ! 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 G o o d b y e , _ w o r l d 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Asi es, absolutamente ninguno!!!

El primer sistema de archivos trata de poner todos los archivos lo más cerca posible del comienzo de la unidad de disco, tanto como pueda, generando constantemente fragmentos de archivos cuando crecen y no hay espacio libre disponible.

El segundo sistema distribuye archivos en todo el disco por lo que hay un montón de espacio libre si el tamaño del archivo cambia. También puede volver a organizar los archivos sobre la marcha, ya que tiene un gran cantidad de espacio vacío en el entorno.

Desfragmentar el primer tipo de sistema de archivos es un proceso más intenso y no es realmente práctico para ejecutar durante el uso normal.

Asi la fragmentación, por tanto, sólo hace falta cuando un disco esta tan lleno que solamente no hay ningún hueco donde un archivo grande pueda ser puesto sin dividirlo. Mientras que el disco este en menos del 80 % lleno, aproximadamente , esto es improbablemente que pase.

También vale la pena saber que, debido a la naturaleza de la geometría del disco duro, la fragmentación puede que aún esté presente: un típico disco duro en realidad tiene varios platos o discos, en su interior.

Supongamos que nuestro ejemplo el disco duro es en realidad en dos platos, desde aa a zm el primero y el otro de an a zz:
   a b c d e f g h i j k l m n o p q r s t u v w x y z

a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
   a b c d e f g h i j k l m n o p q r s t u v w x y z

n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
El siguiente archivo sera considerado como no fragmentado, por que este va desde la fila m a la fila n, pero esto ignora ek hecho de que el cabezal debe moverse desde el fin del plato al comienzo del otro para poder leer el archivo.
   a b c d e f g h i j k l m n o p q r s t u v w x y z

a T O C h e l l o . t x t r m e n 0 0 0 0 0 0 0 0 0 0
b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
e 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
k 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 H e l l o , _ w o

a b c d e f g h i j k l m n o p q r s t u v w x y z

n r l d ! ! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
t 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
u 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
v 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
z 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Espero que esto ayude a comprender por qué algunos sistemas de archivos pueden sufrir el mal de la fragmentación, mientras que los otros apenas lo sufren, y por qué no es suministrado software de desfragmentacion con la instalación de Linux. Si no, estoy siempre abierto a sugerencias..

Bueno despues de esta cochinada de traduccion =P les paso el link, pueden aportar sus comentarios y corregir si encuentran errores o cosas mal traducidas...

Extraido de http://geekblog.oneandoneis2.org

18/3/09

Jerarquia de directorios en Linux

Bueno, vamos a ver como es la estructura de los directorios de linux según el FSH....


  • / es el nivel más alto dentro de la jerarquía de los directorios. Aquí cuelgan las demas carpetas, particiones y dispositivos. Es por esto que donde se instala el sistema, se selecciona la partición deseada y se le indica que el punto de montaje es justamente /.
  • /bin los binarios son los ejecutables de Linux. Aquí tendremos los ejecutables de los programas propios del sistema operativo, como ser cp, mv, cat, chown, etc. Existen otros directorios que también contiene ejecutables, como vamos a ver...
  • /boot aquí nos encontramos los archivos necesarios para el inicio del sistema, desde los archivos de configuración de Grub Lilo, hasta el propio kernel del sistema.
  • /dev linux trata los dispositivos como si fueran un fichero más para facilitar el flujo de la información. En esta carpeta hay dispositivos del sistema, por ejemplo los usb, sda (o hda) con sus respectivos números que indican las particiones, etc.
  • /etc aquí se guardan los ficheros de configuración de los programas instalados, así como ciertos scripts que se ejecutan en el inicio del sistema. Los valores de estos ficheros de configuración pueden ser complementados o sustituidos por los ficheros de configuración de usuario que cada uno tiene en su respectivo “home” (carpeta personal).
  • /home este directorio contiene otros, uno por cada usuario dado de alta en el sistema. Dentro de dichos directorios es donde el usuario tiene su carpeta personal, donde están los ficheros de configuración de usuario, así como los archivos personales del mismo que puede crear, modificar y eliminar bajo su propio criterio.
  • /lib contiene las bibliotecas (tambien mal conocidas como librerías) del sistema, así como módulos y controladores (drivers).
  • /lost+found es una carpeta que nos podemos encontrar en todas las particiones. Cuando por cualquier circunstancia se cierra mal el sistema (un apagón por ejemplo), cuando éste se reinicie comprobaréis que se llamará al programa fsck para restaurar la integridad del sistema de ficheros. En esta carpeta encontraremos la información que se guardó incorrectamente debido a algún problema.
  • /media es donde se montan las unidades extraíbles como los dispositivos USB, disqueteras, unidades de CD/DVD y en algunas distros, como Ubuntu, las particiones adicionales.
  • /mnt es un directorio que se suele usar para montar temporalmente unidades.
  • /opt destinado para guardar paquetes adicionales-opcionales de aplicaciones.
  • /proc en su contenido encontramos información para la virtualización del sistema de ficheros de Linux.
  • /root es el /home del administrador. Es el único /home que no está incluido -por defecto- en el directorio anteriormente mencionado.
  • /sbin son los ejecutables de administración (del sistema), tales como mount, umount, shutdown…
  • /srv información del sistema sobre ciertos servicios que ofrece (FTP, HTTP…).
  • /sys información sobre los dispositivos tal y como los ve el sistema (kernel Linux).
  • /tmp es un directorio donde se almacenan ficheros temporales. Cada vez que se inicia el sistema este directorio se limpia.
  • /usr es el directorio padre de otros subdirectorios de importancia:
    • /usr/bin conjunto de ejecutables de la mayoría de aplicaciones de escritorio entre otras (por ejemplo firefox).
    • /usr/include los ficheros cabeceras para C y C++.
    • /usr/lib las bibliotecas para C y C++.
    • /usr/local es otro nivel dentro que ofrece una jerarquía parecida al propio diretorio /usr.
    • /usr/sbin otra serie de comandos administrativos para el sistema.
    • /usr/share archivos compartidos como ficheros de configuración, imágenes, iconos, etc.
    • /usr/src tiene en su interior el código fuente para el kernel LInux.
  • /var ficheros de sistema como el buffer de impresión, logs… que varian en el tiempo
    • /var/cache se almacenan datos cacheados para las aplicaciones.
    • /var/lib información sobre el estado actual de las aplicaciones, modificable por las propias aplicaciones.
    • /var/lock ficheros que se encargan de que un recurso sólo sea usado por una aplicación determinada que ha pedido su exclusividad, hasta que ésta lo libere.
    • /var/log es uno de los subdirectorios más importantes ya que aquí se guardan todo tipo de logs del sistema.
    • /var/mail los correos de los usuarios.
    • /var/opt datos usados por los paquetes almacenados en /opt.
    • /var/run información sobre el sistema desde que se inició.
    • /var/spool datos esperando a que sean tratados por algún tipo de proceso.
    • /var/tmp otro fichero temporal.

14/3/09

Cambiar los colores de BASH

El programa dircolors pertenece al paquete GNU coreutils y controla la salida de los colores por pantalla de los comandos ls, dir, vdir, grep, fgrep y egrep, mediante la variable LS_COLOR. Permite ajustar los colores basándose en la extensión, los permisos y el tipo de archivo.

Se localiza en:
/usr/bin/dircolors

Este esquema de colores que voy a dar esta basado en el esquema de gentoo y es para personalizar los colores con que se muestran los archivos en BASH. Si no les gusta pueden pasarse una vuela por LS_COLORS que es una esquema de colores muy bueno.

Creen un archivo llamado ~/.dir_colors:
$ vim ~/.dir_colors
Con el siguiente texto:
# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the --color option.
#
# You can copy this file to .dir_colors in your $HOME directory to override
# the system defaults.

# Below, there should be one TERM entry for each termtype that is colorizable
TERM ansi
TERM color-xterm
TERM con132x25
TERM con132x30
TERM con132x43
TERM con132x60
TERM con80x25
TERM con80x28
TERM con80x30
TERM con80x43
TERM con80x50
TERM con80x60
TERM cons25
TERM console
TERM cygwin
TERM dtterm
TERM Eterm
TERM gnome
TERM konsole
TERM kterm
TERM linux
TERM linux-c
TERM mach-color
TERM putty
TERM rxvt
TERM rxvt-cygwin
TERM rxvt-cygwin-native
TERM rxvt-unicode
TERM screen
TERM screen-bce
TERM screen-w
TERM screen.linux
TERM vt100
TERM xterm
TERM xterm-256color
TERM xterm-color
TERM xterm-debian

# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
NORMAL 00 # global default, although everything should be something.
FILE 00 # normal file
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
# numerical value, the color will match the file pointed to)
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 01;05;37;41 # orphaned syminks
MISSING 01;05;37;41 # ... and the files they point to

# This is for files with execute permission:
EXEC 01;32

# List any file extensions like '.gz' or '.tar' that you would like ls
# to colorize below. Put the extension, a space, and the color init string.
# (and any comments you want to add after a '#')

.cmd 01;32 # executables (bright green)
.exe 01;32
.com 01;32
.btm 01;32
.bat 01;32
.sh 01;32
.csh 01;32

.tar 01;31 # archives / compressed (bright red)
.tgz 01;31
.arj 01;31
.taz 01;31
.lzh 01;31
.zip 01;31
.z 01;31
.Z 01;31
.gz 01;31
.bz2 01;31
.bz 01;31
.tbz2 01;31
.tz 01;31
.deb 01;31
.rpm 01;31
.rar 01;31 # app-arch/rar
.ace 01;31 # app-arch/unace
.zoo 01;31 # app-arch/zoo
.cpio 01;31 # app-arch/cpio
.7z 01;31 # app-arch/p7zip
.rz 01;31 # app-arch/rzip

.jpg 01;35 # image formats
.jpeg 01;35
.gif 01;35
.bmp 01;35
.ppm 01;35
.tga 01;35
.xbm 01;35
.xpm 01;35
.tif 01;35
.tiff 01;35
.png 01;35
.mng 01;35
.xcf 01;35
.pcx 01;35
.mpg 01;35
.mpeg 01;35
.m2v 01;35 # MPEG-2 Video only
.avi 01;35
.mkv 01;35 # Matroska (http://matroska.org/)
.ogm 01;35 # Ogg Media File
.mp4 01;35 # "Offical" container for MPEG-4
.m4v 01;35 # MPEG-4 Video only
.mp4v 01;35 # MPEG-4 Video only
.mov 01;35 # Quicktime (http://developer.apple.com/qa/qtw/qtw99.html)
.qt 01;35 # Quicktime (http://developer.apple.com/qa/qtw/qtw99.html)
.wmv 01;35 # Windows Media Video
.asf 01;35 # Advanced Systems Format (contains Windows Media Video)
.rm 01;35 # Real Media
.rmvb 01;35 # Real Media Variable Bitrate
.flc 01;35 # AutoDesk Animator
.fli 01;35 # AutoDesk Animator
.gl 01;35
.dl 01;35

.pdf 00;32 # Document files
.ps 00;32
.txt 00;32
.patch 00;32
.diff 00;32
.log 00;32
.tex 00;32
.doc 00;32

.mp3 00;36 # Audio files
.wav 00;36
.mid 00;36
.midi 00;36
.au 00;36
.ogg 00;36
.flac 00;36
.aac 00;36
Y en ~/.bashrc añadir lo siguiente:
if [[ -f ~/.dir_colors ]] ; then
eval $(dircolors -b ~/.dir_colors)
fi
o un poco mejor:
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'

alias grep='grep --color=auto'
#alias fgrep='fgrep --color=auto'
#alias egrep='egrep --color=auto'
fi
O simplemete agregar en el archivo ~/.bashrc lo siguiente:
alias ls='ls --color=yes' #Te mostrara siempre la salida de ls con colores.
alias grep='grep --color=auto' #Te mostrará la salida de grep con colores.

Obs:

  • Utilizaremos el comando dircolors --print-database o dircolors -p, que muestra por pantalla, el contenido del archivo precompilado que lleva la configuración básica por defecto. En si mismo, es un archivo de configuración válido y explica su uso.
  • Se pueden configurar los colores de varias maneras, dándole directamente los datos de los códigos a la variable LS_COLORS y luego exportarla, escribir la variable con los códigos en el ~/.bashrc, o crear un archivo de configuración en tu carpeta de usuario
  • Para crear el archivo de configuración, redireccionaremos el comando dircolors -p a el archivo ~/.dircolors que nos creará el archivo de configuración de fábrica en nuestro HOME y estará listo para modificar
  • $ dircolors -p > ~/.dircolors
  • Para decirle a bash que por defecto lea este archivo, modificaremos el ~/.bashrc:
  • # enable color support of ls and also add handy aliases
    if [ -x /usr/bin/dircolors ]; then
    eval "`dircolors -b ~/.dircolors`"
    alias ls='ls --color=auto'
    # existe y es ejecutable, lo utilizará bash, con la configuración del archivo ~/.dircolors
  • En la ayuda de dircolors explica que significa "dircolors -b" y como se usa.
  • dircolors controla los datos mediante la variable de entorno LS_COLOR, si invocamos a la variable veremos la configuración que utiliza por defecto:
  • $ echo $LS_COLOR
    rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:
    tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*
    txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.
    tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*
    .jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*
    tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*
    .m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*
    .asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*
    yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00
    ;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*
    .xspf=00;36:
  • LS_COLOR almacena el esquema de la siguiente manera:
  • Tipo de archivo=efecto;color;fondo
    Tipo de archivo=efecto;color;fondo extra
    Tipo de archivo=efecto;color extra;fondo
    Tipo de archivo=efecto;color extra;fondo extra

    1. Tipos de archivo
      rs # reset
      fi # archivo
      di # directorio
      ln # enlace simbólico
      mh # archivo con más de un enlace duro
      pi # tubería
      so # socket
      do # door
      bd # block device driver
      cd # character device driver
      or # huérfano , symlink to noneexistent file, or non-stat'able file
      su # archivo that is setuid (u+s)
      sg # archivo that is setgid (g+s)
      ca # archivo con capability
      tw # STICKY OTHER WRITABLE
      ow # OTHER WRITABLE
      st # sticky
      ex # ejecutable
      *.extensión # cualquier extensión
    2. Efectos
      00 # color por defecto
      01 # negrita
      04 # subyarado
      05 # intermitente
      07 # reverso ?
      08 # oculto
    3. Volores básicos
      31 # rojo
      32 # verde
      33 # naranja
      34 # azul
      35 # morado
      36 # cian
      37 # gris
    4. Fondos básicos
      40 # negro
      41 # rojo
      42 # verde
      43 # naranja
      44 # azul
      45 # morado
      46 # cian
      47 # gris
    5. Colores extras
      90 # gris oscuro
      91 # rojo claro
      92 # verde claro
      93 # amarillo
      94 # azul claro
      95 # morado claro
      96 # turquesa
      97 # blanco
    6. Fondos extras
      100 # gris oscuro
      101 # rojo claro
      102 # verde claro
      103 # amarillo
      104 # azul claro
      105 # morado claro
      106 # turquesa
  • Los tipos de archivo vienen de una forma más fácil de entender que en la variable LS_COLOR (en vez de fi,di,ln,... se utiliza FILE, DIR, LINK,...)

Eso es todo por hoy!

10/3/09

Mapa conceptual del Sofware Libre

Bueno, como estoy algo corto de tiempo, agrego una de las tantas entradas pedorras que van a ver en este blog, en esta ocacion, tal como lo dice el titulo...



Se ven al rato, chau!

5/3/09

administrar el ancho de banda por aplicacion

Trickle trabaja en capa de aplicacion y se encarga de limitar el uso del ancho de banda de “subida” como de “bajada” de un programa que le especifiquemos.

Instalacion
apt-get install trickle
Ejemplo:
trickle -u 5 -d 12 apt-get upgrade
Entonces trickle limitaría “apt-get upgrade” para usar solo 5 Kbps de “subida” y 12 Kbps de “bajada”, la ventaja es que trickle puede ser invocado tanto por usuarios como por root.

Recomiendo lean la ayuda y si alguien sabe como controlar el ancho de banda por pid que me diga!