lunes, 13 de diciembre de 2010

¿Que sistema de archivos deberías elegir en Linux?

Nota previa:
Este salió ayer en HTG, el original lo encuentran aquí, describe las características básicas de los sistemas de archivos más usados por las distribuciones de Linux. 

Los sistemas de archivos son una de las capas que subyacen bajo su sistema operativo acerca de las que habitualmente ud no piensa, a menos que se enfrente a la gran cantidad de opciones que ofrece Linux. Aquí les muestro cómo tomar una decisión sobre qué sistema de archivos debería usar.
El paisaje en lo que a sistemas de archivos se refiere en Linux es drásticamente diferente al de Windows y OS X. En Windows y OS X ud puede encontrar software que añada soporte para sistemas de archivos no estándar, pero ambos sistemas operativos sólo pueden ser instalados usando su sistema de archivos nativo y el soporte para sistemas de archivos de terceros debe ser añadido posteriormente.
Linux en el otro extremo tiene una amplia gama de sistemas de archivos compatibles integrado en el kernel. Pero, ¿cómo se supone que sepas cual elegir a la hora de la instalación? Vamos a echar un vistazo a algunas de las opciones más populares disponibles y te daremos casos prácticos a considerar, la elección dependerá finalmente de sus necesidades.

¿Que es el Journaling?
Antes de meternos a la madriguera del conejo hablando de opciones, echémosle una ojeada a el Journaling. En realidad, lo único que necesita saber acerca del Journaling es que cada sistema de archivos moderno lo utiliza de una u otra forma y en cualquier sistema de escritorio o portátil que estés configurando con Linux querrás utilizar un sistema de ficheros con journaling.

Journaling solo es utilizado al escribir en disco y actúa como una especie de reloj de perforación para todas las escrituras. Esto soluciona el problema de la corrupción del disco, cuando el ordenador se bloquea o se pierde la alimentación en medio de una operación de escritura. Sin un Journal (bitácora en español) el sistema operativo no tendría forma de saber si el archivo fue escrito por completo al disco.
Con un Journal el archivo es escrito primero en la bitácora, y marcado, a continuación, el sistema escribe el archivo en el disco cuando esté listo. Una vez que se ha escrito correctamente en el disco, se borra del Journal, y la operación es completada. Si la energía se pierde mientras se está escribiendo en el disco, el sistema de archivos puede consultar en  el Journal las operaciones que aún no han sido completadas y recordar dónde quedaron.
La mayor desventaja del Journaling es que sacrifica algo de rendimiento a cambio de la estabilidad. La operación representa una sobrecarga adicional en las operaciones de escritura, pero el sistema de archivos resuelve esto evitando escribir todo el archivo (al journal). En vez de esto solo escribe la metadata, el inode o la localización en disco al Journal.

Opciones de sistemas de archivos. 
Al mirar a algunos de los principales sistemas de archivos disponibles para Linux nos referiremos brevemente a cada uno y daremos un par de sugerencias referidas a cuando y cuando no, querrá utilizar el sistema de archivos basado en sus características. Esto de ninguna manera significa que estos sistemas de archivos no se puedan utilizar en otros casos, estas sugerencias solo apuntan a las áreas en las que destaca el sistema de archivos determinado.







Ext. Significa sistema de archivos extendido y fue el primer sistema de archivos creado específicamente para Linux. Ha tenido cuatro revisiones cada una de las cuales ha añadido características bastante significativas. La primera versión de Ext fue una importante actualización del sistema de ficheros Minix utilizado en ese momento, pero carecía de las características principales que se utilizan en la computación de hoy en día.
  • En este momento usted probablemente no debería utilizar Ext en cualquier máquina, debido a sus limitaciones y su antiguedad. Además, ya no está soportado en muchas distribuciones.
Ext2 es un sistema de ficheros que carece de Journaling, y cuando se introdujo fué el primero en permitir atributos de archivos extendidos y unidades de 2 terabyte. Debido a que Ext2 no utiliza Journaling ejecuta significativamente menos escrituras a disco.
  • Debido a menores requerimientos de escritura, y por lo tanto, menos operaciones de borrado, es ideal para la memorias flash sobre todo en las unidades flash USB.
  • Los SSD modernos alcanzan una mayor vida útil y características adicionales que no pueden negar la necesidad de utilizar un sistema de archivos sin Journaling.
Ext3 es básicamente Ext2 con Journaling. El objetivo era que Ext3 fuera compatible con sistemas de archivo del tipo ext2, y por lo tanto se podrían hacer conversiones entre los dos tipos sin necesidad de formatear el disco. Mantener esta compatibilidad significó que muchas de las limitaciones de tipo Ext2, todavía existen en Ext3. El beneficio que ofrece la compatibilidad hacia atrás es el hecho de que la mayoría de las pruebas, corrección de errores, y casos de uso para Ext2 son válidos para Ext3 por lo que es estable y rápido.
  • Puede utilizar este SA si necesita actualizar un sistema de archivos Ext2 para incluir Journaling.
  • Probablemente obtenga el mejor rendimiento en bases de datos de Ext3 debido a años de optimizaciones.
  • No es la mejor elección para servidores de archivos, ya que carece de instantáneas de disco y la recuperación de archivos es muy difícil si han sido eliminados.
Ext4 , al igual que Ext3, mantiene la compatibilidad hacia atrás con sus predecesores. De hecho, ud puede montar Ext2 y Ext3 como un sistema de archivos Ext4 en Linux y solo esto puede significar una mejora de rendimiento bajo ciertas condiciones. También puede montar un sistema de archivos Ext4 como Ext3 sin efectos dañinos.
Ext4 reduce la fragmentación de archivos, permite mayores volúmenes y archivos, y emplea localización retrasada que ayuda a incrementar la vida de las memorias flash, y disminuye la fragmentación. A pesar de que se utiliza en otros sistemas de archivos, la localización retrasada implica un riesgo potencial de pérdidas de datos y ha sido por esto objeto de algunos análisis.
  • Significa una mejor opción comparado con Ext3 para SSD y mejora en el rendimiento general de las dos anteriores versiones Ext. Si este es el sistema de archivos soportado por defecto en su distribución, probablemente deberá continuar con él en cualquier equipo de escritorio o computadora portátil que esté instalando.
  • También muestra números de rendimiento prometedores para servidores de base de datos, pero no lleva tanto tiempo en servicio como Ext3. 

Btrfs , pronunciado "Butter" (mantequilla) o "Better" (mejor) FS, está siendo desarrollado por Oracle y tiene características similares a las que ofrece ReiserFS. Las siglas significan sistema de archivos de árbol-B y permite agrupación de unidades, instantáneas sobre la marcha, compresión transparente, y desfragmentación en línea.  Está siendo específicamente diseñado para empresas pero la mayoría de las distro para consumidores planea con el tiempo, adoptarlo como su sistema de archivos por defecto.
Aunque no es estable en algunas distribuciones, con el tiempo será el reemplazo por defecto de Ext4 y en la actualidad ofrece conversión sobre la marcha desde Ext3/4. También es clave tener en cuenta que el desarrollador principal para ext3 / 4, Theodore Ts'o, ha dicho que Btrfs es el "camino a seguir".
  • Btrfs posibilita un sistema servidor de archivos muy bueno debido a su rendimiento, a las instantáneas, y a muchas otras características.
  • Oracle también está trabajando en un reemplazo para NFS y CIFS llamado CRFS que cuenta con un mejor rendimiento y más características. Por lo que es la mejor opción para un servidor de archivos.
  • Las pruebas de rendimiento han demostrado que queda por detras de Ext4 en memorias flash como los SSD, como servidor de base de datos, e incluso en algunos casos de lectura/escritura en sistemas generales .
  • Ubuntu 10.10 sólo permite instalar Btrfs si utilizas el CD de instalación alternativo basado en texto y su partición /boot aún requiere un sistema de ficheros Ext.
ReiserFS fué un gran salto adelante para los sistemas de ficheros de Linux cuando se introdujo en 2001 dado que incluía muchas características nuevas que Ext nunca sería capaz de implementar. ReiserFS fue sustituido por Reiser4 en 2004 que mejoró en muchas de las características que estaban incompletas o de las que carecía de la versión inicial. Sin embargo el desarrollo Reiser4 es muy lento y todavía no tiene el apoyo suficiente en el kernel principal de Linux. ReiserFS es la única versión disponible actualmente en muchas distribuciones.
  • Tiene un gran rendimiento para archivos pequeños, como registros y es adecuado para bases de datos y servidores de correo electrónico.
  • ReiserFS puede ser expandido de forma dinámica, pero no reducido y no admite cifrado a nivel de sistema de archivo.
  • El futuro de Reiser4 es cuestionable y Btrfs es probablemente una mejor opción.
XFS fue desarrollado por Silicon Graphics en 1994 para su propio sistema operativo y más tarde fue portado a Linux en 2001. Es comparable a Ext4 es algunos aspectos, ya que también utiliza localización retrasada para ayudar con la fragmentación de archivos y no lo permite para instantáneas montadas. XFS ha demostrado proporcionar un buen rendimiento con archivos de gran tamaño y tiene la capacidad para cambiar de tamaño, sin embargo, no se puede reducir un volumen XFS.
  • Bueno para servidores de archivos multimedia a causa de la transferencia constante de archivos de gran tamaño.
  • La mayoría de las distribuciones requieren una partición /boot separada porque XFS y GRUB pueden comportarse de modos impredecibles
  • Su rendimiento con archivos pequeños no es tan bueno como otros sistemas de archivos siendo una mala elección para bases de datos, correo electrónico, y otros servidores que tienen grandes cantidades de logs.
  • No está tan bien soportado como Ext para computadoras personales y no tiene mejoras significativas en el rendimiento o las características sobre Ext3/4.
JFS fue desarrollado por IBM en 1990 y más tarde portado a Linux. Ofrece un bajo uso de CPU y un buen rendimiento tanto para archivos grandes como pequeños. Las particiones JFS se pueden cambiar de tamaño dinámicamente, pero no pueden reducirse como ReiserFS y XFS. Fue muy bien planeado y tiene soporte en la mayoría de las distribuciones importantes, sin embargo, las pruebas de producción en servidores Linux no es tan extensa como Ext, ya que fue diseñado para AIX.
  • Buen rendimiento para archivos grandes y pequeños y debido a su bajo uso de CPU es probablemente mejor para los servidores y equipos de baja potencia.
  • No tiene herramientas integradas para agrupación de unidades por lo que no puede ser tan extensible como Btrfs pero una Netbook con sólo una unidad de disco duro puede ser una buena opción
  • También ejecuta revisiones rápidas de discos en comparación con Ext, pero ha habido algunos reportes de daños en el disco después de su uso a largo plazo.
ZFS es digno de ser mencionado, ya que también esta siendo desarrollando por parte de Oracle y tiene características similares a Btrfs y ReiserFS. Algunas noticias en los últimos años propagaron el rumor de que Apple lo adoptaría como su sistema de archivos predeterminado. Debido a su licencia, Sun CDDL, no es compatible para ser incluido en el kernel de Linux. Sin embargo está soportado a través de el sistema de archivos de Linux en el espacio de usuario (FUSE en inglés), lo que hace posible el uso de ZFS.
  • Muestra un gran rendimiento en arreglos de discos de gran tamaño.
  • Soporta una gran cantidad de características avanzadas incluyendo agrupacion de unidades, instantáneas, y división dinamica de discos.
  • Puede ser difícil de instalar en Linux, ya que requiere FUSE y podría no ser compatible con su distribución.
SWAP no es en realidad un sistema de archivos. Se utiliza como memoria virtual y no tiene una estructura de sistema de archivos. No se puede montar y leer, pero es utilizado por el kernel para escribir páginas de memoria en el disco. Normalmente sólo se utiliza cuando el sistema se queda sin memoria física, o cuando se pone el equipo en hibernación, pero es importante saber a que se refiere su herramienta de particionado cuando pide espacio para SWAP.
Para saber más puedes consultar la página de Wikipedia sobre la comparación de los sistemas de archivos .

Entonces, ¿cuál debería elegir?

Para casos de uso general en su computadora portátil o de escritorio, probablemente querrá seguir con Ext4 (si su distribución lo utiliza por defecto), ya que es un sistema de archivos moderno y compatible con la mayoría de las distribuciones, pero si tienes un necesidad específica, ahora tienes más información para hacer una elección.