miércoles, 10 de enero de 2007

DNS - Linux

DOMAIN NAME SYSTEM (DNS)


1. HISTORIA
En la década de los 70, la red Arpanet, antecesora de Internet, estaba formada por un número pequeño de servidores. En un sencillo archivo HOST.TXT figuraban los pocos centenares de servidores que la componían. Para realizar cambios en este fichero, los administradores de los diferentes servidores enviaban las modificaciones por correo electrónico y recibían el nuevo fichero HOST.TXT actualizado por FTP. El organismo encargado de mantener el fichero era SRINIC.
El crecimiento explosivo de la red causó que el sistema de nombres centralizado en el archivo HOSTS no resultara práctico y en 1983, Paul Mockapetris publicó los RFCs 882 y 883.
En 1984 se creó el sistema de nombres de dominio DNS (Domain Name System), documentado en las RFC 882 y 883. (Estos RFCs han quedado obsoletos por la publicación en 1987 de los RFCs 1034 y 1035).

2. ASPECTO DESCRIPTIVO

El DNS ( Domain Name Service) es un sistema de nombres que permite traducir de nombre de dominio a dirección IP y viceversa. Aunque Internet sólo funciona en base a direcciones IP, el DNS permite que los humanos usemos nombres de dominio que son bastante más simples de recordar (pero que también pueden causar muchos conflictos, puesto que los nombres son activos valiosos en algunos casos).
El sistema de nombres de dominios en Internet es un sistema distribuido, jerárquico, replicado y tolerante a fallas. Aunque parece muy difícil lograr todos esos objetivos, la solución no es tan compleja en realidad. El punto central se basa en un árbol que define la jerarquía entre los dominios y los sub-dominios. En un nombre de dominio, la jerarquía se lee de derecha a izquierda.
Cada componente del dominio (y también la raíz) tiene un servidor primario y varios servidores secundarios. Todos estos servidores tienen la misma autoridad para responder por ese dominio, pero el primario es el único con derecho para hacer modificaciones en él. Por ello, el primario tiene la copia maestra y los secundarios copian la información desde él.
La raíz del sistema de dominios es servida por algunos servidores ``bien conocidos''. Todo servidor de nombres debe ser configurado con la lista de los servidores raíz bien conocidos (en general lo vienen de fábrica). Estos servidores dicen qué dominios de primer nivel existen y cuales son sus servidores de nombres. Recursivamente, los servidores de esos dominios dicen qué sub-dominios existen y cuales son sus servidores.



Existe un conflicto de competencia entre el servidor de un dominio y el de un sub-dominio: ambos deben saber cuales son los servidores de nombres del sub-dominio. En un inicio, estarán de acuerdo, pero con el tiempo los servidores pueden ir cambiando, y las versiones de ambos pueden ser inconsistentes. Actualmente, el que manda es el servidor del sub-dominio, y su información es la más importante.
El sistema DNS
El sistema DNS es en esencia una base de datos distribuida. Esta base de datos es jerárquica, al estilo de como lo son los sistemas de ficheros de UNIX. La raíz de la base de datos está representada por el nodo "." y cada uno de los nodos que descienden de ella reciben el nombre de dominios. En el sistema DNS cada dominio se hace cargo de la base de datos que depende de él.
En cada dominio puede haber a su vez servidores y otros dominios. Cada nombre de dominio se construye escribiendo los sucesivos nombres de dominio a los que pertenece el dominio hasta llegar al dominio raíz. Cada nombre se separa del siguiente mediante un punto y se escriben colocando a la izquierda los nodos inferiores. Por ejemplo el departamento imasd de la compañía acme, que operase en España recibiría el nombre: imasd.acme.es
El punto raíz no se pone. A un nombre de dominio que incluye todos los nodos hasta el raíz se le denomina nombre de dominio completamente cualificado (FQDN Full Cuallified Domain Name). En Internet por debajo del raíz los primeros nodos corresponden normalmente a países u organizaciones internacionales. Cada país tiene su propio dominio, y además existen otros para otro tipo de organizaciones. En el caso de Estados Unidos, la mayoría de los dominios pertenecen por razones históricas a los dominios edu, com, mil y gov.



3. ASPECTOS TÉCNICO

Servidores DNS.
Son servicios que contestan las consultas realizadas por los Clientes DNS. Hay dos tipos de servidores de nombres:
• Servidor Maestro: También denominado Primario. Obtiene los datos del dominio a partir de un fichero hospedado en el mismo servidor.

• Servidor Esclavo: También denominado Secundario. Al iniciar obtiene los datos del dominio a través de un Servidor Maestro (o primario), realizando un proceso denominado transferencia de zona.
De acuerdo al RFC 2182, el DNS requiere que al menos tres servidores existan para todos los dominios delegados (o zonas).
Una de las principales razones para tener al menos tres servidores para cada zona es permitir que la información de la zona misma esté disponible siempre y forma confiable hacia los Clientes DNS a través de Internet cuando un servidor DNS de dicha zona falle, no esté disponible y/o esté inalcanzable.
Contar con múltiples servidores también facilita la propagación de la zona y mejoran la eficiencia del sistema en general al brindar opciones a los Clientes DNS si acaso encontraran dificultades para realizar una consulta en un Servidor DNS. En otras palabras: tener múltiples servidores para una zona permite contar con redundancia y respaldo del servicio.
Con múltiples servidores, por lo general uno actúa como Servidor Maestro o Primario y los demás como Servidores Esclavos o Secundarios. Correctamente configurados y una vez creados los datos para una zona, no será necesario copiarlos a cada Servidor Esclavo o Secundario, pues éste se encargará de transferir los datos de manera automática cuando sea necesario.
Los Servidores DNS responden dos tipos de consultas:
• Consultas Iterativas (no recursivas): El cliente hace una consulta al Servidor DNS y este le responde con la mejor respuesta que pueda darse basada sobre su caché o en las zonas locales. Si no es posible dar una respuesta, la consulta se reenvía hacia otro Servidor DNS repitiéndose este proceso hasta encontrar al Servidor DNS que tiene la Zona de Autoridad capaz de resolver la consulta.

• Consultas Recursivas: El Servidor DNS asume toda la carga de proporcionar una respuesta completa para la consulta realizada por el Cliente DNS. El Servidor DNS desarrolla entonces Consultas Iterativas separadas hacia otros Servidores DNS (en lugar de hacerlo el Cliente DNS) para obtener la respuesta solicitada.

Un servidor de DNS sirve para:
(1) traducir su nombre de dominio en una dirección IP.
(2) asignar nombres a todas las máquinas de una red y trabajar con nombres de dominio en lugar de IPs.

Desde un punto de vista técnico, un nombre de dominio es más fácil de recordar, además cuando una empresa tiene un servidor DNS (y su propio nombre de dominio) se le puede localizar más fácilmente por Internet.
Funcionamiento:
El sistema DNS es una base de datos distribuida mantenida por miles de servidores DNS, cada uno de los cuales es responsable de una "zona" de internet.
Cuando un programa cliente (por ejemplo, el navegador) hace una petición de una dirección internet, el servidor DNS del proveedor de acceso procesa la consulta, intentando buscar el dominio en su tabla de registros. Si no lo encuentra envía la petición a otro servidor DNS situado en un nivel superior de la jerarquía de nombres de dominios. Esta secuencia de peticiones se repite hasta que se obtiene la dirección IP del ordenador que corresponde al dominio consultado.
El servicio que registra tu dominio es el responsable de asociar tu nombre de dominio con el servidor DNS correspondiente, de manera que siempre queda asegurada su "visibilidad".
Beneficios:
• Conveniencia
Nombres conocidos por el usuario son más fácil de recordar que sus respectivas direcciones IP.
• Consistencia
Las direcciones IP pueden cambiar pero los nombres permanecen constantes.
• Simplicidad
Usuarios necesitan aprender solo un nombre para encontrar recursos ya sea en internet o en una Intranet.
Software Requerido:
Paquete. Descripción.
• bind Incluye el Servidor DNS y herramientas para verificar su funcionamiento.
• bind-libs Biblioteca compartida que consiste en rutinas para aplicaciones para utilizarse cuando se interactúe con Servidores DNS.
• bind-chroot Contiene un árbol de ficheros que puede ser utilizado como una jaula chroot añadiendo seguridad adicional al servicio.
• bind-utils Colección de herramientas para consultar Servidores DNS.
• caching-nameserver Ficheros de configuración que harán que el Servidor DNS actúe como un caché para el servidor de nombres.


Hardware Requerido:
• Requerimientos mínimos:
Servidor a 250 Mhz, 256 MB RAM, 8 GB disco duro
El proceso de resolución normal se da de la siguiente manera:
1. El servidor A recibe una consulta recursiva desde el resolver.
2. El servidor A envía una consulta iterativa a B.
3. El servidor B refiere a A otro servidor de nombres, incluyendo a C.
4. El servidor A envía una consulta iterativa a C.
5. El servidor C refiere a A otro servidor de nombres, incluyendo a D.
6. El servidor A envía una consulta iterativa a D.
7. El servidor D responde.
8. El servidor A regresa la respuesta al resolver.
9. El resolver entrega la respuesta al programa que solicitó la información.
Herramientas de búsqueda y consulta:
Mandato host
El mandato host una herramienta simple para hacer búsquedas en Servidores DNS. Es utilizada para convertir nombres en direcciones IP y viceversa.
De modo predefinido realiza las búsquedas en las Servidores DNS definidos en el fichero /etc/resolv.conf, pudiendo definirse opcionalmente el Servidor DNS a consultar.
host www.linuxparatodos.net
Lo anterior realiza una búsqueda en los Servidores DNS definidos en el fichero /etc/resolv.conf del sistema, devolviendo como resultado una dirección IP.
host www.linuxparatodos.net 200.33.146.217
Lo anterior realiza una búsqueda en los Servidor DNS en la dirección IP 200.33.146.217, devolviendo una dirección IP como resultado.
Mandato dig
El mandato dig (domain information groper) es una herramienta flexible para realizar consultas en Servidores DNS. Realiza búsquedas y muestra las respuestas que son regresadas por los servidores que fueron consultados. Debido a su flexibilidad y claridad en la salida es que la mayoría de los administradores utilizan dig para diagnosticar problemas de DNS.
De modo predefinido realiza las búsquedas en las Servidores DNS definidos en el fichero /etc/resolv.conf, pudiendo definirse opcionalmente el Servidor DNS a consultar. La sintaxis básica sería:
dig @servidor nombre TIPO
Donde servidor corresponde al nombre o dirección IP del Servidor DNS a consultar, nombre corresponde al nombre del registro del recurso que se está buscando y TIPO corresponde al tipo de consulta requerido (ANY, A, MX, SOA, NS, etc.)
Ejemplo:
X dig @200.33.146.209 linuxparatodos.net M
Lo anterior realiza una búsqueda en el Servidor DNS en la dirección IP 200.33.146.209 para los registros MX para el dominio linuxparatodos.net.
dig linuxparatodos.net NS
Lo anterior realiza una búsqueda en los Servidores DNS definidos en el fichero /etc/resolv.conf del sistema para los registros NS para el dominio linuxparatodos.net.
dig @200.33.146.217 linuxparatodos.net NS
Lo anterior realiza una búsqueda en los Servidor DNS en la dirección IP 200.33.146.217 para los registros NS para el dominio linuxparatodos.net.

4. ANÁLOGOS

Servidores DNS incluidos en S.O. Windows 2000 Server, Windows 2003 Server y NT Server.

5. STANDARES

1. BIND (Berkeley Internet Name Domain) es el servidor de DNS más popular de Internet, y el más utilizado en entornos Unix/Linux. Hoy por hoy, sería imposible concebir Internet tal como es sin Bind, acaparando según diversas fuentes hasta el 90% de los servidores DNS de toda Internet.

Hay que tener en cuenta que la mayoría de la gente no necesita tener BIND instalado en su sistema. De hecho solo los servidores lo necesitan realmente. De vez en cuando surgen ataques ("exploits"), desde los típicos de denegación de servicio a verdaderas situaciones comprometedoras para el root. La mayoría de los servidores DNS están incorrectamente configurados y acaban en estas situaciones. Si se trabaja con un sistema doméstico, no se necesitará tener instalado BIND aunque por otro lado, si quiere acelerar la navegación por Internet, colocar un servidor de DNS como BIND permite colocar en cache las resoluciones de nombres, lo que es muy recomendable, sobretodo en servidores proxy.

Es muy importante tener siempre BIND bien actualizado, sobretodo en servidores Linux, pues en este servicio aparecen frecuentemente vulnerabilidades importantes.




2. MyDNS es un servidor DNS que se abastece de un soporte SQL donde van consignados los datos del servicio, en vez de ir en ficheros de texto plano como sucede en BIND. La ventaja que promulgan sus autores es obvia, la posibilidad de invocación de la SQL mediante interfaz web, lo que simplificaría la administración del servidor DNS. La replicación de servicios se hace mediante replicación SQL.


3. PowerDNS, que sólo responderá las consultas sobre la zona de la que es responsable, sin intentar encontrar información sobre otras. Fue liberado recientemente, y ahora están disponibles fuentes y binarios precompilados, igualmente bueno es el hecho de que la migración desde BIND no parece muy complicada.

4. MaraDNS es un sofisticado servidor de DNS pensado para responder a recurrentes problemas de seguridad creando un entorno totalmente seguro, basado en una librería muy eficaz ante posibles ataques de tipo “buffer overflow”. Además, no se ejecuta en root, sino como usuario distinto en entorno chroot.

5. Pdnsd es un servidor que hace de caché de DNS, única y exclusivamente, guardando en disco (lo que Bind perdería a la hora de reiniciar la máquina)

Entorno Gráfico - Linux

ENTORNO DE TRABAJO
En Linux tenemos la oportunidad de trabajar en:
- modo texto (consola)
- modo gráfico (con ventanas)
Entorno de consola:
Se puede elegir entre varios sistemas aunque el más utilizado es el shell llamado BASH.
Maneras en las que se puede utilizar el entorno de consola:
- Sistemas Linux sin entorno gráfico
- Instalando Cygwin en ordenadores windows
- Utilizando un programa emulador de consola en Linux con sistemas gráficos, podemos poner en marcha nvarios programas que nos ponen una consola en una ventana (consolé, exterm, Gnome-term, etc)
- Pulsando la teca f1 (o f2... f5) mientras mantenemos pulsadas las teclas CTRL. + ALT.
- Para volver al modo gráfico à se pulsa CTRL.+ALT+F7
Entornos gráficos:
Existen multitud de entornos de trabajo gráficos:
- WINDOW MAKER
- BLACKBOX
- FLUXBOX
- JCEWM
- XFCE
- GNOME
- KDE

Conceptos básicos del entorno gráfico:
Si observamos con detenimiento la pantalla de un entorno gráfico cualquiera veremos que se compone de distintas partes definidas: Iconos, Ventanas, Menús y el Puntero del mouse, todo en el marco de un Escritorio. de trabajo. Ese Escritorio es la metáfora aquí, el espacio en el que usted dispone sus aplicaciones y otras cosas para trabajar, como si fueran hojas y carpetas en un escritorio real. En la imagen verá las partes más importantes de un entorno de escritorio. Pulse sobre ella (y sobre las que verá más adelante) para verlas a tamaño real.


El Escritorio
Dentro del escritorio encontraremos entonces:
Ventanas, que representan aplicaciones (programas). Las ventanas tienen a su vez una barra de título, una barra de menúes, a veces una barra de acciones, y un área principal.
Menúes, que pueden estar en las ventanas o no. La característica de los menúes es de ser desplegables: normalmente están identificados por una opción, una palabra que los resume. También puede tratarse de un ícono, en el caso de los menúes de aplicaciones.
Los menúes contienen opciones, accesos a programas y submenúes, estos últimos marcados por una flecha. En la imagen debajo puede ver un menú de la ventana abierta, con un par de submenúes y algunas acciones posibles. Al lado de ellas aparecen los atajos de teclado: las combinaciones de teclas alternativas para esa acción.

Barra de menúes y el menú Archivo
Iconos: Los íconos son imágenes que refieren a un archivo, un programa o una carpeta. Podemos verlos como etiquetas para identificar fácilmente a cada cosa.
A veces, un panel principal. El panel está representado por un ícono. En el caso de KDE es el ícono K, en el de GNOME es el pie. Al hacer click sobre el ícono, se despliega el menú.

El Botón K


El botón G
Si se fija, ambos muestran una flecha. Ella indica que son íconos de menú.
Usando el mouse
La segunda cosa importante es aprender a usar el mouse (o ratón) y el teclado. Hay algunas acciones fundamentales que aprender del mouse:
Click: cuando le decimos que haga click, le estamos pidiendo que presione y suelte el botón izquierdo del mouse. Sirve para seleccionar elementos de la pantalla. Sobre menúes, los despliega. Sobre ventanas, las lleva al frente. Sobre elementos de un panel, los activa. Sobre íconos, el funcionamiento depende, pero en general los selecciona.
Click derecho: la misma acción pero con el botón derecho del mouse. Recuerde que si su mouse está configurado para usuarios zurdos la función de los botones estará invertida. Presenta menúes contextuales, es decir, referidos al elemento sobre el que se hizo click derecho.
Doble click: es una sucesión rápida de dos clicks. Ejecuta la acción predeterminada sobre los íconos en el escritorio, es decir, abre archivos o carpetas, acciona programas, etc. dependiendo de qué sea el ícono clickeado.
Click medio: un click con el botón medio del mouse. En mouses de dos botones, haga click con ambos botones a la vez. Sirve (solo en Linux) para copiar texto seleccionado previamente.
Seleccionar: pulse y deje apretado el botón izquierdo del mouse sobre un punto del escritorio. mueva el mouse hasta otro punto y suelte el botón. Habrá visto un área coloreada. Si lo hace sobre íconos, seleccionará todos los que queden dentro de esa área. Note que, si sólo quiere seleccionar un ícono, basta con hacer click sobre él.
Arrastrar y soltar: pulse el botón izquierdo del mouse sobre un elemento seleccionado. Sin soltarlo, mueva el mouse a otro punto. Ahora, suelte el botón. Ha movido el elemento (ícono, grupo de íconos, ventana, lo que sea). Recuerde que, si quiere mover una ventana, debe arrastrar la barra de título, no cualquier parte de la ventana.
Todas estas acciones son posibles no sólo en el escritorio, sino en los programas, aunque aquí su uso puede cambiar un poco... Es cuestión de probar y de leer nuestros tutoriales: si hay desviaciones se lo haremos saber.
Uso del teclado
El teclado tiene dos usos básicos: tipeo en las ventanas que lo permiten; y uso de atajos de teclado en cualquier parte. Un atajo de teclados es una combinación de teclas que le permite hacer lo mismo que buscar un botón o un menú con el mouse. Debería aprender al menos los atajos de teclado básicos, le ahorrarán mucho tiempo.
Nuestra convención de escritura de atajos de teclado es: las teclas a presionar juntas van unidas por un signo más: "+". Si se debe presionar una secuencia de teclas, se separan con comas. Los atajos de teclado comunes a todos los entornos (al menos, funcionaron para nosotros):
Alt + F4: cierra una ventana.
Alt + F2: abre una ventana de "Ejecutar un comando"
Control + X: corta un elemento.
Control + C: copia un elemento.
Control + V: pega un elemento cortado o pegado.
Control + O: abre un archivo desde un programa.
Control + S: guarda un archivo desde un programa.
La tecla "Windows" (la ventana ondulada al lado de la tecla Alt), si la tiene, abrirá el menú de aplicaciones de KDE.
Control + Alt + F(1-6) lo sacan de su entorno gráfico y a una terminal. Para volver al entorno, pulse Control + Alt + F7.
Alt + Tab (Tab es la tecla encima de Bloq Mayús o Caps Lock) cambia entre las ventanas activas.
Control + Tab (en KDE) o Control + Alt + cursor izq o der (en GNOME) cambian entre escritorios virtuales.
Para cerrar con el tema, verá los atajos de teclado para cada situación si revisa sus menús o si hace clic derecho. Veremos luego cómo manipular los atajos de teclado en cada entorno.
El escritorio y las ventanas
El escritorio tiene un fondo, que puede ser un color, una mezcla de colores o un papel tapiz; y pueden haber ventanas sobre él.
Las ventanas se componen de un área interior que se mantiene constante, y un decorado que puede cambiarse. La parte superior del decorado es la barra de título: contiene el nombre de la ventana (la aplicación que se ejecuta, concretamente) y botones. Estos representan (en general, dependiendo de la ventana pueden agregarse o eliminarse acciones) las acciones de minimizar la ventana, maximizarla o restaurarla, y cerrarla.

La barra de título

Botones de Minimizar,
Maximizar/Restaurar y Cerrar
Minimizar una ventana es esconderla. La ventana desaparece y se ve sólo su nombre en la barra de tareas. Puede restaurarla haciendo click sobre su nombre en la barra de tareas del panel. Maximizarla es hacer que ocupe toda la pantalla (salvo el panel); restaurarla la devuelve a sus proporciones originales. El botón de cerrar es evidente.
Si hace click derecho sobre alguna parte de la barra de título de una ventana (pero no en un botón), verá más opciones: enviarla a otro escritorio, moverla, etc. Si hace doble click en la barra de título la recogerá (shade en inglés): verá solamente la barra de título de la ventana. Puede restaurarla con otro doble click. Normalmente, verá la ventana que tiene el foco con un decorado de distinto color que las que no están enfocadas. Recuerde que las acciones que usted haga (como tipear algo) se ejecutan sobre la ventana enfocada. Puede cambiar el foco de una ventana a otra haciendo click sobre ellas (en el escritorio o en su nombre en el panel) o buscándolas con la combinación de teclas Alt + Tab.
Operaciones sobre ventanas:
Puede arrastrar y soltar los bordes para cambiar el tamaño de la ventana. Verá que el puntero cambia de forma. El mismo efecto se logra manteniendo presionada la tecla ALT y arrastrando cualquier parte de la ventana.
Puede mover la ventana arrastrando la barra de título, o manteniendo presionada la tecla ALT y arrastrando cualquier parte de la ventana.
Si hace click con el botón derecho en el botón maximizar, ampliará la ventana horizontalmente (Esto no funciona en el entorno GNOME). Con el botón del medio del mouse (si no lo tiene, con los botones izquierdo y derecho a la vez) hará un maximizado vertical (esto tampoco funciona en GNOME). Puede serle cómodo para trabajar.
El botón a la izquierda del título de la ventana, si aparece, ofrece las mismas funciones que hacer click derecho sobre la barra de título.
Recuerde el propósito general de hacer click derecho: presentar un menú de opciones contextuales de uso frecuente. Esas opciones serán distintas dependiendo de si hizo click sobre el área interna de la ventana o sobre el decorado, porque son dos cosas distintas.
La segunda parte importante del decorado es la barra de desplazamiento. Aparece generalmente a la derecha de la ventana si el contenido es demasiado para aparecer completo en la ventana. Usted puede pulsar en las flechas que la barra tiene para desplazarse hacia abajo y hacia arriba por el contenido de la ventana. Es posible, especialmente en navegadores de internet, que alguna página muestre una barra de desplazamiento horizontal.
La tercera y última parte importante del decorado es la barra de estado. Es la barra que aparece en la parte inferior de algunas aplicaciones. Puede brindar información sobre el menú que está seleccionando, o sobre lo que el programa hace.
Con esto esperamos haberle dado una buena introducción a lo que es un entorno gráfico. De ahora en adelante construiremos sobre estos cimientos, así que por favor esté seguro de haberlos entendido. Un truco final: los juegos de cartas que su distribución incluye le pueden ayudar mucho a dominar las técnicas de arrastrar y soltar, doble click, click e ícono. Además, son bastante divertidos y variados.
Administradores de Ventanas y Entornos Gráficos
Por el momento, dediquémonos a las cosas que sí se pueden hacer en modo gráfico. Le acompañaremos en un paseo por los principales entornos gráficos y administradores de ventanas que existen para Linux. Aclaremos primero que un administrador de ventanas es un programa que le proporciona la posibilidad básica de muestra y manejo de ventanas de aplicaciones. Un entorno gráfico es un administrador de ventanas con funcionalidades agregadas, como por ejemplo un portapapeles en el que copiar contenidos, applets de sonido y configuración, etc.
Entre los administradores de ventanas (o window managers) más populares se cuentan, por orden alfabético, Blackbox, Enlightenment, ICEwm, Sawfish, WindowMaker, y XFCE. Por otra parte, los dos entornos gráficos más poderosos y difundidos son GNOME y KDE. Veremos primero los entornos gráficos, ya que son los que más fácilmente se configuran y los que más funcionalidad incluyen; y luego le daremos bocados de algunos administradores de ventanas para que usted pruebe. Tenga en claro que dependiendo de su distribución algunos administradores de ventanas no vendrán incluídos y deberá buscarlos en internet.
• Entornos gráficos
Un entorno gráfico en Linux implica un proyecto que intenta resolver todas sus necesidades. Le proporcionará un administrador de ventanas, un panel de aplicaciones, una herramienta de configuración, un administrador de archivos, utilidades varias e incluso, a veces, aplicaciones de oficina. Los preferirá si su máquina es poderosa y a usted le gusta hacer las cosas en una interfase gráfica.
KDE - El Entorno de Escritorios K
KDE tiene opciones para hacer casi cualquier cosa, y tal vez esa sea a la vez su mayor ventaja y desventaja. Si busca un entorno más similar a Windows, o más configurable, esta es su parada.
Aspecto similar al de Windows. Ideal para PCS que cuentan con un mínimo de 128Mb de memoria RAM

Características:
- Panel al cual se le puede agregar numerosos Aplets (pequeños programas)
- Aspecto y comportamiento altamente configurables
- Explorador de archivos muy potente llamado KONQUEROR
- Centro de control similar al panel de control de Windows.


GNOME - El Entorno de Escritorio GNU
GNOME no es tan configurable como KDE, pero su interfase es más limpia. La idea actual de desarrollo de GNOME es "menos es más" y tiende a sacrificar una mayor configurabilidad por una mayor usabilidad. Verá que trabajar en GNOME le resultará muy simple, pero que le será un poco difícil alejarse de la interfase que los desarrolladores diseñaron. Esto puede ser nuevamente una gran ventaja o desventaja, dependiendo exclusivamente de usted.
Quizás posea a primera vista una interfaz menos familiar para los usuarios de Windows. Es el que más se utiliza junto con KDE. Utiliza una gran cantidad de recursos del ordenador (memoria y velocidad).
Es la principal alternativa existente a KDE para quienes están acostumbrados a Windows. Seguramente GNOME es una buena opción para quienes prefieren un entorno menos barroco que KDE, aunque quizás posea a primera vista una interfaz menos familiar para los usuarios de Windows.


• Administradores de ventanas
Si lo desea, puede también ver el funcionamiento de algunos de los administradores de ventanas más populares. Querrá usarlos si su máquina no es tan potente como para que un entorno gráfico completo funcione confortablemente; o si en realidad no necesita la "comodidad agregada" que ofrecen. Notará, por ejemplo, la diferencia en la velocidad de carga entre Blackbox y KDE. Si usted necesita trabajar con varias terminales abiertas, puede usar un simple administrador de ventanas para verlas al mismo tiempo.
Dado que los administradores de ventanas suelen ser complicados de configurar, es conveniente que usted no se meta con ellos si no se ve obligado o no tiene ganas de aprender.
WINDOW MAKER, BLACKBOX Y OTROS
Son entornos gráficos donde el método de trabajo es bastante diferente de otros entornos gráficos habituales (como Windows). Son recomendables cuando ya se tiene experiencia con otros métodos.
ICEWM
Es un entorno de ventanas con una barra tareas y un menú que recuerdan al entorno gráfico de Windows. Consume pocos recursos, aunque la carencia de un escritorio con iconos hace que no sea tan popular como KDE o GNOME.

FLUXBOX:
Un entorno de ventanas austero y elegante a la vez. Usa estrictamente la necesaria. Se necesita un periodo de adaptación para los usuarios de Windows. Recomendable para PCS con poca RAM.

XFCE:
Es un entorno de escritorio, bastante más sencillo que KDE y que GNOME. Excelente para PCS que poseen la memoria suficiente como para usar KDE o GNOME.

Sistema de Archivos - Linux

SISTEMA DE ARCHIVOS
INTRODUCCION
Todo disco duro se divide en sectores lógicos donde se guarda la información, esto sucede en todo sistema operativo y es inevitable. A su vez el disco se divide en ficheros. La primera vez que se almacena la información se realiza en forma secuencial; pero a medida que se extrae, borra y/o graba alguna parte de la misma se rompe con este orden ocurriendo la fragmentación de la información.
Por ello se cuenta con un encargado, por así decirlo, que mantiene actualizado un índice bastante complejo que le permite en cualquier momento encontrar la información específica que se requiere. Este encargado con su índice son el Sistema de Archivos.
Una de las grandes diferencias entre sistemas operativos, que hace una gran diferencia en cuanto a velocidad y confiabilidad, es el sistema de archivos.
Los sistemas FAT y NTFS se ven muy afectados por la fragmentación de archivos. Con el paso del tiempo el rendimiento del ordenador se degrada considerablemente y es necesario defragmentar el disco periódicamente, dependiendo del las condiciones de uso.
El sistema de archivos ext2 (Second Extended File System) fue lanzado en el año 1993 y ya en aquel entonces soportaba nombres de archivos de hasta 255 caracteres, atributos y permisos, y eliminaba el problema de la defragmentación.
FAT32 y NTFS no sólo todavía sufren la fragmentación sino que no son tan eficaces como ext2, y ni mencionar a ext3 con el agregado del "journaling" que garantiza recuperación instantánea en caso de perdidas de energía.

GLOSARIO

• Metadatos
Estructura interna de los datos de un sistema de archivos que garantiza el orden de la estructura y la disponibilidad de los datos del disco duro. En resumidas cuentas, se trata de los “datos sobre los datos”. Todo sistema de archivos posee su propia estructura de metadatos. Aquí es donde se encuentra en parte la causa de las diferencias en cuanto a rendimiento de los sistemas de archivos. Es extremadamente importante mantener intactos los metadatos, ya que de lo contrario se podría dañar todo el sistema de archivos.
• Inode
Los inodes contienen toda la información sobre un archivo: el nombre, el tamaño, el número de enlaces, la fecha, la hora en que fue creado, modificaciones, accesos como “señalador” (pointer) de los bloques del disco duro y dónde se encuentra grabado.
• Journal
En relación a un sistema de archivos, un journal o diario es una estructura interna del disco con un tipo de protocolo en el que el controlador del sistema de archivos introduce los (meta) datos del sistema de archivos que van a ser modificados. El “journaling” reduce enormemente el tiempo de elaboración de un sistema Linux, ya que de este modo el controlador del sistema de archivos no debe iniciar una búsqueda de los metadatos modificados en todo el disco. En vez de eso, basta con ver las entradas del diario.
DESARROLLO

SISTEMA DE ARCHIVOS

El “Sistema de Archivos” es la parte del sistema de administración del almacenamiento responsable, principalmente, de la administración de los archivos del almacenamiento secundario.
Es la parte del S. O. responsable de permitir “compartir controladamente” la información de los archivos.
El “Sistema de Archivos” es un componente importante de un S. O. y suele contener:
• “Métodos de acceso” relacionados con la manera de acceder a los datos almacenados en archivos.
• “Administración de archivos” referida a la provisión de mecanismos para que los archivos sean almacenados, referenciados, compartidos y asegurados.
• “Administración del almacenamiento auxiliar” para la asignación de espacio a los archivos en los dispositivos de almacenamiento secundario.
• “Integridad del archivo” para garantizar la integridad de la información del archivo.
El sistema de archivos está relacionado especialmente con la administración del espacio de almacenamiento secundario, fundamentalmente con el almacenamiento de disco.
Una forma de organización de un sistema de archivos puede ser la siguiente:
• Se utiliza una “raíz” para indicar en qué parte del disco comienza el “directorio raíz”.
• El “directorio raíz” apunta a los “directorios de usuarios”.
• Un “directorio de usuario” contiene una entrada para cada uno de los archivos del usuario.
• Cada entrada de archivo apunta al lugar del disco donde está almacenado el archivo referenciado.
En sistemas de archivo “jerárquicos” el nombre del sistema para un archivo suele estar formado como el “nombre de la trayectoria” del directorio raíz al archivo.





El sistema de archivos LINUX está caracterizado por:
• Una estructura jerárquica.
• Un tratamiento consistente de la información de los archivos.
• Protección de los archivos.
Funciones del Sistema de Archivos
Los usuarios deben poder crear, modificar y borrar archivos. Se deben poder compartir los archivos de una manera cuidadosamente controlada.
El mecanismo encargado de compartir los archivos debe proporcionar varios tipos de acceso controlado:
• Ej.: “Acceso de Lectura”, “Acceso de Escritura”, “Acceso de Ejecución”, varias combinaciones de estos, etc.
Se debe poder estructurar los archivos de la manera más apropiada a cada aplicación.
Los usuarios deben poder ordenar la transferencia de información entre archivos.
Se deben proporcionar posibilidades de “respaldo” y “recuperación” para prevenirse contra:
• La pérdida accidental de información.
• La destrucción maliciosa de información.
Se debe poder referenciar a los archivos mediante “Nombres Simbólicos”, brindando “Independencia de Dispositivos”.
En ambientes sensibles, el sistema de archivos debe proporcionar posibilidades de “Cifrado” y “Descifrado”.
El sistema de archivos debe brindar una interfase favorable al usuario:
• Debe suministrar una “visión lógica” de los datos y de las funciones que serán ejecutadas, en vez de una “visión física”.
• El usuario no debe tener que preocuparse por:
o Los dispositivos particulares.
o Dónde serán almacenados los datos.
o El formato de los datos en los dispositivos.
o Los medios físicos de la transferencia de datos hacia y desde los dispositivos.







TIPOS
A partir de la versión 2.4, el kernel ofrece una gran selección de sistemas de archivos. A continuación le mostramos un resumen de las funciones básicas de estos sistemas de archivos y sus ventajas.
1. ReiserFS
ReiserFS es producto de la labor de Hans Reiser y del equipo de desarrollo Namesys. ReiserFS se ha perfilado como una alternativa poderosa a Ext2. Sus grandes ventajas son: una mejor administración de la memoria del disco duro, un rendimiento optimizado del acceso al disco y una recuperación más rápida después de una caída del sistema. No obstante, ReiserFS concede mucha importancia a los metadatos pero no a los datos en sí. La próxima generación de ReiserFS incluirá data-journaling (se escribirán tanto datos como metadatos en el diario) así como accesos de escritura (véase data=ordered en Ext3). A continuación se describen con detalle las principales ventajas de ReiserFS:
Mejor administración de la memoria del disco duro
En ReiserFS, todos los datos se organizan en una estructura llamada B*-balanced tree. La estructura de árbol contribuye a una mejor administración de la memoria del disco duro, ya que los archivos pequeños se pueden guardar directamente en las hojas del B*tree (árbol), en lugar de guardarlos en otro lugar y luego tener que administrar el puntero (pointer) para que apunte al sitio indicado. Además, la memoria no se asignará en unidades de 1 a 4 Kb, sino en la unidad exactamente necesaria. Otra ventaja es el proceso dinámico de inodes.

Mejor rendimiento del acceso al disco duro
Se habrá dado cuenta de que en los archivos pequeños, tanto los datos del archivo como la información (inode) de “stat_data” se guardan uno al lado del otro. Basta con un único acceso al disco duro para suministrar toda la información necesaria.
Rápida recuperación tras una caída del sistema
Desde el contenido de un diario al seguimiento de las pequeñas modificaciones de metadatos, la comprobación del sistema de archivos se reduce a unos pocos segundos incluso en sistemas de archivos grandes.
2. Ext2
El origen de Ext2 se remonta a los primeros días de Linux. Su antecesor, el Extended File System fue implementado en abril de 1992 e integrado en Linux 0.96c. Este sufrió una serie de modificaciones y durante años se le conoció como Ext2 a la vez que se le consideró el sistema de archivos más popular de Linux. Con la introducción del sistema Journaling File y de su tiempo de elaboración tan sorprendentemente corto, Ext2 perdió importancia.
Estabilidad
Con el correr del tiempo, Ext2 ha sufrido muchas mejoras que le han hecho ganarse la reputación de ser “sólido como una roca”. En caso de una caída del sistema en la que el sistema de archivos no puede desmontarse adecuadamente, e2fsck inicia un análisis de los datos del sistema de archivos. Los metadatos se reconstruyen y los archivos o bloques de datos que quedan sueltos se guardan en un directorio denominado lost+found. En contraposición a (la mayoría) de los sistemas de archivos transaccionales o journaling, e2fsck analiza todo el sistema de archivos y no sólo los bits de metadatos modificados. Esto lleva más tiempo que la comprobación de los datos de protocolo de un sistema journaling. Dependiendo del tamaño del sistema de archivos, puede llegar a durar más de media hora. Por esta razón, Ext2 no se escoge para ningún servidor que deba tener un alto rendimiento. Debido a que Ext2 no debe hacerse cargo de ningún diario y a la vez necesita poca memoria, a menudo es más rápido que otros sistemas de archivos.
Fácil actualización
Tomando como base la fortaleza de Ext2, Ext3 podría llegar a convertirse en el sistema de archivos de la próxima generación. Su fiabilidad y estabilidad se complementarían perfectamente con las ventajas de los sistemas de archivos journaling.
3. Ext3
Ext3 fue concebido por Stephen Tweedie. A diferencia del resto de los sistemas de archivos de “última generación”, no está basado en un nuevo diseño, sino en Ext2. Ambos sistemas de archivos están estrechamente vinculados. Un sistema de archivos Ext3 se puede montar fácilmente sobre un sistema Ext2. La diferencia fundamental entre ambos radica en que Ext3 también soporta journaling.
Estas son brevemente las tres ventajas de Ext3:
Actualización sencilla y muy fiable de Ext2
Ya que Ext3 se basa en el código de Ext2, a la vez que comparten formato tanto para el disco como para los metadatos, las actualizaciones no son complicadas. Incluso se pueden llevar a cabo mientras el sistema de archivos Ext2 está montado. El proceso de cambio a otro sistema de archivos journaling, como por ejemplo ReiserFS, JFS, o XFS, puede llegar a ser muy trabajoso debido a que se deben realizar copias de seguridad de todo el sistema de archivos y después instalarlo desde cero. Sin embargo, el cambio a Ext3 puede ser una cuestión de minutos. Además es muy seguro, ya que resulta difícil que la reelaboración de todo un sistema de archivos desde cero no tenga errores. Si se tiene en cuenta la cantidad de sistemas Ext2 disponibles que esperan una actualización a un sistema de archivos journaling, se puede imaginar fácilmente el significado de Ext3 para muchos administradores de sistemas. El pasar de Ext3 a Ext2 es tan fácil como la actualización en sentido contrario. Tan solo se tiene que desmontar el sistema Ext3 y montarlo como Ext2.
Fiabilidad y rendimiento
Todos los sistemas de archivos journaling siguen el principio journaling de “sólo metadatos” (metadata-only). Esto significa que los metadatos permanecen en un estado coherente, lo que sin embargo no puede garantizarse automáticamente para los datos del sistema de archivos. Ext3 tiene capacidad para cuidar tanto de los metadatos como de los datos mismos. Se puede configurar individualmente el detalle con el que Ext3 debe ocuparse de los datos y metadatos. El grado más alto de seguridad (es decir, integridad de los datos) se consigue al arrancar Ext3 en modo data=journal; esto puede hacer que el sistema sea más lento, ya que se guardarán en el diario tanto los datos como los metadatos. Una posibilidad relativamente nueva consiste en la utilización del modo data=ordered, que garantiza la integridad tanto de los datos como de los metadatos a pesar de que sólo realiza journaling para los metadatos. El controlador del sistema de archivos reúne todos los bloques de datos relacionados con la actualización de los metadatos. Estos bloques quedan agrupados como “transacción” en los discos antes de que los metadatos sean actualizados. Con esto se consigue la coherencia de datos y metadatos sin pérdida de rendimiento. Un tercer tipo de modo es data=writeback. De esta forma se puede escribir datos en el sistema de archivos principal después de que los metadatos hayan pasado al diario. Para muchos, esta opción es la mejor configuración en cuanto a rendimiento. Sin embargo, con esta opción puede ocurrir que aparezcan viejos datos en los archivos después de haberse producido una caída del sistema mientras se garantiza la integridad del sistema de archivos. Mientras no se indique otra opción, Ext3 arrancará con la opción predeterminada data=ordered.
4. JFS
JFS, “Journaling File System”, fue desarrollado por IBM para AIX. La primera versión beta de JFS portada a Linux llegó al entorno Linux en el verano del año 2000. La versión 1.0.0 salió a la luz en el año 2001. JFS está diseñado para cumplir las exigencias del entorno de un servidor de alto rendimiento. Al ser un sistema de archivos de 64 bits, JFS soporta archivos grandes y particiones LFS (Large File Support), lo cual es una ventaja más para los entornos de servidor.
Un vistazo más detallado a JFS muestra por qué este sistema de archivos es una buena elección para su servidor Linux:
Journaling eficaz
Al igual que ReiserFS, JFS sigue el principio de “metadata only”. En vez de una comprobación completa, sólo se tienen en cuenta las modificaciones en los metadatos provocadas por las actividades del sistema. Esto ahorra una gran cantidad de tiempo en la fase de recuperación del sistema tras una caída. Las actividades simultáneas que requieren más entradas de protocolo se pueden unir en un grupo en el que la pérdida de rendimiento del sistema de archivos se reduce en gran medida gracias a múltiples procesos de escritura.
Eficiente administración de directorios
JFS abarca diversas estructuras de directorios. En pequeños directorios se permite el almacenamiento directo del contenido del directorio en su inode. En directorios más grandes se utilizan B+trees, que facilitan considerablemente la administración del directorio.
Mejor utilización de la memoria mediante la asignación dinámica de inodes
En Ext2 es necesario indicar el grosor del inode (la memoria ocupada por la información de administración) por adelantado. Con ello se limita la cantidad máxima de archivos o directorios de su sistema de archivos. Esto no es necesario en JFS, puesto que asigna la memoria inode de forma dinámica y la pone a disposición del sistema cuando no se está utilizando.
5. XFS
Pensado originariamente como sistema de archivos para sistemas operativos IRIX, SGI comenzó el desarrollo de XFS ya a principios de la década de los noventa. Con XFS consigue un sistema de archivos journaling de 64 bits de gran rendimiento adaptado a las necesidades extremas de hoy en día. XFS también está indicado para el trabajo con archivos grandes y ofrece un buen rendimiento en hardware de última generación. Sin embargo XFS, al igual que ReiserFS, tiene la desventaja de conceder mucha importancia a la integridad de los metadatos y muy poca a la de los datos:
Un breve resumen de las funciones clave de XFS aclarará por qué puede llegar a convertirse en un fuerte competidor de otros sistemas de archivos journaling en el tratamiento de datos.
Manejo de “grupos de asignación” (allocation groups)
En el momento de la creación de un sistema de archivos XFS, el dispositivo de bloque (block-device) que sirve de base al sistema de archivos se divide en ocho o más campos lineales de igual tamaño denominados grupos de asignación. Cada grupo de asignación administra inodes así como memoria libre. Se puede considerar a estos grupos prácticamente como sistemas de archivos dentro de sistemas de archivos. Puesto que estos grupos de asignación son bastante independientes, el kernel puede dirigirse a más de uno simultáneamente. Este concepto de grupos de asignación independientes satisface los requisitos de los sistemas con varios procesadores.
Alto rendimiento con eficiente administración de la memoria del disco
B+trees administran la memoria libre y los inodes dentro de los grupos de asignación. El manejo de B+trees contribuye al gran rendimiento de XFS. Una función única y característica de XFS es la llamada asignación retardada. XFS realiza la asignación de la memoria mediante la división en dos de los procesos. Una transacción “en suspenso” queda guardada en RAM y el espacio en la memoria queda reservado. XFS aún no decide dónde exactamente (en qué bloque del sistema de archivos) se almacenan los datos. Esta decisión se retrasará hasta el último momento. Con esto, algunos datos temporales no quedan nunca almacenados en el disco, ya que cuando llegue el momento de decidir el lugar de almacenamiento ya estarán obsoletos. Así, XFS aumenta el rendimiento y disminuye la fragmentación del sistema de archivos. Debido a que una asignación retardada tiene como consecuencia menos procesos de escritura que en otros sistemas de archivos, es probable que la pérdida de datos tras una caída del sistema durante el proceso de escritura sea mayor.
Preasignación para evitar la fragmentación del sistema de archivos
Antes de la escritura de los datos en el sistema de archivos, XFS reserva el espacio de memoria necesario para un archivo que vaya a ser asignado. De esta forma se reduce enormemente la fragmentación del sistema de archivos y el rendimiento aumenta, ya que el contenido de los archivos no queda dividido por todo el sistema de archivos.
Otros sistemas de archivos soportados
Principalmente se soportan para garantizar la compatibilidad y el intercambio de datos entre distintos medios o sistemas operativos.
cramfs Compressed ROM file system: un sistema de archivos comprimido con permiso de lectura para ROMs.
hpfs High Performance File System: el sistema de archivos estándar de IBM OS/2 — sólo se soporta en modo de lectura.
iso9660 sistema de archivos estándar en CD-ROMs.
ncpfs para montar volúmenes Novell a través de una red.
nfs Network File System: posibilita el almacenamiento de datos en el ordenador que se elija dentro de una red y permite garantizar el acceso a través de la red.
smbfs Server Message Block: utilizado por productos como por ejemplo Windows para el acceso de archivos a través de una red.
sysv Utilizado en SCO UNIX, Xenix y Coherent (sistemas UNIX comerciales para PCs).
ufs Utilizado en BSD, SunOS y NeXTstep. Sólo se soporta en modo de lectura.
umsdos UNIX on MSDOS: sistema de archivos basado en fat que emula las características de Unix (derechos, enlaces, nombres de archivo largos) mediante archivos especiales.
vfat Virtual FAT: extensión del sistema de archivos fat (soporta nombres de archivo largos).
ntfs Windows NT file system, sólo permiso de lectura.

Soporte de archivos grandes en Linux
Al principio, Linux sólo soportaba archivos con un tamaño máximo de 2 Gb. Debido a la creciente utilización de Linux por ejemplo en la administración de bases de datos o en la edición de datos de audio y vídeo, se ha hecho necesario el modificar el kernel y la librería GNU C (glibc) para que soporten archivos mayores de 2 Gb y se han introducido nuevas interfaces que pueden ser utilizadas por las aplicaciones. Hoy en día (casi) todos los sistemas de archivos importantes soportan LFS (Large File System – sistema de archivos grandes), lo que permite la edición de datos de gama alta.


Sist. de archivos Tamaño máx. archivo [Byte] Tamaño máx.sist.arch.[Byte]
Ext2 o Ext3 (1 kB tamaño bloque) 234 (16 GB) 241 (2 TB)
Ext2 o Ext3 (2 kB tamaño bloque) 238 (256 GB) 243 (8 TB)
Ext2 o Ext3 (4 kB tamaño bloque) 241 (2 TB) 244 (16 TB)
Ext2 o Ext3 (8 kB tamaño bloque) (sistema con páginas de 8 kB (como Alpha)) 246 (64 TB) 245 (32 TB)
ReiserFS 3.5 232 (4 GB) 244 (16 TB)
ReiserFS 3.6 (desde Linux 2.4) 260 (1 EB) 244 (16 TB)
XFS 263 (8 EB) 263 (8 EB)
JFS (512 Bytes tamaño bloque) 263 (8 EB) 249 (512 TB)
JFS (4 kB tamaño bloque) 263 (8 EB) 252 (4 PB)
NFSv2 (lado del cliente) 231 (2 GB) 263 (8 EB)
NFSv3 (lado del cliente) 263 (8 EB) 263 (8 EB)

La tabla describe los límites del formato en disco. El tamaño máximo de un archivo y un sistema de archivos para que puedan ser procesados correctamente por el kernel no ha de superar los siguientes límites (en el kernel 2.6):
• Tamaño de los archivos: en los sistemas de 32 bits, los archivos no pueden ser mayores de 2 TB (241 bytes).
• Tamaño de los sistemas de archivos: los sistemas de archivos pueden tener un tamaño de hasta 273 bytes, si bien todavía no existe ningún hardware que llegue hasta este límite.

Conversión de un sistema de archivos Ext2 a Ext3
Crear el diario (journal):
Ejecute el comando tune2fs -j como usuario root. tune2fs se encarga de crear el diario Ext3 con parámetros estándar. Si por el contrario prefiere definir usted mismo con qué tamaño y en qué dispositivo debe crearse el diario, ejecute tune2fs -J con los parámetros size= y device=. Puede obtener información adicional sobre tune2fs en las páginas del manual.
Determinar el tipo de sistema de archivos en /etc/fstab
Para que el sistema de archivos Ext3 sea detectado como tal, abra el archivo /etc/fstab y cambie el tipo de sistema de archivos de la partición correspondiente de ext2 a ext3. La modificación se aplicará tras reiniciar el sistema.
Ext3 para el sistema de archivos raíz root
Para arrancar el sistema de archivos raíz (root) en ext3, hace falta integrar adicionalmente los módulos ext3 y jbd en el RAM disk inicial initrd. A continuación introduzca estos dos módulos en el archivo /etc/sysconfig/kernel bajo INITRD_MODULES. Posteriormente ejecute el comando mk_initrd.