¿Qué sistema de archivos elegir para mi servidor NAS basado en Linux?

Elegir el sistema de archivos correcto para usarlo en un servidor NAS es una decisión muy importante, dependiendo del uso que le vayamos a dar, podremos elegir un sistema de archivos u otro, ya que podría proporcionarnos un mayor rendimiento, una mejor integridad de datos y otras características. Generalmente los sistemas operativos de los servidores NAS como QNAP, Asustor o Synology soportan el popular sistema de archivos EXT4 pero también Btrfs e incluso ZFS. ¿Qué sistema de archivos debo elegir para mi servidor NAS para ámbito doméstico o profesional?

¿Qué es un sistema de archivos y para qué sirven?

Todos los sistemas operativos incorporan un sistema de archivos, o varios sistemas de archivos diferentes, para controlar cómo se almacena y cómo se recupera la información de los diferentes soportes, como discos duros, unidades SSD y también unidades de almacenamiento extraíble como pendrives o tarjetas de memoria. Si no tuviéramos un sistema de archivos, el sistema operativo no sabría dónde termina un determinado dato grabado y dónde empieza el siguiente, por tanto, es uno de los aspectos más importantes que debemos tener en cuenta.

Las principales funciones de cualquier sistema de archivos es asignar espacio a los diferentes archivos, administrar el espacio libre, estructurar la información guardada para que sea accesible de forma fácil y rápida. Otro aspecto muy importante que debemos tener en cuenta son los sectores, más concretamente su tamaño, en estos sectores es donde se almacena la información. Otras características de los sistemas de archivos son que proporcionan métodos para crear, copiar, mover, renombrar e incluso eliminar los archivos y directorios que nosotros tenemos en el soporte. Los sistemas de archivos también incorporan algunas características muy importantes como listas de control de accesos (ACL) para controlar los permisos, mecanismos para evitar o mitigar la fragmentación, posibilidad de tener journaling (mejora la integridad del sistema de archivos) y la posibilidad de configurar cuotas de discos entre otras funcionalidades.

Actualmente disponemos de un total de tres sistemas de archivos diferentes que son ampliamente utilizados en servidores NAS de los diferentes fabricantes, y, por supuesto, en los sistemas operativos basados en Linux y FreeBSD para almacenamiento de datos en servidores, estos sistemas de archivos son EXT4, Btrfs y ZFS, los tres sistemas de archivos tienen características diferentes, y unos se comportan mejor en diferentes escenarios.

EXT4

EXT4 es el principal sistema de archivos de cualquier sistema operativo basado en Linux, este sistema de archivos es transaccional (con journaling), e incorpora mejoras muy importantes respecto a sus predecesores como soporte para volúmenes más grandes, menor uso de CPU y mejoras en la velocidad de lectura y escritura. Algunas características muy importantes de EXT4 es que permite la reserva de espacio en disco sin necesidad de rellenarlo todo con ceros, algo que se hacía habitualmente en otros sistemas de archivos, además, este espacio reservado suele ser contiguo con el objetivo de evitar o mitigar la fragmentación del sistema de archivos, esta función está relacionada con «Allocate-on-flush» o conocida como reserva de memoria retrasada, esto consiste en reservar el bloque de memoria justo cuando esté a punto de ser escrita en disco, esto mejora el rendimiento y reduce la fragmentación.

EXT4 dispone de técnicas para evitar la fragmentación como la que hemos explicado, pero también dispone de una herramienta para desfragmentar ficheros individuales o el volumen entero sin necesidad de desmontar el disco, aunque lógicamente, mientras está en proceso de desfragmentación tendremos un sistema de archivos más lento.

Este sistema de archivos tiene las siguientes características y límites:

  • Máximo tamaño del archivo: 16TiB usando bloques de 4K.
  • Máximo número de archivos: 4.000 millones
  • Tamaño máximo del nombre del archivo: 255 bytes
  • Tamaño máximo del volumen: 1EiB
  • Cifrado de datos transparente: sí
  • Copy on write: no
  • Compresión transparente: no
  • Deduplicación transparente: no

Una vez que hemos conocido las principales características de EXT4, vamos a hablar sobre Btrfs, el que se conoce como sucesor natural del sistema de archivos EXT4.

Btrfs

El sistema de archivos Btrfs nació como sucesor natural de EXT4, su objetivo es sustituirlo eliminando el mayor número de sus limitaciones, sobre todo lo referido al tamaño máximo de los ficheros. Las principales características de este sistema de archivos es que está orientado sobre todo a servidores, dispone de una asignación dinámica de inodos, no es necesario fijar un número máximo al crear el sistema de archivos como sí ocurre con EXT4, permite configurar volúmenes de manera muy avanzada, con la posibilidad de configurar snapshots o instantáneas escribibles y también permite snapshots de snapshots. Otras características son que permite realizar mirroring y striping a nivel de objetivo si tenemos varios discos duros, es capaz de realizar comprobación de datos y metadatos en tiempo real para mejorar al máximo la integridad de los datos.

Este sistema de archivos utiliza copy-on-write del registro de todos los datos y metadatos, también permite la compresión en línea para ahorrar espacio en disco. Btrfs es capaz de comprobar el sistema de archivos sin necesidad de desmontarlo, y si lo desmontamos la comprobación es realmente rápida, por supuesto, dispone de un modo optimizado para unidades SSD y permite desfragmentarlo sin desmontarlo.

Este sistema de archivos tiene las siguientes características y límites:

  • Máximo tamaño del archivo: 16EiB.
  • Máximo número de archivos: 18 trillones.
  • Tamaño máximo del nombre del archivo: 255 bytes
  • Tamaño máximo del volumen: 16EiB.
  • Cifrado de datos transparente: no
  • Copy on write: sí
  • Compresión transparente: sí
  • Deduplicación: sí

Ahora que ya conoces las principales características de Btrfs, vamos a hablar sobre ZFS, uno de los sistemas de archivos más avanzados disponibles para sistemas operativos Linux y Unix.

ZFS

El sistema de archivos ZFS es uno de los más avanzados que existen actualmente, destaca por su gran capacidad, por su gran seguridad respecto a la integridad de los datos y por su gran rendimiento en lectura y escritura. ZFS utiliza «Storage Pools» o también conocidos como vdevs, a diferencia de los sistemas de archivos tradicionales que se ponen encima de un dispositivo hardware como un disco duro, y por tanto, necesitan un gestor de volúmenes por separado. Gracias a estos vdevs, podremos configurar diferentes «pools» de tipo simple, espejo o utilizar los populares RAID-Z para proporcionar tanto redundancia de datos como un mayor rendimiento. Además, al sistema de archivos ZFS se le pueden instalar unidades SSD que actuarán como caché, o también conocido como «ZFS Intent Log» o «ZIL» para mejorar aún más el rendimiento.

Este sistema de archivos hace uso de un modelo transaccional copy-on-write, esto hace que los datos activos no se sobreescriben nunca, sino que se copian a otro lugar y los datos modificados se escriben en él, con el objetivo de mejorar enormemente la integridad de los archivos en caso de corte eléctrico. También debemos tener en cuenta que para reducir la sobrecarga se usa el ZIL cuando se necesitan escrituras síncronas. La parte negativa de CoW es que tendremos una alta fragmentación, y actualmente ZFS nos dispone de ningún método para desfragmentar el sistema de archivos, aunque en las próximas versiones se está trabajando en mejorar este aspecto.

Otras características de ZFS es que el sistema de ficheros se denomina dataset, el cual está dentro de un «storage pools», este dataset puede ser de tipo filesystem que es como un volumen normal y corriente, o también como un zvol que sería un dispositivo de bloques. Dependiendo de nuestras necesidades, tendremos que crear un tipo de dataset u otro. Otra característica muy importante de los dataset son los snapshots o también conocidas como instantáneas, el sistema de archivos ZFS es capaz de realizar un total de 281 billones de instantáneas, además, se hacen en tiempo real por cómo está creado internamente este sistema de archivos.

Este sistema de archivos nos permite configurar la compresión en línea, haciendo uso de diferentes algoritmos de compresión para mejorar la velocidad de lectura y escritura o para mejorar la compresión y ahorrar más espacio. También podremos configurar la función de deduplicación, una característica que nos permitirá ahorrar mucho espacio en disco, la parte negativa es que consume una gran cantidad de memoria RAM, por lo que es posible que no te interese demasiado activar esta funcionalidad.

Este sistema de archivos tiene las siguientes características y límites:

  • Máximo tamaño del archivo: 16EiB.
  • Máximo número de archivos: 281 billones.
  • Tamaño máximo del nombre del archivo: 255 bytes
  • Tamaño máximo del volumen: 16EiB.
  • Cifrado de datos: sí
  • Copy on write: sí
  • Compresión transparente transparente: sí
  • Deduplicación transparente: sí

En RedesZone hemos explicado en detalle este sistema de archivos ZFS, tanto sus características como su configuración en diferentes sistemas operativos orientados a servidores NAS. Ahora que ya sabemos cuáles son los tres sistemas de archivos para servidores NAS más utilizados, vamos a ver sus puntos fuertes y débiles.

¿Qué sistema de archivos elegir para mi NAS?

Una vez que hemos visto las principales características de los diferentes sistemas de archivos que podemos usar en un servidor NAS doméstico y/o profesional, vamos a ver las ventajas y desventajas de cada uno de ellos.

El sistema de archivos EXT4 es el más antiguo de todos, y está más que probado, por lo que este sistema de archivos es muy estable, de hecho, sigue siendo el sistema de archivos predeterminado por la gran mayoría de distribuciones Linux como Debian, Ubuntu o los sistemas operativos de QNAP, Synology y Asustor. Si necesitas almacenar una gran cantidad de datos, crear RAID y todo lo que ello conlleva, y obtener el mejor rendimiento en lectura/escritura con el menor consumo de recursos posible, seguramente EXT4 cumpla todas tus necesidades. Este sistema de archivos incorpora journaling, por lo que no deberías tener pérdida de datos en caso de corte de alimentación, no obstante, Btrfs y ZFS en este aspecto son claramente mejores.

Btrfs mejora muchos aspectos negativos de EXT4, como las limitaciones de tamaño de archivo y más, este sistema de archivos usa copy-on-write y fue diseñado para servidores muy grandes donde vayamos a almacenar muchísima información, por tanto, tenemos muchas características avanzadas que EXT4 no incorpora, como cifrado de datos transparente, compresión y deduplicación. También debemos tener en cuenta que incorpora instantáneas integradas, algo que EXT4 no tiene, soporta RAID y una asignación flexible de los inodos. No obstante, se ha comprobado que este sistema de archivos Btrfs consume más recursos del sistema que EXT4, además, obtendremos menos velocidad de lectura y escritura bajo las mismas condiciones (mismo hardware y mismo tipo de archivos a transferir).

El sistema de archivos ZFS es uno de los más avanzados que existen actualmente, este sistema de archivos es similar a Btrfs pero incorpora funcionalidades realmente interesantes como la posibilidad de agregar nuevos dispositivos al almacenamiento actual y añadir nuevo espacio inmediatamente, haciendo mucho más flexibles los «RAID» que teníamos en los otros sistemas de archivos. ZFS es sinónimo de escalabilidad, gran capacidad de almacenamiento de datos, protección contra la corrupción de los datos (integridad) y una eficiente compresión de datos, deduplicación y posibilidad de hacer instantáneas de forma rápida. Otras funciones son que permite verificar la integridad de forma continua y hacer una reparación automática de forma completamente transparente. La parte negativa de ZFS es que consume muchos recursos, de memoria RAM sobre todo, además, si activas la deduplicación tendrás un consumo de RAM adicional bastante importante.

Si tienes un servidor NAS de gama baja-media está claro que el sistema de archivos que debes usar es EXT4, en el caso de tener un NAS de gama media-alta o alta, puedes optar por Btrfs o ZFS, dependiendo de si tu sistema operativo lo soporta. Si vas a usar ZFS debes tener en cuenta que la deduplicación consume una gran cantidad de memoria RAM, es un hándicap que debemos pagar por ahorrar una gran cantidad de espacio de almacenamiento.

¡Sé el primero en comentar!