¿Qué sistema de archivos de GNU/Linux elegir?

Este artículo se puede leer en aproximadamente 677 segundos

El sistema de archivos es una de las capas por debajo del SO en la que el usuario generalmente no piensa, a menos que se enfrenten a una instalación de GNU/Linux. Este SO permite elegir el sistema de archivos a utilizar, y la mayoría de las veces el usuario no conoce sobre las diferencias de cada una de las opciones.

Disk

El soporte de los sistemas de archivos de GNU/Linux es notoriamente distinto al de Windows y OS X. En Windows y OS X podrás encontrar software que otorgue soporte a sistemas de archivos no-estándar, pero ambos SO pueden ser instalados únicamente en sus sistemas de archivo nativos, y a partir de allí se puede agregar soporte de terceros.

 

En contraste, GNU/Linux tiene un gran conjunto de sistemas de archivos soportados en su kernel. Pero, ¿cómo se supone que sepas cuál elegir al momento de la instalación?

¿Qué es el journaling?

Antes que nada, deberemos tener una noción básica de lo que es el journaling. Lo único que debes tener en claro, es que todo sistema de archivos moderno usa alguna forma de journaling y que en cada computadora de escritorio o dispositivo móvil en el que instales GNU/Linux querrás usar un sistema de archivos con journaling

 

El journaling entra en acción únicamente cuando se escribe en un disco y actúa como si fuera un tipo de reloj de personal para todas las escrituras. Esto soluciona el problema de una posible corrupción en el disco ante un posible inconveniente: por ejemplo, cuando se está escribiendo y la computadora crashea o se corta la luz. Sin el journal, el sistema operativo no tendría forma de saber si el archivo fue escrito de forma completa y correcta.

 

Funciona de la siguiente manera (a grandes rasgos): el archivo es primero escrito en el journal, se ingresa y cuando esté listo, se escribe el archivo en el disco. Una vez que se haya completado exitosamente la operación, es archivo es eliminado del journal, se retira y la operación se considera terminada. Si se pierde la energía eléctrica durante la escritura, el sistema de archivos puede revisar el journal de todas las operaciones que no se hayan declarado como terminadas y determinar en qué punto se debe reanudar.

 

Journaling

 

La mayor contra del journaling es que sacrifica parte del rendimiento del sistema a cambio de la estabilidad. Puede producirse un overhead por escribir un archivo en el disco, pero los sistemas de archivos solucionan esto no escribiendo el archivo completo en el journal. Sólo se escriben la metainformación, el inodo o la locación, antes de que el archivo se escriba en el disco en su totalidad.

Sistemas de archivos

Como estaremos echando un vistazo a gran parte de los sistemas de archivos disponibles para GNU/Linux, sólo nos referiremos brevemente a cada uno y daremos algunas sugerencias respecto a cuándo usar o no usar el sistema de archivos en cuestión. Esto no significa que esos sistemas de archivos no puedan ser utilizados en otros casos, sino que remarcamos las áreas en que cada sistema de archivos encajará estupendamente.

 

Ext

 

Ext viene de Extended File System y fue el primer sistema creado específicamente para GNU/Linux. Actualmente tiene 4 revisiones y cada una de ellas ha agregado características significativas. La primera versión de Ext fue una considerable actualización del sistema usado en ese momento, Minix, pero carece de la mayoría de las características utilizadas en la computación actual.
 
Debido a su antiguedad y a sus limitaciones no es un sistema que te convendría utilizar actualmente. Además, ya no tiene soporte de la mayoría de las distribuciones.

 

Ext2 no es un sistema con journaling, y cuando fue lanzado fue el primero en permitir atributos de archivo extendidos y discos de 2 terabytes. Como Ext2 no utiliza journal, procesa menor cantidad de escrituras aplicadas al disco.

  • Debido a los bajos requerimientos de escritura, y por consiguiente formateos más superficiales, es ideal para memorias flash, especialmente en dispositivos USB.
  • Los modernos discos de estado sólido (SSDs) tienen una vida útil mayor y características adicionales que hacen que no necesiten utilizar sistemas de archivos con journaling.

Ext3 es simplemente Ext2 con journaling. El objetivo de Ext3 era ser compatible con Ext2 y de esa forma los discos podrían convertirse entre los dos sistemas sin la necesidad de un formateo. Al querer mantener la compatibilidad, gran parte de las limitaciones de Ext2 todavía existen en Ext3. Pero por otro lado, es beneficioso ya que la mayoría de los tests, bug fixes, y casos de uso para Ext2 también aplican a Ext3, haciéndolo estable y eficiente.

  • Te conviene utilizarlo si quieres hacer que un sistema con Ext2 tenga journaling.
  • Debido a los años de optimización, probablemente obtengas la mayor performance al utilizar este sistema para bases de datos.
  • No es la mejor opción para servidores de archivos ya que carece de snapshots del disco y la recuperación de archivos puede tornarse complicada.

Ext4, como Ext3, mantiene compatibilidad retroactiva. De hecho, podrás montar unidades con Ext2 y Ext3 como una unidad Ext4 y con simplemente eso podrás incrementar la performance del sistema bajo ciertas condiciones. También puedes montar un sistema Ext4 como un Ext3 sin efectos no deseados.

 

Ext4 reduce la fragmentación de archivos, permite mayores dimensiones de volúmenes y archivos, y emplea asignación retrasada que ayuda a la fragmentación y a aumentar la vida útil de las memorias flash. Si bien esto es utilizado en otros sistemas de archivos, la asignación retrasada puede provocar la pérdida de datos (esto ha sido objeto de varios estudios).

  • Es una mejor opción para SSDs (en vez de Ext3) y mejora la performance general en comparación a las versiones de Ext anteriores. Utilízalo si es el sistema de archivos soportado por defecto en tu distribución.
  • Si bien no tiene tanta antigüedad como Ext3, demuestra un excelente desempeño para servidores de bases de datos.

BtrFS

 

BtrFS, pronunciado como Butter FS o Better FS, está siendo desarrollado por Oracle y contiene funcionalidades similares a las de ReiserFS. Su nombre viene de B-Tree File System y permite drive pooling, snapshots on-the-fly, compresión transparente y desfragmentación online. Está siendo específicamente diseñado para empresas, pero la mayoría de las distribuciones de consumo tienen planes de adoptar esta tecnología como por defecto eventualmente.
 
Si bien todavía no es estable en varias distribuciones, busca ser el reemplazo de Ext4: ofrece conversión on-the-fly desde Ext3/4. También es interesante notar que el principal desarrollador de Ext3/4, Theodore Ts’o, ha dicho que BtrFS es el camino a seguir.

  • BtrFS funciona perfectamente para servidores de archivos debido a su desempeño, a los snapshots y a muchas otras características.
  • Oracle también está trabajando en un reemplazo para NFS y CIFS llamado CRFS que cuenta con una mayor rendimiento y otras características interesantes. Esto lo convierte en la mejor opción para un servidor de archivos.
  • Las pruebas de rendimiento han demostrado cierto retraso respecto a Ext4 en memorias flash como los SSDs, como en servidores de bases de datos, e incluso en algunos casos de lectura/escritura sobre otras tecnologías.
  • Ubuntu 10.10 sólo permite la utilización de BtrFS a través del instalador sin interfaz gráfica (text based alternate installer) y aún así la partición /boot sigue requiriendo un sistema Ext.

Remera ReiserFS
(más información en VivaLinux!)

 

ReiserFS fue un gran avance para los sistemas de archivos en GNU/Linux cuando se introdujo en el 2001. Incluyó muchas de características nuevas que Ext nunca pudo implementar. ReiserFS fue reemplazado por Reiser4 en el 2004 que mejoró sustancialmente varios aspectos que no estaban o estaban incompletos en el lanzamiento inicial. Sin embargo, el desarrollo de Reiser4 es bastante lento y todavía no tiene soporte en el kernel principal de GNU/Linux. ReiserFS es la única versión actualmente disponible en varias distribuciones.

  • Tiene un excelente rendimiento para archivos pequeños como logs, y se adapta perfectamente servidores de bases de datos y de e-mails.
  • ReiserFS puede ser dinámicamente expandido pero no comprimido y no soporta cifrado FS level.
  • EL futuro de Reiser4 está siendo cuestionado ya que BtrFS es una mejor opción.

Silicon Graphics

 

XFS fue desarrollado por Silicon Graphics en 1994 para su propio sistema operativo (IRIX 5.3), y fue liberado bajo la GNU General Public License en Mayo de 2000 y posteriormente portado a GNU/Linux en el 2001. Es directamente comparable a Ext4 en algunos aspectos ya que también utiliza asignación retrasada para ayudar a la fragmentación de archivos y no permite snapshots montados. XFS se ha demostrado proveer gran desempeño con archivos grandes y tiene la capacidad de ser redimensionado, sin embargo no podrás comprimir un volumen XFS.

  • Es ideal para servidores de archivos multimedia ya que tiene un rendimiento constante para archivos de gran tamaño.
  • La mayoría de las distribuciones requieren que la partición /boot esté separada ya que la compatibilidad entre XFS y GRUB puede ser impredecible.
  • El rendimiento con archivos más pequeños no es tan bueno respecto a otros sistemas, haciendo que sea una mala elección para servidores de bases de datos, e-mails, y otros que utilizan mucha cantidad de logs.
  • No está tan soportado como Ext para computadoras de uso personal y no tiene una mejora de desempeño significativa o características que superen a Ext3/4.

IBM

 

JFS fue desarrollado por IBM en 1990 y luego fue portado a GNU/Linux. Su nombre proviene de Journaling File System. Se caracteriza por su bajo uso del CPU y por el buen rendimiento, tanto para archivos grandes como para archivos de menor tamaño. Las particiones JFS pueden ser dinámicamente redimensionadas pero no pueden ser comprimidas, como en ReiserFS y en XFS. Fue extremadamente bien planificado y tiene soporte en la mayoría de las más grandes distribuciones, sin embargo el testing en servidores GNU/Linux no ha sido tan extenso como con Ext, ya que fue diseñado para AIX.

  • Excelente desempeño para archivos de cualquier tamaño, y por su uso limitado del CPU es probablemente la mejor opción para servidores y computadoras de bajo consumo.
  • No tiene herramientas de drive pooling embebidas. Esto hace que no sea tan expandible como otros sistemas (como BtrFS), pero para por ejemplo una netbook con un solo disco rígido es una buena opción.
  • Provee un checkeo de discos muy veloz en comparación con Ext, pero han habido ciertos reportes de corrupción de discos en usos a largo plazo.

Oracle

 

ZFS es un sistema digno de mencionar ya que también está siendo desarrollado por Oracle y tiene características similares a BtrFS y a ReiserFS. Se escuchó hablar de él hace poco tiempo cuando se rumoreaba que Apple iba a utilizarlo como sistema de archivo por defecto. Debido a su licencia, Sun CDDL, no es compatible con el kernel de GNU/Linux. No obstante, tiene soporte a través del Sistema de archivos en Espacio de Usuario de GNU/Linux (FUSE) que hace posible la utilización de ZFS.

  • Muestra un gran rendimiento en grandes gabinetes de discos (disk arrays).
  • Soporta una gran cantidad de opciones avanzadas, incluyendo drive pooling, snapshots y creación de bandas en discos dinámicos (dynamic disk striping).
  • Puede ser un tanto difícil de instalar en GNU/Linux ya que requiere de FUSE y no es una característica soportada por muchas distribuciones.

Swap no es un sistema de archivos propiamente dicho, pero es importante conocer esta opción cuando el sistema solicita una partición Swap. Es utilizado como memoria virtual y no tiene una estrucutra de sistema de archivos. No puede ser montado y leído, simplemente es utilizado por el kernel para escribir páginas de memoria en el disco. Es utilizado únicamente cuando la computadora se queda sin memoria física o cuando se utiliza la hibernación.

 

Pueden obtener más información en esta tabla comparativa de sistemas de archivos (en inglés), o en los diferentes vínculos del artículo.

Entonces, ¿cuál elegir?

Para el caso de un uso general en tu computadora de escritorio o dispositivo móvil, probablemente te convenga utilizar ext4 (si tu distribución la utiliza por defecto), ya que es un sistema de archivos moderno que es soportado en la mayoría de las distribuciones. Pero si tienes alguna necesidad específica, ahora tienes más información para tomar tu decisión.

 

Como plus también les adjunto un gráfico en donde podrán ver (de una forma muy sencilla) la jerarquía estándar de un sistema de archivos en GNU/Linux.

 

GNU/Linux standard filesystem hierarchy

 

Mucha de la terminología utilizada no tiene una traducción directa, preferí dejarla tal cual antes de que puedan darse malentendidos. Si leen algo que no es correcto, les pido me comenten y me avisen. Espero que les haya servido el artículo, ¡elijan sabiamente!. ¡Saludos!

 

Vía | How To Geek

 
 

iPad Executive Jacket - Synthetic Leather

Funda para iPad

Cuero Sintético

Aluminum Hard-Side Wallet

Billetera de Aluminio

 

Te interesó esta nota? Leé más!

6 comentarios en “¿Qué sistema de archivos de GNU/Linux elegir?

  1. Pingback: Tweets that mention ¿Qué sistema de archivos de GNU/Linux elegir? | WebAyunate -- Topsy.com

  2. Vale aclarar que el desarrollo de ReiserFS ya no esta en manos de su autor original, Hans Reiser debido a que está encarcelado por el asesinato de su esposa .. hecha esta aclaracion, se entiende un poco mejor la imagen de la remera que postearon.

    Guest

  3. Exactamente, por eso dejamos el link a VivaLInux! en donde explicaban más o menos el caso de Reiser :)
    No dejamos la aclaración porque no queríamos entrar en detalles sobre cada sistema de archivos

    ¡Gracias por dejarnos tu comentario!

    Saludos

  4. Pingback: No más problemas para ver tus discos en GNU/Linux: Aprende a editar /etc/fstab | WebAyunate

Dejar un comentario

Tu email no será publicado. Los campos requeridos son marcados con *

*

Podés usar etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>