martes, 18 de marzo de 2008

Sistemas de Archivos

Un sistema de Archivo provee una base para sus archivos a ser almacenados en su Disco Duro. Para entender mejor esta ideología veamos a los discos duros sin formatear como un terreno vacío, cuando en el terreno vacío levantamos cuatro paredes y una infraestructura, se podría decir que le damos un formato, hemos particionado el terreno en un numero determinado de cuartos y es cuando ya se puede ingresar los elementos en la casa tales como: cama, cocina, mesa, sillas, etc., cada uno en el cuarto o habitación correspondiente.

Volviendo a los discos duros, un disco sin formato no tiene sectores o áreas en donde se pueda almacenar un dato, para que el disco este disponible y utilizable se le da un formato, esto crea en el disco sectores para proveer el acceso al disco.

Al darle un formato al disco tenemos que hacer uso de un metodo de particionamiento que nos permita almacenar los datos, a esto se le denomina sistema de archivo, es decir como trabajara el disco duro para almacenar los datos. (GNU/Linux) soporta diferentes tipos de sistemas de archivos, esto es por que (GNU/Linux) usa un software en el kernel conocido como driver que entiende la estructura interna de un sistema de archivo específico.

Para proveer un acceso a un amplio rango de tipos diferentes de sistemas de archivos, (GNU/Linux) provee un metodo general que es simplemente extendido. (GNU/Linux) provee un sistema de archivos virtual (VFS/Virtual File System) que es como una capa que un driver de sistema de archivos lleva dentro, proporcionando un acceso basado en archivos para la información.

Cuando se crean particiones, por lo general usted a creado un sistema de archivos en una partición para hacer uso del nuevo espacio alocado, como ya habia explicado con el ejemplo del terreno. Varios tipos de sistemas de archivos estan disponibles para este propósito.

Según la historia EXT2, es un sistema de archivos muy rápido y simple que no tiene la caracteristica de journaling.

Debido a que (GNU/Linux) tiene un amplio soporte a multiple sistemas de archivos, hace que la opción de seleccionar no solo uno, sino que más de un sistema de archivos de forma opcional por el mismo usuario y no por el propio sistema, un sistema operativo libre para el usuario y no cerrado.



SISTEMAS DE ARCHIVOS QUE USAN JOURNALING



El journaling con respecto al sistema de archivos, es un área del disco usada para almacenar información con respecto a cambios pendientes hechos en el sistema, los sistemas de archivos contienen dos tipos generales de información: archivos y directorios actuales donde se almacenan los datos y sistemas de archivos de metadatos, lo cual es información interna acerca de los propios sistema de archivos.

Existen situaciones en las que usar journaling es una muy mala idea, por ejemplo las bases de datos que ya contiene su propio sistema de log de cambios y que son capaces de usar metodos internos propios de recuperación.


  1. EXT2: Ha sido por defecto el sitema de archivos preferido de (GNU/Linux) por muchos años, sigue siendo usado para discos ram iniciales. No usa Journaling debido a su extrema estabilidad y ligereza en terminos de overhead, esto se debe a que mantiene la integridad de los datos y metadatos.
  2. EXT3: Este sistema de archivos surge al agregarle al sistema EXT2 el método de journaling, esto permite actualizaciones de manera fácil de EXT2 a EXT3, se permiten tres modos de journaling:
  • Journal: Logs todos cambios a los sitemas de archivos de datos y metadatos.
  • Ordered: Logs solo los cambios a los sistemas de archivos de metadatos.
  • Writeback: Logs solo los cambios a los sitemas de archivos de metadatos pero dependientes en el proceso estandard de escritura de sistema de archivos para escribir cambios de datos de archivos al disco.
  1. ReiserFS: Es uno de los sistemas mas estabables con journaling para (GNU/Linux) disponibles. Este sistema no trabaja bloque por bloque como lo hace EXT2, sino que en cambio trabaja con un algoritmo de árbol binario para encontrar espacio libre y archivos existentes en el disco. Este b-tree le agrega un simple pero elegante método para tratar con archivos pequeños, es decir archivos más pequeños que el bloque, esto lo hace almacenandolo en el arbol binario en lugar de ser redireccionado. Además almacena fragmentos de archivos empaquetandolos junto a otros bloques libres del disco, aprovechando al maximo toda la capacidad del disco sin perder bloques del mismo.
  2. JFS: Similar a ReiserFS, ya que usa un b-tree(árbol binario), esta basado en transacciones pesadas, provee un método muy rápido para el alojamiento de datos basado en extendidos, es decir a una serie continua de bloques de datos que pueden se alojados, leidos, escritos y manejados a la vez.
  3. XFS: Es un SGI de alto rendimiento para sistemas de archivos de 64-bits, originalmente fue desarrollado para ser usado con el sistema operativo IRIX. Máquinas SGI tradicionalmente han tenido que trabajar con largos juegos de datos en máquinas con más de un procesador, lo cual refleja como trabaja el sistema XFS. Ofrece dominios independientes de datos atravéz del sistema de archivos. Permitioendo al sistema multiprocesador, acceder y cambiar los datos en diferentes grupos de alojamientos idependientes de cada uno. Quizás el hecho que varios procesadores esten leyendo, escribiendo y modificando datos no suene tradicional para un simple disco de una PC hogareña, si lo tiene para una empresa en la cuan se pueda tener un área de almacenamiento compartido en la red proveida por multiples discos. De igual forma como ReiserFS y XFS, usa journaling para almacenar la información acerca de los archivos metadatos y emplea un b-tree para manejar alojamiento de datos. En adición tiene como característica usar un b-tree para almacenar la información del espacio libre. Ayudando a incrementar la velocidad de alojamiento de bloques para nueva información. No es un sistema de archivos atractivo para usuarios hogareños ya que es un sistema de archivos empresarial para manegar archivos de datos realmente gigantescos.
  4. VFAT/NTFS: Son sistemas de archivos de Microsoft, debido a que la manera en que trabaja el sistema de archivos VFAT(Virtual File Allocation table), fue liberado de forma libre, (GNU/Linux) soporta el manejo de particiones bajo el sistema de archivos FAT, permitiendo la edición del contenido del propio sistema, en cambio Microsoft no ha liberado la manera en que el sistema NTFS(New Technology File System) trabaja, por lo tanto NTFS esta en desarrollo y ha sido recientemente agregado al nucleo.