Il termine file system (abbreviato " FS " per File System , a volte file system in inglese) indica ambiguamente:
In generale, un file system o un file management system (FMS) è un modo per archiviare informazioni e organizzarle in file su ciò che viene chiamato, nell'ingegneria del software , memorie secondarie (per computer hardware , è una memoria di massa come un disco rigido , un disco SSD , un CD-ROM , una chiave USB , un floppy disk , ecc.). Tale gestione dei file consente di elaborare e memorizzare grandi quantità di dati nonché di condividerli tra diversi programmi per computer . Offre all'utente una visione astratta dei suoi dati e permette di individuarli da un percorso.
Esistono altri modi per organizzare i dati , ad esempio database (soprattutto database relazionali ) e file indicizzati .
La scheda perforata scomparve gradualmente dal 1970 quando apparvero le unità I / O con nastro magnetico e dischetti flessibili in formato "8 pollici" e memorie di massa più efficienti.
Nel 1964, il sistema DECtape dell'azienda DEC ha reso possibile registrare i dati su nastri magnetici anziché su schede perforate .
Nel 1968, GEORGE 3 è stato dotato di un archivio di file ( archivio di file ) che registra i file in una struttura ad albero nell'idea di Multics . Ogni utente del sistema aveva una cartella utente ( home ) con tutte le sottocartelle necessarie. È possibile accedere alle cartelle utente direttamente o tramite un percorso, come :: MASTER.USERS.COMPSCI, JOHN . Per la sicurezza è stato utilizzato un sistema di liste di controllo degli accessi che consente di configurare l'accesso per utente e per gruppo. Il file system era organizzato su due livelli: uno su disco e l'altro su nastro magnetico.
Nel 1972, ODS-1 era un flat file system (utilizzato da RSX-11 OS). Successivamente sarà sostituito da ODS-2 e ODS-5.
Nel 1974 apparve il file system CP / M. Questo sistema operativo salva i file su dischi floppy in un'organizzazione logica specifica (che non è stata rilevata da MS-DOS) e può riempire i dischi floppy finché non sono completamente pieni.
CP / M può gestire anche dischi rigidi (in realtà, essendo il BIOS "aperto" e chiaramente descritto nella documentazione che Digital Research ha fornito con alcuni suoi software, è quindi possibile adattare qualsiasi particolare sistema CP / M a qualsiasi disponibile memoria di massa e periferiche disponibili).
Ogni file ha un nome e un'estensione (più precisamente, la sintassi è: <nome file (massimo 8 byte)>. <Estensione (massimo 3 byte)>).
Nel 1978 apparve il primo file system di Apple.
Nel 1980 è apparso il sistema FAT12. Il sistema FAT16 nel 1984.
Il BIOS parameter block (BPB) viene introdotto con PC DOS 2.0. Questa versione introduce anche bit di attributi di sola lettura, archivio , etichetta di volume e cartella per la prioritizzazione delle cartelle.
Nel 1988, ISO 9660 (uno standard ISO) ha definito il file system utilizzato sui CD-ROM.
Nel 1993 apparve il sistema NTFS versione 1.0, utilizzato da Windows.
Nel 1994 e nel 1995 furono completati i file system per i CD-ROM : Rock Ridge e Joliet .
File system | Inventore | Anno di introduzione |
Sistema operativo iniziale | Licenza |
---|---|---|---|---|
DECtape | DEC | 1964 | Monitor PDP-6 | |
Livello-D | DEC | 1968 | TOPS-10 | |
George3 | ICT (in seguito ICL) | 1968 | Giorgio 3 | |
ODS-1 | DEC | 1972 | RSX-11 | |
File system RT-11 | DEC | 1973 | RT-11 | |
DOS ( GEC ) | GEC | 1973 | Sistema operativo principale | |
File system CP / M | Gary Kildall | 1974 | CP / M | |
V6FS | Bell Labs | 1975 | Unix versione 6 | |
OS4000 | GEC | 1977 | OS4000 | |
FAT (8 bit) | Marc McDonald , Microsoft | 1977 | Disco autonomo Microsoft BASIC-80 | |
DOS 3.x | Computer Apple | 1978 | DOS di Apple | |
Pascal | Computer Apple | 1978 | Apple Pascal | |
CBM DOS | Commodoro | 1978 | BASIC Microsoft (per CBM PET) | |
V7FS | Bell Labs | 1979 | Versione 7 Unix | |
ODS-2 | DEC | 1979 | OpenVMS | |
FAT12 | Tim Paterson , Seattle Computer Products | 1980 | QDOS , 86-DOS | |
AFS | Università Carnegie Mellon | 1982 | MultoOS multipiattaforma | |
DFS | Acorn Computers Ltd | 1982 | Acorn BBC Micro MOS | |
ADFS | Acorn Computers Ltd | 1983 | Acorn Electron (in seguito Arthur RISC OS ) | |
FFS | Kirk mckusick | 1983 | 4.2BSD | |
ProDOS | Computer Apple | 1983 | ProDOS 8 | |
MFS | Computer Apple | 1984 | Mac OS | |
FAT16 | Microsoft , IBM | 1984 | PC DOS 3.0 / MS-DOS 3.0 | |
Formato nastro Elektronika BK | NPO "Scientific center" (ora Sitronics ) | 1985 | Vilnius Basic , programma di monitoraggio BK | |
HFS | Computer Apple | 1985 | Mac OS | |
Amiga OFS | Metacomco per Commodore | 1985 | AmigaOS | |
High Sierra | Ecma International | 1985 | MS-DOS , Mac OS | |
NWFS | Novell | 1985 | NetWare 286 | |
FAT16B | Compaq | 1987 | Compaq MS-DOS 3.31, DR DOS 3.31 | |
MINIX V1 FS | Andrew S. Tanenbaum | 1987 | MINIX 1.0 | |
Amiga FFS | Commodoro | 1988 | AmigaOS 1.3 | |
HPFS | IBM e Microsoft | 1988 | OS / 2 | |
ISO 9660: 1988 | Ecma International , Microsoft | 1988 | MS-DOS , Mac OS e AmigaOS | |
JFS1 | IBM | 1990 | AIX | |
VxFS | VERITAS (ora Symantec ) | 1991 | sviluppato per Unix System Laboratories , HP-UX | |
ext | Remy Card | 1992 | Linux | |
WAFL | NetApp | 1992 | Data ONTAP | |
MINIX V2 FS | Andrew S. Tanenbaum | 1992 | MINIX 1.6 e 2.0 | |
AdvFS | DEC | 1993 | Unix digitale | |
NTFS versione 1.0 | Microsoft , Tom Miller , Gary Kimura | 1993 | Windows NT 3.1 | Proprietario |
LFS | Margo seltzer | 1993 | Berkeley Sprite | |
ext2 | Remy Card | 1993 | Linux , Hurd | |
UFS1 | Kirk mckusick | 1994 | 4.4BSD | |
XFS | SGI | 1994 | IRIX | |
HFS (file system gerarchico) | IBM | 1994 | MVS / ESA (ora z / OS ) | |
Cresta di roccia | Young Minds Inc. | 1994 | Linux , Mac OS , AmigaOS e FreeBSD | |
Joliet ("CDFS") | Microsoft | 1995 | Microsoft Windows , Linux , Mac OS e FreeBSD | |
PFS | Michiel Pelt | 1996 | AmigaOS | |
Romeo | Adaptec | 1996 | Microsoft Windows | |
UDF | ISO / ECMA / OSTA | 1995 | - | |
FAT32 | Microsoft | 1996 | Windows 95b | |
QFS | LSC Inc, Sun Microsystems | 1996 | Solaris | |
GPFS | IBM | 1996 | AIX , Linux , Windows | |
Sii un file system | Be Inc. , D. Giampaolo , C. Meurillon | 1996 | BeOS , HaikuOS | |
HFS Plus | Computer Apple | 1998 | Mac OS 8.1 | |
NSS | Novell | 1998 | NetWare 5 | |
PolyServe File System (PSFS) | PolyServe | 1998 | Windows , Linux | |
ODS-5 | DEC | 1998 | OpenVMS 7.2 | |
SFS | John hendrikx | 1998 | AmigaOS , AROS , MorphOS | |
ext3 | Stephen tweedie | 1999 | Linux | |
ISO 9660: 1999 | Ecma International , Microsoft | 1999 | Microsoft Windows , Linux , Mac OS X , FreeBSD e AmigaOS | |
JFS | IBM | 1999 | OS / 2 Warp Server per l'e-business | |
GFS | Sistina ( Red Hat ) | 2000 | Linux | |
Melio FS | Sanbolic | 2001 | finestre | |
NTFS versione 3.1 | Microsoft | 2001 | Windows XP | Proprietario |
ReiserFS | Namesys | 2001 | Linux | |
zFS | IBM | 2001 | z / OS (con backport su OS / 390 ) | |
FATX | Microsoft | 2002 | Xbox | |
UFS2 | Kirk mckusick | 2002 | FreeBSD 5.0 | |
Lampadario | Cluster File Systems (in seguito Oracle Corporation ) | 2002 | Linux | |
OCFS | Oracle Corporation | 2002 | Linux | |
VMFS2 | VMware | 2002 | VMware ESX Server 2.0 | |
ext3cow | Zachary Peterson | 2003 | Linux | |
Fossile | Bell Labs | 2003 | Piano 9 di Bell Labs 4 | |
File System di Google | 2003 | Linux | ||
PramFS | MontaVista | 2003 | Linux | |
Affidamento | Datalight | 2003 | Windows CE , VxWorks , porte personalizzate | |
VxCFS | VERITAS (ora Symantec ) | 2004 | AIX , HP-UX , Solaris , Linux | |
ZFS | Sun Microsystems | 2004 | Solaris | CDDL |
Reiser4 | Namesys | 2004 | Linux | |
File system non volatile | Palm, Inc. | 2004 | Palm OS Garnet | |
MINIX V3 FS | Andrew S. Tanenbaum | 2005 | MINIX 3 | |
OCFS2 | Oracle Corporation | 2005 | Linux | |
NILFS | NTT | 2005 | Linux | |
VMFS3 | VMware | 2005 | VMware ESX Server 3.0 | |
GFS2 | cappello rosso | 2006 | Linux | |
ext4 | Varie | 2006 | Linux | |
exFAT | Microsoft | 2006, 2009 | Windows CE 6.0 , Windows XP SP3 , Windows Vista SP1 | Proprietario |
TexFAT / TFAT | Microsoft | 2006 | Windows CE 6.0 | |
Btrfs | Oracle Corporation | 2007 | Linux | GPL |
Ceph | Sage Weil , Inktank Storage , Red Hat | 2007, 2012 | Linux | |
WBFS | kwiirk e Waninkoko (homebrew Wii) | 2008 | Wii | |
MARTELLO | Matthew dillon | 2008 | DragonFly BSD | |
Tux3 | Varie | 2008 | Linux | |
UBIFS | Nokia con l'aiuto dell'Università di Szeged | 2008 | Linux | |
Oracle ACFS | Oracle Corporation | 2009 | Solo Linux : Red Hat Enterprise Linux 5 e Oracle Enterprise Linux 5 | |
Reliance Nitro | Datalight | 2009 | Windows CE , Windows Mobile , VxWorks , Linux , porte personalizzate | |
LTFS | IBM | 2010 | Linux , Mac OS X , Microsoft Windows pianificato , | LGPL |
IlesfayFS | Ilesfay Technology Group | 2011 | Microsoft Windows , previsto Red Hat Enterprise Linux | |
VMFS5 | VMware | 2011 | Statistiche VMware ESXi 5.0tux 3 | |
ReFS | Microsoft | 2012, 2013 | Windows Server 2012 | |
File system cordino | Dan Luedtke | 2012 | Linux | |
F2FS | Samsung | 2012 | Linux | GPLv2 |
APFS | Mela | 2016 | Mac OS | |
File system | Creatore | Anno di introduzione | Sistema operativo iniziale | Licenza |
Il volume dei dati elaborati dalle applicazioni del computer raggiunge comunemente diverse centinaia di gigabyte e arriva fino a diversi terabyte per alcune applicazioni industriali. Tali volumi di dati non possono essere archiviati nella memoria principale . Inoltre, è necessaria anche una memorizzazione persistente a lungo termine, che consenta di salvare i dati elaborati o di essere elaborati per un utilizzo futuro. Il principio impiegato per rispondere a questo problema consiste nel memorizzare questi dati in memorie secondarie sotto forma di file, cioè di serie di blocchi (l'unità più piccola che il dispositivo di memorizzazione è in grado di gestire). Il contenuto di questi blocchi, una semplice sequenza di dati binari , può essere interpretato in base al formato del file come caratteri, numeri interi o in virgola mobile, codici di funzionamento della macchina, indirizzi di memoria, ecc. Lo scambio tra i due tipi di memoria viene quindi effettuato tramite trasferimento a blocchi.
Lo scopo del file system è quello di consentire l'accesso al contenuto dei file memorizzati (aprire il file, salvarlo, copiarlo o spostarlo in una seconda posizione, oppure eliminarlo) dal loro percorso, formato da un nome preceduto da un elenco di directory annidate.
Per l'utente, un file system è visto come una struttura ad albero: i file sono raggruppati in directory (un concetto utilizzato dalla maggior parte dei sistemi operativi). Queste directory contengono file o altre directory in modo ricorsivo. Quindi c'è una directory principale e sottodirectory. Tale organizzazione genera una gerarchia di directory e file organizzati in un albero.
Esistono diversi metodi per associare un nome file al suo contenuto. Nel caso del file system FAT , un vecchio file system MS-DOS e Windows ancora ampiamente utilizzato su supporti rimovibili come le unità USB, ogni directory contiene una tabella che associa i nomi dei file alla loro dimensione e un indice che punta alla tabella di allocazione dei file, un'area riservata del disco che indica per ogni blocco dati l'indice del blocco successivo dello stesso file.
Nel caso di file system Unix (o Linux / Minix ), file e directory sono identificati da un numero univoco, il numero di inode . Questo numero viene utilizzato per accedere a una struttura dati ( inode ) che raggruppa tutte le informazioni su un file tranne il nome, in particolare la protezione dell'accesso in lettura, scrittura o elenchi di date, nonché i mezzi per trovare il contenuto. Il nome è memorizzato nella directory associata a un numero di inode. Questa organizzazione ha il vantaggio che un singolo file su disco può essere conosciuto dal sistema con diversi nomi.
L'organizzazione del file system NTFS è ancora più complessa e funziona in modo molto simile a un database.
Il nome di un file è una stringa di caratteri, spesso di dimensioni limitate. Oggi, quasi tutti i caratteri nella directory Unicode sono generalmente utilizzabili, ma alcuni caratteri specifici che hanno un significato per il sistema operativo potrebbero essere vietati o deprecati. Questo è il caso, ad esempio, dei caratteri ":", "/" o "\" in Windows.
I file system Unix utilizzano nomi di file basati su una sequenza di byte. I livelli inferiori del software (kernel, file system) gestiscono i nomi dei file senza conoscere il set di caratteri utilizzato. A livello di utente, il set di caratteri utilizzato generalmente non viene fornito dal file system, ma dipende dalle impostazioni locali dell'utente. In un contesto in cui si desidera l'interoperabilità a livello globale, si desidera la compatibilità Unicode e quindi UTF-8 viene utilizzato sempre più soprattutto nelle distribuzioni Linux. I sistemi precedenti utilizzavano sistemi di codifica regionali che possono danneggiare i nomi dei file quando gli utenti hanno impostazioni locali differenti. Nei sistemi moderni, viene evitato l'uso di nomi di file con nomi diversi da Unicode per ridurre i problemi di interoperabilità con i sistemi Unicode.
NTFS , Virtual FAT e Joliet , ReFS utilizzano il set di caratteri UTF-16 per i nomi dei file.
In Windows e negli ambienti grafici, il nome di un file ha generalmente un suffisso (estensione) separato da un punto che dipende dal contenuto del file: .txt per il testo ad esempio. Questa estensione dipenderà dalla scelta delle applicazioni che supportano questo file. Tuttavia, in Linux / Unix, nei sistemi a riga di comando e nei linguaggi di programmazione, l'estensione è solo una parte del nome del file, il suo formato viene rilevato dal tipo MIME scritto in modo trasparente nei file di intestazione.
Ogni file è descritto da metadati (conservati in inode sotto Unix), mentre il contenuto del file viene scritto su uno o più blocchi del supporto di memorizzazione, a seconda della dimensione del file.
I metadati più comuni su UNIX sono:
Sulla maggior parte dei sistemi Unix, il comando stat mostra l'intero contenuto dell'inode .
Il sistema di gestione dei file svolge diverse funzioni:
L'organizzazione fisica sottostante del mezzo utilizzato (blocchi, lineare) ei meccanismi di input / output di basso livello sono mascherati. L'utente può quindi organizzare i suoi dati permanenti distribuendoli in file diversi. Il contenuto dei file è determinato dal loro formato , che dipende dall'applicazione utilizzata.
Oltre a questa organizzazione astratta, i file system possono includere compressione o crittografia automatica dei dati, gestione più o meno granulare dei diritti di accesso ai file e registrazione in scrittura (per robustezza, in caso di guasto) del sistema). Inoltre, alcuni file system possono estendersi su un'intera rete, come NFS. Alcuni di questi file system di rete possono essere distribuiti o distribuiti, come PVFS2.
La scelta del sistema di gestione dei file si basa principalmente sul sistema operativo. Di solito, i sistemi operativi più recenti supportano un gran numero di file system.
MS-DOS (e compatibile) e le prime versioni di Windows 95 utilizzavano i file system FAT16 e FAT12 (per supporti inferiori a 16 MB ). A partire da Windows 95 OSR2, la scelta tra i file system ha cominciato ad ampliarsi. È possibile utilizzare sia FAT16 che FAT32 e , a partire da una certa dimensione della partizione, la scelta del sistema FAT32 è stata più giudiziosa.
Nelle prime versioni di Windows NT (NT3.x e NT4) è possibile scegliere tra il sistema FAT16 e NTFS . Questo sistema operativo non supporta FAT32 . In generale, NTFS è consigliato perché fornisce una maggiore sicurezza e prestazioni migliorate rispetto a FAT . A differenza delle versioni precedenti di Windows NT, Windows NT5 ( Windows 2000 ) accetta partizioni di tipo FAT16 , FAT32 e NTFS . Pertanto, si consiglia il file system più recente (NTFS 5) poiché offre più funzionalità rispetto ai sistemi FAT .
Il Vista SP1 offre il formato in exFAT che è una grande evoluzione del FAT, proponendo una migliore affidabilità, una gestione "reale" dei nomi lunghi e l' ACL . Windows CE 6 (il futuro Windows Mobile 7) gestisce anche questo nuovo FS. L'obiettivo di Microsoft è sostituire FAT, che viene utilizzato principalmente su supporti rimovibili come le schede di memoria.
Il mondo di Unix (Unix, Linux, BSD, Mac OS X) supporta un numero molto elevato di file system. Ciò è dovuto al fatto che, nonostante il loro numero, i sistemi supportati generalmente seguono gli standard e in particolare POSIX .
I file system con journaling scrivono le modifiche in un journal prima di apportarle ai file stessi. Questo meccanismo fornisce una maggiore affidabilità, consentendo il ripristino delle modifiche "in corso" in caso di spegnimento prematuro (interruzione di corrente, crash del sistema, disconnessione di un disco esterno, ecc.).
I file system snapshot , o in francese, snapshot , forniscono la possibilità di registrare lo stato del file system in un dato momento.
Questi file system non hanno lo scopo di fornire l'accesso ai file effettivi. Presentano infatti, sotto le sembianze di una classica gerarchia di file e directory, informazioni di varia natura (sullo stato del computer, delle periferiche o che consentono l'accesso a database). Si tratta quindi di interfacce specifiche per determinati software, generalmente il sistema operativo.