Linux admite una amplia variedad de implementaciones de sistemas de archivos. Algunos están optimizados para la velocidad, otros para una gran capacidad de almacenamiento y algunos están diseñados para dispositivos más pequeños. Cada uno de estos diferentes tipos de sistemas de archivos tiene una forma única de organizar los datos.
El papel del Sistema de Archivos Virtual
Con tantas implementaciones diferentes disponibles, las aplicaciones necesitan una forma coherente de interactuar con ellas. Aquí es donde entra en juego el Sistema de Archivos Virtual (VFS). El VFS es una capa de abstracción en el kernel de Linux que se sitúa entre las aplicaciones y los diversos sistemas de archivos. Proporciona una interfaz única y uniforme, asegurando que las aplicaciones puedan funcionar sin problemas independientemente del tipo de sistema de archivos subyacente. Esta flexibilidad le permite tener múltiples sistemas de archivos en sus discos, a menudo organizados a través de particiones, lo que cubriremos en una lección futura.
Journaling para la integridad de los datos
La mayoría de los tipos de sistemas de archivos modernos incluyen una característica llamada journaling (registro por diario) por defecto. Para comprender su importancia, imagine copiar un archivo grande cuando su computadora pierde energía repentinamente. En un sistema de archivos sin journaling, esta interrupción podría provocar un archivo corrupto y un estado inconsistente del sistema de archivos. Al reiniciar, su sistema necesitaría realizar una verificación completa del sistema de archivos (fsck), lo que puede llevar mucho tiempo en discos grandes.
Un sistema de archivos con journaling evita este problema. Antes de realizar una operación de escritura, primero registra los cambios previstos en un archivo de registro especial, o "journal". Una vez que la operación se completa con éxito, el journal se actualiza para marcar la tarea como finalizada. Si ocurre un fallo, el sistema simplemente puede leer el journal al reiniciar para ver qué operaciones estaban en curso y devolver rápidamente el sistema de archivos a un estado consistente. Esto reduce drásticamente el tiempo de recuperación y protege contra la corrupción de datos.
Tipos comunes de sistemas de archivos de Linux
Aquí hay algunos de los tipos de sistemas de archivos de linux más comunes que encontrará:
- ext4 - Como la última versión del Sistema de Archivos Extendido nativo de Linux, ext4 es el predeterminado para muchas distribuciones. Es compatible con versiones anteriores de sus predecesores (ext2/ext3) y admite volúmenes de disco muy grandes (hasta 1 exabyte) y tamaños de archivo (hasta 16 terabytes). Es una opción confiable y estándar para la mayoría de los casos de uso.
- Btrfs - A menudo llamado "B-tree FS", Btrfs es un sistema de archivos moderno con características avanzadas como instantáneas integradas, copias de seguridad incrementales y rendimiento mejorado. Aunque ahora se considera estable y es el predeterminado en algunas distribuciones, todavía está en desarrollo activo.
- XFS - Un sistema de archivos con journaling de alto rendimiento que sobresale en el manejo de archivos grandes y operaciones de E/S paralelas. Esto lo convierte en una excelente opción para sistemas que administran grandes cantidades de datos, como servidores multimedia.
- NTFS y FAT - Estos son tipos de sistemas de archivos estándar de Windows. Linux proporciona soporte completo para leerlos y escribirlos, lo cual es útil para sistemas de arranque dual.
- HFS+ - El sistema de archivos principal utilizado por macOS. Linux tiene soporte de solo lectura para él por defecto, con soporte de escritura disponible a través de herramientas adicionales.
Puede ver qué sistemas de archivos están en uso en su máquina con el comando df:
pete@icebox:~$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 6461592 2402708 3707604 40% /
udev devtmpfs 501356 4 501352 1% /dev
tmpfs tmpfs 102544 1068 101476 2% /run
/dev/sda6 xfs 13752320 460112 13292208 4% /home
El comando df informa sobre el uso del espacio en disco del sistema de archivos. El indicador -T muestra específicamente el tipo de sistema de archivos. Exploraremos esta herramienta con más detalle más adelante.