# Sistema de fitxers

En informàtica, el sistema de fitxers és un mètode per emmagatzemar i organitzar la informació i les dades contingudes en un dispositiu electrònic o sistema computacional, per tal de facilitar-ne la localització i accés. Els sistemes de fitxers usen dispositius d'emmagatzemament com els discs durs o els CD-ROM i inclouen el manteniment del lloc físic dels fitxers. La majoria de sistemes operatius tenen el seu propi sistema de fitxers.
Els més comuns utilitzen dispositius d'emmagatzemament de dades que permetin l'accés a les dades com una cadena de blocs d'una mateixa mida, a vegades anomenats sectors, normalment de 512 bytes de longitud. El programari del sistema d'arxius és responsable de l'organització d'aquests sectors en arxius i directoris i manté un registre de quins sectors pertanyen als arxius i quins no han estat utilitzats. En la realitat, un sistema d'arxius no requereix necessàriament un dispositiu d'emmagatzemament de dades, sinó que pot ser utilitzat també per a accedir a dades generades dinàmicament, com les rebudes a través d'una connexió de xarxa.
Generalment un sistema d'arxius té directoris que associen noms d'arxius amb arxius, normalment connectant el nom d'arxiu a un índex en una taula d'assignació d'arxius d'algun tipus, com ara FAT en sistemes d'arxius MS-DOS o els inodes dels sistemes Unix. L'estructura de directoris pot ser plana o jeràrquica (ramificada o "en arbre"). En alguns sistemes de fitxers els noms d'arxius són estructurats, amb sintaxis especials per a extensions d'arxius i números de versió. En altres, els noms d'arxius són simplement cadenes de text i les metadades de cada arxiu són allotjades separadament.
En sistemes d'arxius jeràrquics, normalment, es declara la ubicació precisa d'un arxiu amb una cadena de text anomenada "ruta". La nomenclatura per a rutes varia lleugerament de sistema en sistema, però mantenen en general una mateixa estructura. Una ruta és expressada per una successió de noms de directoris i subdirectoris, ordenats jeràrquicament d'esquerra a dreta i separats per algun caràcter especial que sol ser una barra ('/') o barra invertida ('\') i pot acabar amb el nom d'un arxiu present en l'última branca de directoris especificada.
Així, per exemple, en un sistema Unix la ruta a la cançó preferida de l'usuari "albert" seria:
Un exemple anàleg en un sistema d'arxius Windows es veuria com:
Els sistemes d'arxius tradicionals proveeixen mètodes per a crear, moure i eliminar tant arxius com directoris, però no tenen mètodes per a crear, per exemple, enllaços addicionals a un directori o arxiu (enllaç dur en Unix) o reanomenar enllaços pares (".." en Unix).
L'accés segur a sistemes d'arxius bàsics pot estar basat en els esquemes de llista de control d'accés o capacitats. Les llistes de control d'accés fa dècades que van demostrar ser insegures, de manera que els sistemes operatius experimentals utilitzen l'accés per capacitats. Els sistemes operatius comercials encara funcionen amb llistes de control d'accés.
Les principals funcionalitats d'aquests sistemes són
* Permisos
** llistes de control d'accés (ACLs)
** UGO (Usuari, Grup, Altres — per les seves sigles de l'anglès, User, Group, Others)
** Capacitats granulades
** Atributs estesos (només afegir al fitxer però no modificar, no modificar mai (per a modificar-lo s'ha de treure l'atribut), etc.)
* Evitar la fragmentació
* Permetre enllaços, tant simbòlics com durs
* Journaling (recuperació ràpida després d'un apagat brusc)
* Suport per a fitxers dispersos

## Tipus de sistemes de fitxers
### De fitxers de disc

Dissenyat per emmagatzemar dades en discs durs. Per exemple FAT (FAT12, FAT16, FAT32, exFAT), NTFS, HFS i HFS+, HPFS, ext2, ext3, ISO 9660, ODS-5, ZFS i UDF. Alguns d'aquests sistemes són alhora sistemes Journaling o sistemes versionats.

### De fitxers de Flash

Dissenyats per emmagatzemar dades en memòries flash. Tot i que es pot usar un sistema de fitxers dissenyat per a discs, aquests no són òptims per diverses raons:
* Blocs d'esborrament: Els blocs de memòria flash han de ser esborrats de forma explícita abans de poder-hi escriure. El temps per fer això pot ser significatiu, amb la qual cosa pot ser beneficiós que els blocs no usats s'esborrin mentre el dispositiu està inactiu.
* Accés aleatori: mentre que els sistemes de fitxers de disc estan optimitzats per evitar les recerques (seek), ja que aquestes són especialment costoses en discs, en els sistemes de memòria aleatòria com la memòria flash, aquest temps de cerca és constant i no impliquen cap latència addicional.
* Anivellament del desgast: Les memòries flash es desgasten amb el pas de moltes reescriptures sobre un mateix bloc. Els sistemes de fitxers flash estan dissenyats per tal de repartir les escriptures equitativament entre tots els blocs, anivellant-ne el desgast. Alguns exemples són JFFS2 i YAFFS.

### De fitxers de Base de Dades

Un nou concepte en el disseny de sistemes de fitxers és el de tractar el sistema com una gran base de dades. A més a més de l'estructura jeràrquica de tot sistema de fitxers, aquests també són identificats per atributs com el tipus de fitxer, la seva temàtica, l'autor, o altres metadades.

### Sistemes transaccionals

En anglès Journaled File System. Són sistemes on les operacions d'escriptura són atòmiques. És a dir, o no s'executen o es completen, però no queden mai a mitges. Això es fa mantenint un registre de l'operació que es va a fer just abans de fer-la per, en cas de fallada, desfer l'operació a mitges indicada en el registre (acció de roll-back). Exemples són JFS, NTFS, ext3, XFS.

### Sistemes de xarxa

Un sistema d'arxius de xarxa és un sistema d'arxius que accedeix als seus arxius a través d'una xarxa. Dins d'aquesta classificació trobem dos tipus de sistemes d'arxius: els sistemes de fitxers distribuïts (no proporcionen E/S en paral·lel) i els sistemes de fitxers paral·lels (proporcionen una E/S de dades en paral·lel).
Exemples de sistemes d'arxius distribuïts poden ser:
* AFS
* AppleShare
* CIFS (també conegut com a SMB o Samba)
* Coda
* InterMezzo
* NSS (Per a sistemes Novell Netware 5)
* NFS
Mentre que per als sistemes d'arxius paral·lels tindríem:
* PVFS
* PAFS

### Sistemes de propòsit especial

Els sistemes d'arxius de propòsit especial són bàsicament aquells que no es poden encabir en cap de les classificacions anteriors.
* acme (Plan 9)
* archfs
* cdfs
* cfs
* devfs
* udev
* ftpfs
* lnfs
* nntpfs
* plumber (Plan 9)
* procfs
* ROMFS
* Swap
* sysfs
* TMPFS
* wikifs
* LUFS
* Lustre (informàtica)
Etcètera.

### Altres sistemes

* AOFS Amiga Old File System
* AFFS Amiga Fast File System
* ASFS Amiga Smart File System
* EFSa
* ext4
* UMSDOS
* FFS
* Fossil
* JFS
* kfs
* MFS (per a Mac OS)
* Minix
* NTFS (sistema de fitxers de Windows NT)
* OFS
* ReiserFS
* Reiser4
* UDF (utilitzat en DVD i en alguns CD-ROM)
* UFS
* XFS
* ZFS (sistema d'arxius de Sun Microsystems)

## Vegeu també

* Extensió de fitxer
* Sistema virtual de fitxers
* Partició de disc
* Nom de fitxer 8.3