Loading AI tools
Da Wikipedia, l'enciclopedia libera
Un flash file system è un tipo di file system progettato per il posizionamento e l'organizzazione di file su sistemi con memoria flash, si tratta infatti di file system ottimizzati per queste memorie al fine di evitare problemi relativi alle loro stesse caratteristiche peculiari (come ad esempio il fenomeno della write amplification) o per consentirne l'utilizzo in particolari sistemi operativi.
Un dispositivo a blocchi è in grado di emulare un disco rigido utilizzando un file system generico su una memoria flash. Si tratta di una soluzione piuttosto inefficiente per le seguenti ragioni:
Proprio a causa delle sue particolari caratteristiche, la memoria flash necessita dell'utilizzo di un file system di tipo flash specificamente progettato o di un controller per il wear leveling e delle rilevazioni d'errore. Un flash file system, infatti, distribuisce le operazioni di scrittura su tutto il dispositivo e gestisce i lunghi tempi di cancellazione dei blocchi NAND. Ogni volta che la memoria deve essere aggiornata il file system non aggiornerà direttamente il blocco originale, ma scriverà una nuova copia dei dati modificati su di un blocco libero, modificando i puntatori per poi cancellare i dati dal vecchio blocco, rendendolo a questo punto nuovamente libero.
In pratica, i flash file system sono utilizzati solo per gli MTD, ovvero i Memory Technology Devices, che sono memorie flash integrate prive di un controller. I dispositivi rimovibili come le schede di memoria o i dispositivi di archiviazione USB sono dotati di un controller integrato per gestire gli MTD attraverso algoritmi dedicati[2][3], come quelli per il wear leveling, per il recupero dati da badblock, per garbage collection o per la correzione di errori.
La diffusione dei dispositivi con memoria flash aumenta grazie al corrispettivo aumento di dispositivi mobili, di un inferiore costo per bit e all'aumento della loro stessa capacità.
Il primo file system di tipo flash, che gestiva un array come se fosse stato liberamente riscrivibile, era il TrueFFS sviluppato dalla M-Systems di Israele, presentato come un software al PC-Card Expo di Santa Clara, in California, nel Giugno del 1992 e registrato nel 1993.[4]
Uno dei primi flash file system fu l'FFS2 della Microsoft per MS-DOS, rilasciato nell'autunno del 1992.[5]. L'FFS2 era stato preceduto dall'"FFS", che fu però lontano dall'essere un vero flash file system, poiché gestiva gli array della memoria flash come un dispositivo write once read many (WORM) piuttosto che come un disco liberamente riscrivibile.
Nel 1994 il gruppo industriale Personal Computer Memory Card International Association (PCMCIA), approvò la specifica del Flash Translation Layer (FTL), basata sull'architettura del TrueFFS della M-Systems. La specifica fu sviluppata e proposta dalla M-Systems e dalla SCM Microsystems, che si occupò anche di fornire le prime implementazioni funzionanti dell'FTL. Supportato dalla Intel[6], l'FTL divenne un'architettura popolare anche in altri dispositivi.
Il flash translation layer o FTL, che letteralmente significa livello di traduzione di tipo flash, è un software particolarmente complesso che ha lo scopo di tradurre un indirizzo logico usato dal sistema in un indirizzo fisico nella memoria flash.[7] Nel dettaglio si occupa di fornire un'astrazione I/O di un generico dispositivo a blocchi, in modo da consentire la sostituzione di un qualsiasi disco rigido con un disco a stato solido senza che il software debba occuparsi di gestirne le differenze.
L'implementazione di questi compiti di organizzazione e gestione richiede un quantitativo di risorse significative nel controller della memoria flash. In particolare compiti come la rimappatura degli indirizzi fisici e le operazioni di garbage collection richiedono grandi quantitativi di DRAM e un processore particolarmente potente. L'FTL stabilisce importanti decisioni che hanno effetti sulle performance di archiviazione e sulla durata dei dispositivi utilizzati, senza che nessuna applicazione di alto livello debba occuparsene, rischiando un conseguente decadimento delle prestazioni di sistema.
Il flash translation layer funziona quindi come una scatola nera, le sue funzionalità interne sono nascoste dietro un livello di I/O, questo fa sì che il comportamento della memoria flash sia imprevedibile per le applicazioni di alto livello.
Un altro serio svantaggio dell'FTL è la dupicazione delle funzionalità tra quest'ultimo e il sistema. Molte applicazioni di sistema sono in grado di gestire i dispositivi di archiviazione di cui fanno uso per evitare un eccessivo numero di operazioni di aggiornamento sul posto per ragioni come una migliore efficienza, una corretta enumerazione delle versioni e una maggiore consistenza dei dati. I file system log-structured o copy-on-write, come quelli di tipo flash, scrivono continuamente nuovi dati sul dispositivo senza permettere operazioni di aggiornamento sul posto.[8]
Nonostante il nome, TrueFFS non è un file system, si tratta infatti di un software che si occupa di fornire un'interfaccia per il disco ed è perciò più corretto definirlo come un FTL. TrueFFS è progettato per essere eseguito direttamente su dischi allo stato solido (si noti che la maggior parte degli SSD in commercio non forniscono possibilità di interazione diretta). TrueFFS fornisce correzione di errori, rimappatura dei badblock e wear leveling. Esternamente TrueFFS si presenta come una normale interfaccia di un disco rigido.
TrueFFS è stato creato dalla M-Systems[4], per poi essere acquistato dalla Sandisk nel 2006. Un derivato di TrueFFS, chiamato TFFS o TFFS-lite, si trova nel sistema operativo VxWorks, dove svolge la funzione di flash translation layer e non di un file system completo.
ExtremeFFS è una tecnologia rilasciata da SanDisk che vanta un miglioramento delle prestazioni di scrittura causale rispetto a TrueFFS. Sandisk sostiene che la suddetta tecnologia le permetta un miglioramento, nella velocità scrittura casuale sugli SSD, di cento volte superiore.[9][10] Nel 2008 la compagnia ha promosso l'utilizzo della tecnologia ExtremeFFS in una implementazione MLC, o multi-level cell, della memoria flash di tipo NAND [11]
L'Application Managed Flash (o AMF) è una tipologia di FTL che mira a spostare la gestione della memoria flash dal dispositivo alle applicazioni, quali file system. database e applicazioni dell'utente, lasciando così solo la gestione essenziale sul lato del dispositivo.
Nell'AMF la responsabilità del dispositivo è ridotta notevolmente per fornire accessi al dispositivo di archiviazione privi di errore ed un efficiente supporto al calcolo parallelo. Il dispositivo tiene autonomamente traccia dei badblocks e fa uso del wear-leveling, questo perché è sempre preferibile compiere queste operazioni ad un basso livello perché direttamente dipendenti dalle specifiche architetture dei circuiti utilizzati che, comprensibilmente, le aziende produttrici sono riluttanti nel divulgare.[8]
Il Journaling Flash File System è stato il primo file system specifico per dispositivi flash per Linux, ma è stato rapidamente sostituito dal JFFS2, originariamente sviluppato per memorie flash di tipo NOR. Dopo che YAFFS venne rilasciato specificamente per memorie flash di tipo NAND nel 2002, anche il JFFS2 venne aggiornato per supportarle.
Unsorted Block Image File System è un successore di JIFFS2 ed è stato usato da Linux 2.6.22[12] nel 2008. UBIFS è stato attivamente sviluppato dal suo rilascio iniziale[13] UBIFS ha una documentazione all'indirizzo infradead.org insieme ai driver JFFS2 a MTD. Alcuni confronti iniziali mostrano che UBIFS compia operazioni di compressione più velocemente di F2FS[14].
Log-structured File System è un altro flash file system specifico per Linux, attualmente in fase di sviluppo con lo scopo di risolvere i problemi di scalabilità del JFFS2.
Flash-Friendly File System è stato aggiunto alla versione di Linux kernel 3.8.[15] Piuttosto di essere sviluppato per comunicare direttamente con dispositivi flash, F2FS è stato progettato per essere usato su dispositivi di tipo flash che già possiedono un FTL, come le schede SD.[16]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.