Sistemes de fitxers

Quan treballes amb emmagatzematge, hi ha diferents sistemes de fitxers que pots triar.

Aquests sistemes de fitxers són una part importantíssima per qualsevol sistema operatiu, ja que sense ells no podriem emmagatzemar dades en dispositius físics. Però saps realment què és un sistema de fitxers, quins tipus hi ha o quines diferències tenen entre si?

Si has respòs no a alguna d’aquestes preguntes, segueix llegint que les resoldrem en aquest post. Sense més preàmbuls, comencem.

Un sistema de fitxers és bàsicament és una capa entre el sistema operatiu i el hardware d’emmagatzematge perquè el sistema pugui emmagatzemar i accedir a les dades.

Sense un sistema de fitxers, un dispositiu d’emmagatzematge contindria dades abocades directament sense ordre i el sistema no sabria distingir quines dades pertanyen a on.

A més d’aquestes característiques bàsiques de gestió de fitxers, també ofereixen funcionalitats com l’encriptació, l’administració eficient de l’espai i la preservació de la integritat de les dades

Els sistemes de fitxers emmagatzemen les dades per blocs de tamanys predefinits.

Un bloc és la unitat bàsica d’emmagatzematge.

Si un fitxer omple un bloc i necessita més espai, omplirà un altre bloc que estigui disponible, encara que no sigui contigu. Quan un disc té els seus fitxers separats en blocs que no estan seguits, direm que tenim fragmentació.

Al haver-hi tantes possibilitats de tenir els fitxers fragmentats, el sistema de fitxers ha de tenir un “índex” per saber quin bloc és de cada fitxer. Aquest índex és diferent segons el sistema de fitxers.

Aquesta familia és el sistema de fitxers per defecte a Linux des de fa uns anys.

Aquests sistemes de fitxers tenen certes coses en comú, entre elles l’ús d’inodes.

  • Segona versió del sistema de fitxers ext, introduïda l’any 1993

  • No té journaling

  • Mida màxima de fitxers pot variar entre 16GB i 2TB

  • Mida màxima del sistema de fitxers entre 2TB i 32TB

  • Tercera versió d’ext, introduida l’any 2001

  • Implementa journaling de tres tipus disponibles:

    • Journal

      La metadata i el contingut estan guardats al diari (journal).

    • Ordered (per defecte)

      Només es guarda la metadata al diari desprès d’escriure el contingut al disc.

    • Writeback

      Només la metadata es guarda al diari, i pot escriure’s abans o desprès que el contingut sigui escrit al disc.

El journaling és un mecanisme pel que un sistema guarda les operacions que es realitzen en els fitxers perquè, en cas que falli alguna, poder restablir les dades afectades.

  • Mida individual de fitxers de 16GB a 2TB

  • Mida màxima del sistema de fitxers de 2TB a 32TB

  • Es pot convertir un sistema de fitxers d’ext2 a ext3 directament

  • Un directori pot tenir fins a 32.000 subdirectoris

  • Quarta i última versió d’ext, introduida l’any 2008

  • Mida individual de fitxers de 16GB a 16TB

  • Mida màxima del sistema de fitxers d'1 EB (exabyte), que és l’equivalent a més d’un milió de TeraBytes.

  • Un directori pot tenir fins a 64.000 subdirectoris

  • Opció de deshabilitar el journaling

  • Altres millores de rendiment i fiabilitat

XFS és un sistema de fitxers d’alt renciment. Entre les seves característiques, les principals són:

  • Gran escalabilitat i rendiment amb fitxers grans

  • Consistència de dades (implementa journaling de la metadata)

  • Operacions E/S paral·leles

  • Poca fragmentació

  • Suport per E/S directe sobrepassant cache del kernel

A més aquest sistema de fitxers també funciona amb inodes però no de la mateixa manera que els ext. Amb xfs no hi ha límit d’inodes, motiu de pes per triar aquest sistema de fitxers per sobre altres segons la situació.

Algunes desavantatges que té XFS venen a l’hora de recuperar dades, ja que amb falles de disc té poca seguretat. Aquest sistema de fitxers també és poc eficaç contra el “bit rot”, que fa impossible recuperar fitxers en cas de pèrdua de dades. Per últim, XFS no es comporta massa bé amb molts fitxers petits.

És un sistema de fitxers basat en el mecanisme copy-on-write (COW).

El mecanisme copy on write consisteix en, quan modifiques un fitxer, el sistema de fitxers no sobreescriurà les dades. El que farà serà escriure-les en un altre lloc i, quan hagi acabat la operació, apuntarà cap als nous blocs escrits, i la informació vella es mantindrà fins que es recicli.

Aquest mètode prevé de problemes com escriptures parcials (que poden corrompre les dades), ja que amb COW o hi ha hagut escriptura o no n’hi ha hagut, no té punt mig.

Aquest sistema d’fitxers està centrat en preservar la integritat de les dades, i conté característiques com:

  • Subvolums

  • Auto-reparació

  • Compressió

  • Defragmentació

Aquest sistema d’fitxers té funcionalitats extres respecte als altres mencionats, ja que pot funcionar inclús com a LVM (Logical Volume Manager) i RAID.

Algunes característiques més destacades de ZFS són:

  • Molta escalabilitat amb suport de dades molt gros (fins a mil milions de TB)

  • Gran protecció contra la corrupció de dades

  • Compressió de dades eficient

  • Snapshots

  • Verificació d’integritat contínua amb reparació automàtica

Amb tot això, ZFS consumeix molts recursos, pel que no és gaire eficient per entorns petits.

Amb tota aquesta informació, potser et segueixes preguntant quin hauries d’utilitzar. La resposta depèn del teu cas d’ús, però aquí afegeixo un resum general:

  • Ext4: Per a ús general en escriptoris i servidors

  • XFS: Quan calgui manejar fitxers molt grans en entorns d’alt rendiment

  • BTRFS: Per servidors o backups amb necessitat d’snapshots

  • ZFS: Per NAS i sistemes crítics que requereixin protecció avançada de dades.

Sistema de fitxers Mida màxima de fitxer Mida màxima del sistema Característiques clau Desavantatges
Ext4 16TB 1EB Generalista, fiable, opcional journaling Limitat per sistemes molt grans
XFS 8EB 8EB Alt rendiment, escalabilitat Díficil recuperació de dades
BTRFS 16EB 16EB Snapshots, copy-on-write Immadur per certs casos
ZFS 16EB 256EB RAID integrat, compressió Alt consum de recursos

I fins aquí el post d’avui. Probablement més endavant faré un post específic sobre algun d’aquests sistemes de fitxers, si escau. Si t’ha semblat útil pots deixar un comentari i compartir-lo. Ens veiem al següent!