Sistemas de archivos soportados por linux (algunos de ellos)
Hace unos dias hice un post sobre el particionado del disco en linux y mencionaba algunos sistemas de archivos sin dar mucha explicacion. Por ese motivo ahora les traigo en detalle cuales son los sistemas de archivos mas comunes en linux. Si bien el pinguiño maneja fat,ntfs,hfs, no son incluidos en el post porque son nativos de otros sistemas.
ext3
ext3 (third extended filesystem o "tercer sistema de archivos extendido" ) es un sistema de archivos con registro por diario (journaling). Es el sistema de archivo más usado en distribuciones Linux, aunque en la actualidad está siendo remplazado por su sucesor, ext4
Ventajas
Aunque su velocidad y escalabilidad es menor que sus competidores, como JFS, ReiserFS o XFS, tiene la ventaja de permitir actualizar de ext2 a ext3 sin perder los datos almacenados ni tener que formatear el disco. Tiene un menor consumo de CPU y está considerado más seguro que otros sistemas de ficheros en Linux dada su relativa sencillez y su mayor tiempo de prueba.
El sistema de archivo ext3 agrega a ext2 lo siguiente:
* Registro por diario. (Journaling)
* Índices en árbol para directorios que ocupan múltiples bloques.
* Crecimiento en línea.
Límites de tamaño
Ext3 tiene dos límites de tamaño distintos. Uno para archivos y otro para el tamaño del sistema de archivos entero. El límite del tamaño del sistema de archivos es es 231−1 bloques
Tamaño del bloque | Tamaño máximo de los archivos | Tamaño máximo del sistema de ficheros
1 KiB | 16 GiB | <2 TiB
2 KiB | 256 GiB | <4 TiB
4 KiB | 2 TiB | <8 TiB
8 KiB | 2 TiB | <16 TiB
Desventajas
Funcionalidad
Como ext3 está hecho para ser compatible con ext2, la mayoría de las estructuras del archivación son similares a las del ext2. Por ello, ext3 carece de muchas características de los diseños más recientes como las extensiones, la localización dinámica de los inodos, y la sublocalización de los bloques. Hay un límite de 31998 subdirectorios por cada directorio, que se derivan de su límite de 32 links por inodo. Ext3, como la mayoría de los sistemas de archivos actuales de Linux, no puede ser chequeado por el fsck mientras el sistema de archivos está montado para la escritura. Si se intenta chequear un sistema de ficheros que está montado puede detectar falsos errores donde los datos no han sido volcados al disco todavía, y corromper el sistema de archivos al intentar arreglar esos errores.
Desfragmentación
No hay herramienta de desfragmentación online para ext3 que funcione en nivel del sistema de archivos. Existe un desfragmentador offline para ext2, e2defrag, pero requiere que el sistema de archivos ext3 sea reconvertido a ext2 antes de iniciarse. Pero dependiendo de los bits encendidos en el sistema, e2defrag puede destruir datos. No sabe como tratar la mayoría de las nuevas características de ext3. Hay herramientas de usuario para desfragmentar como Shake y Defrag. Shake trabaja localizando para todo el archivo como una operación, lo que generalmente causa que el localizador encuentre espacio continuo en el disco. También intenta escribir archivos usados al mismo tiempo que otros. Defrag trabaja copiando cada archivo sobre sí mismo. De todas formas solo funcionan si el sistema de archivos esta razonablemente vacío. No existe una verdadera herramienta de desfragmentacion para ext3. Como se viene diciendo, la guía de administración de Linux dice: "Los modernos sistemas de archivos de Linux mantienen la fragmentación al mínimo manteniendo los bloques de un archivo juntos, aunque no puedan ser guardados en sectores consecutivos. Algunos sistemas de archivos, como ext3, localizan efectivamente los bloques libres más cercanos a otros en el archivo. Por ello no es necesario preocuparse por la fragmentación en un sistema de Linux" Mientras ext3 es más resistente a la fragmentacián que Fat, nada evita que los sistemas ext3 se puedan fragmentar con el tiempo. Consecuentemente el sucesor de ext3, ext4, incluye una utilidad de desfragmentación y soporte para extensiones (regiones contiguas del fichero).
Compresión
El soporte para la compresión está disponible como un parche no oficial para ext3. Este parche es un porte directo de e2compr pero necesita un mayor desarrollo ya que todavía no implementa el journaling. El actual parche es llamado e3compr
No hay comprobacion en el diario
Ext3 no hace la suma de verificación cuando está escribiendo en el diario. Si barrier = 0 no está habilitado como una opción de montaje, y si el hardware está escribiendo fuera de la orden, se corre el riesgo de una corrupción muy amplia del sistema de archivos en caso de que haya un fallo repentino del hardware.

Comparativa ext3-ext4
ext4
ext4 (fourth extended filesystem o «cuarto sistema de archivos extendido») es un sistema de archivos con registro por diario (en inglés Journaling), anunciado el 10 de octubre de 2006 por Andrew Morton, como una mejora compatible de ext3. El 25 de diciembre de 2008 se publicó el kernel Linux 2.6.28, que elimina ya la etiqueta de "experimental" de código de ext4.
Las principales mejoras son:
Soporte de volúmenes de hasta 1024 PiB.
Soporte añadido de extent.
Menor uso del CPU.
Mejoras en la velocidad de lectura y escritura.
Mejoras
Sistema de archivos de gran tamaño
El sistema de archivos ext4 es capaz de trabajar con volúmenes de hasta 1 exbibyte y ficheros de tamaño de hasta 16 TiB.
Extents
Los extents han sido introducidos para reemplazar al tradicional esquema de bloques usado por los sistemas de archivos ext2/3. Un extent es un conjunto de bloques físicos contiguos, mejorando el rendimiento al trabajar con ficheros de gran tamaño y reduciendo la fragmentación. Un extent simple en ext4 es capaz de mapear hasta 128MiB de espacio contiguo con un tamaño de bloque igual a 4KiB.
Asignación retrasada de espacio
Ext4 hace uso de una técnica de mejora de rendimiento llamada Allocate-on-flush, también conocida como reserva de memoria retrasada. Consiste en retrasar la reserva de bloques de memoria hasta que la información esté a punto de ser escrita en el disco, a diferencia de otros sistemas de archivos, los cuales reservan los bloques necesarios antes de ese paso. Esto mejora el rendimiento y reduce la fragmentación al mejorar las decisiones de reserva de memoria basada en el tamaño real del fichero.
Chequeo del sistema de ficheros más rápido
En ext4, los grupos de bloques no asignados y secciones de la tabla de inodos están marcados como tales. Esto permite a e2fsck saltárselos completamente en los chequeos y en gran medida reduce el tiempo requerido para chequear un sistema de archivos del tamaño para el que ext4 está preparado. Esta función está implementada desde la versión 2.6.24 del kernel Linux.
Timestamps mejorados
Puesto que los ordenadores se tornan en general cada vez más rápidos y que Linux está pasando a ser cada vez más usado en aplicaciones críticas, la granularidad de los timestamps basados en segundos se está volviendo insuficiente. Para resolver esto, ext4 tendrá timestamps medidos en nanosegundos. Ésta función está actualmente implementada en la versión 2.6.23 del kernel. Adicionalmente se han añadido 2 bits del timestamp extendido a los bits más significativos del campo de segundos de los timestamps para retrasar casi 500 años el problema del año 2038.
Ext3 vs Ext4
Softpedia ha ejecutado otra prueba distinta en un sistema Ubuntu y descubierto que el uso de Ext4 ahorra hasta 8,7 segundos durante el arranque del sistema.
Ubuntu 8.10 con sistema de ficheros Ext3 arranca en 31,8 segundos (en un sistema AMD Sempron)
Ubuntu 9.04 Alpha (Build 20090112.1) con sistema de ficheros Ext3 arranca en 28,3 segundos (en un sistema AMD Sempron)
Ubuntu 9.04 Alpha (Build 20090112.1) con sistema de ficheros Ext4 arranca en 23,1 segundos (en un sistema AMD Sempron)
Ubuntu 8.10 con sistema de ficheros Ext3 arranca en 26,8 segundos (en un sistema Intel Core 2 Duo
Ubuntu 9.04 Alpha (Build 20090112.1) con sistema de ficheros Ext3 arranca en 24,5 segundos (en un sistema Intel Core 2 Duo)
Ubuntu 9.04 Alpha (Build 20090112.1) con sistema de ficheros Ext4 arranca en 21,4 segundos (en un sistema Intel Core 2 Duo)
ReiserFS
ReiserFS es un sistema de archivos de propósito general, diseñado e implementado por un equipo de la empresa Namesys, liderado por Hans Reiser.
Actualmente es soportado por Linux y existen planes de futuro para incluirlo en otros sistemas operativos. También es soportado por Windows (de forma no oficial), aunque por el momento de manera inestable y rudimentaria (ReiserFS bajo windows).
A partir de la versión 2.4.1 de Linux, ReiserFS se convirtió en el primer sistema de ficheros con journal en ser incluido en el núcleo estándar. También es el sistema de archivos por defecto en varias distribuciones, como SuSE (excepto en openSuSE 10.2 cuyo formato por defecto es ext3), Xandros, Yoper, Linspire, Kurumin Linux, FTOSX, Libranet y Knoppix.
Con la excepción de actualizaciones de seguridad y parches críticos, Namesys ha cesado el desarrollo de ReiserFS (también llamado reiser3) para centrarse en Reiser4, el sucesor de este sistema de archivos.
Características
ReiserFS ofrece funcionalidades que pocas veces se han visto en otros sistemas de archivos:
*Journaling. Esta es la mejora a la que se ha dado más publicidad, ya que previene el riesgo de corrupción del sistema de archivos.
*Reparticionamiento con el sistema de ficheros montado y desmontado. Podemos aumentar el tamaño del sistema de ficheros mientras lo tenemos montado y desmontado (online y offline). Para disminuirlo, únicamente se permite estando offline (desmontado). Namesys nos proporciona las herramientas para estas operaciones, e incluso, podemos usarlas bajo un gestor de volúmenes lógicos como LVM o EVMS.
*Tail packing, un esquema para reducir la fragmentación interna.
Rendimiento
Comparado con ext2 y ext3 en el uso de archivos menores de 4k, ReiserFS es normalmente más rápido en un factor de 10–15. Esto proporciona una elevada ganancia en las news, como por ejemplo Usenet, caches para servicios HTTP, agentes de correo y otras aplicaciones en las que el tiempo de acceso a ficheros pequeños debe ser lo más rápida posible.
Desventajas
Los usuarios que usen como sistema de ficheros ext2, deben formatear sus discos, aunque no así los que usen ext3.
ReiserFS en versiones del kernel anteriores a la 2.4.10 se considera inestable y no se recomienda su uso, especialmente en conjunción con NFS
Algunas operaciones sobre archivos (por ejemplo unlink(2)) no son síncronas bajo ReiserFS, lo que pueden causar comportamientos extraños en aplicaciones fuertemente basadas en locks de archivos.
No se conoce una forma de desfragmentar un sistema de archivos ReiserFS, aparte de un volcado completo y su restauración.
Tempranas implementaciones de ReiserFS (anteriores a la incluida en el kernel 2.6.2), eran susceptibles de problemas de escrituras fuera de orden, lo que provocaba que archivos siendo escritos durante una caída del sistema, ganaran un pico de bytes extras de basura en el siguiente montado del sistema de archivos. La implementación actual de journaling, es correcta en este aspecto, manteniendo el journaling ordenado, del estilo de ext3.
Reiser4
Actualmente no se distribuye de forma conjunta con el kernel de Linux y por tanto no es soportado por muchas distribuciones. De hecho, su predecesor, Reiser3 se encuentra mucho más expandido. Reiser4 se encuentra disponible en la rama -mm del kernel de Linux, mantenida por Andrew Morton.
Características
*Journaling más eficiente gracias a la técnica de "wandering log".
*Soporte más eficiente de archivos pequeños, en términos de espacio en disco y velocidad gracias a "tail packing".
*Administración más rápida de directorios con un número elevado de ficheros.
*Infraestructura de plugins más flexible (a través de tipos especiales de metadatos: cifrado, compresión).
*Soporte transaccional.
*Optimización dinámica de la estructura del disco a través del método "allocate-on-flush", llamado "delayed allocation" en el sistema de ficheros XFS.
*Transacciones atómicas.
*Integración de metadatos en el espacio de nombres del sistema de archivos.
*Algunas de las características más avanzadas de Reiser4 (como transacciones definidas por el usuario) no se encuentran disponibles debido a la falta de una API en la capa VFS del kernel para ellas.
*Actualmente, Reiser4 carece de algunas utilidades estándar, como un repacker (similar a un desfragmentador proporcionado con otros sistemas de ficheros). Sus creadores dicen que se implementará más tarde; o más temprano si alguien les paga.
Rendimiento
En el año 2004, las pruebas de rendimiento realizadas por Namesys, mostraron que Reiser4 es de 10 a 15 veces más rápido que ext3 en la administración de ficheros más pequeños de 1KB. En el uso diario, las pruebas sugirieron que duplicaría el rendimiento respecto a ext3.Otras pruebas mostraron que Reiser4 era más lento en otras operaciones.
link:
JFS
Journaling File System (JFS) es un sistema de archivos de 64-bit con respaldo de transacciones creado por IBM. Esta disponible bajo la licencia GNU GPL. Existen versiones para AIX, eComStation, OS/2, sistemas operativos Linux y HP-UX
Fue diseñado con la idea de conseguir "servidores de alto rendimiento y servidores de archivos de altas prestaciones, asociados a e-business". Según se lee en la documentación y el código fuente, va a pasar un tiempo antes de que la adaptación a Linux este finalizada e incluida en la distribución estándar del kernel. JFS utiliza un método interesante para organizar los bloques vacíos, estructurándolos en un árbol y usa una técnica especial para agrupar bloques lógicos vacíos.
JFS fue desarrollado para AIX. La primera versión para Linux fue distribuida en el verano de 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 en el que sólo cuenta el funcionamiento. Al ser un sistema de ficheros de 64 bits, JFS soporta ficheros grandes y particiones LFS (del inglés Large File Support), lo cual es una ventaja más para los entornos de servidor.
Características
Eficiente respaldo de transacciones (Journaling).
JFS, al igual que ReiserFS, sigue el principio de metadata only. En vez de una completa comprobación 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 ficheros se reduce en gran medida mediante 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 Inode. En directorios más grandes se utiliza B-trees, que facilitan considerablemente la administración del directorio.
Mejor utilización de la memoria mediante adjudicación dinámica de Inodes.
Con ext2 debe dar por anticipado el grosor del Inode (la memoria ocupada por la información de administración). Con ello se limita la cantidad máxima de ficheros o directorios de su sistema de ficheros. JFS le ahorra esto, puesto que asigna memoria Inode de forma dinámica y la pone a su disposición cuando no se está utilizando.
XFS
XFS es un sistema de archivos de 64 bits con journaling de alto rendimiento creado por SGI (antiguamente Silicon Graphics Inc.) para su implementación de UNIX llamada IRIX. En mayo del 2000, SGI liberó XFS bajo una licencia de código abierto.
XFS se incorporó a Linux a partir de la versión 2.4.25, cuando Marcelo Tosatti (responsable de la rama 2.4) lo consideró lo suficientemente estable para incorporarlo en la rama principal de desarrollo del kernel. Los programas de instalación de las distribuciones de SuSE, Gentoo, Mandriva, Slackware, Fedora Core, Ubuntu y Debian ofrecen XFS como un sistema de archivos más. En FreeBSD el soporte para solo-lectura de XFS se añadió a partir de Diciembre de 2005 y en Junio de 2006 un soporte experimental de escritura fue incorporado a FreeBSD-7.0-CURRENT.
Características
Capacidad
XFS soporta un sistema de archivos de hasta 9 exabytes, aunque esto puede variar dependiendo de los límites impuestos por el sistema operativo. En sistemas Linux de 32 bits, el límite es 16 terabytes.
Registro de Bitácora (Journaling)
XFS provee soporte para llevar un registro (journaling), donde los cambios al sistema de archivos primero son escritos a un diario o journal antes de que se actualicen los datos del disco. El journal es un buffer circular de bloques del disco que no son parte del sistema de archivos. En XFS el registro (journal) contiene entradas 'logicas' que describen a un alto nivel las operaciones que se están realizando, al contrario de otros sistemas de archivo con un registro (journal) 'fisico', que guardan una copia de los bloques modificados durante cada transacción. Las actualizaciones del registro (journal) se realizan asincrónicamente para evitar una baja en el rendimiento. En el caso de una caída repentina del sistema, las operaciones inmediatamente anteriores a la caída pueden ser terminadas, garantizando así la consistencia del sistema. La recuperación se realiza automáticamente a la hora del montaje del sistema de archivos y la velocidad de recuperación es independiente del tamaño del sistema de archivos. Incluso si alguna información que fuese modificada inmediatamente antes de la caída del sistema no fuese escrita al disco, XFS se encarga de borrar todos los bloques de datos sin escribir, eliminando así cualquier compromiso de seguridad.
http://es.wikipedia.org/wiki/Ext4
http://es.wikipedia.org/wiki/XFS
http://es.wikipedia.org/wiki/ReiserFS
http://es.wikipedia.org/wiki/Ext3
http://es.wikipedia.org/wiki/Reiser4
http://es.wikipedia.org/wiki/JFS
http://abismo-digital.com.ar/abismodigital/index.php/2009/03/08/ext4-explicado-sencillamente/
http://www.euskalnet.net/morka/pagina_nueva_9.htm