Implementazione del File System
Transcript
Implementazione del File System
File System • • • • • • • Struttura del File System Implementazione del File System Implementazione Directory Metodi di Allocazione Free-Space Management Performance: cache Log 1 Requisiti dell'immagazzinamento dati a lungo termine: • Deve essere possibile conservare grosse quantita' di dati • L'informazione deve sopravvivere alla terminazione del processo che la usa • Piu' processi devono essere in grado di accedere alle informazioni concorrentemente. uso di dispositivi esterni (dischi, nastri..) file meccanismo di astrazione che fornisce all'utente una visione logicamente uniforme dell'informazione conservata, che prescinde da dove e come essa viene conservata. (device independence) persistenza le informazioni conservate in un file non sono influenzate dalla creazione/terminazione del processo FILE (Management) SYSTEM parte del so per la gestione file. Fornisce a utenti e applicazioni i servizi per manipolare e memorizzare i file 2 File-System Structure • Struttura di un file system: – Unità logica di memorizzazione persistente (punto di vista dell’utente) – Collezione di informazioni riguardanti il punto di vista dell’utente (attributi, operazioni permesse, struttura del directory..) – Algoritmi e strutture dati per il mapping file system logicodispositivo fisico • blocco = unità di trasferimento di un file tra le memorie (corrispondente a 1/più settori) • Il file system è organizzato a livelli. • File control block/file descriptor –struttura di memorizzazione delle informazioni relative al file 3 Obiettivo del FSM • Soddisfare esigenze di data management e user requirement, incluso memorizzazione dati ed esecuzione operazioni • Garantire validità del FS • Ottimizzare le prestazioni dal punto di vista del sistema (throughput) e dal punto di vista dell’utente • Fornire il supporto per l’I/O su diversi tipi di dispositivi fisici di memorizzazione • Evitare la perdita di dati • Fornire un insieme di routine standard di interfaccia di I/O • Fornire il supporto necessario in caso di sistemi multiuser 4 User requirement Ogni utente • Deve poter creare, cancellare, modificare un file • Può avere accesso controllato (security) ai file di altri utenti • Può controllare quali tipi di accesso consentire agli altri utenti del proprio file • Deve poter muovere dati da un file all’altro • Deve poter fare backup e recovery di un file • Deve poter accedere i file con nome simbolico 5 Punto di vista dell'utente naming file name , file extension. tipo es:. tipi file Unix: file regolari | directory | file spec. (a blocchi e a caratteri) struttura (file regolari) visibilita' di un file dal SO: byte stream | sequenza di record di lunghezza fissa | alberi di record (con chiave) di lunghezza variabile. formato (file regolari) ASCII file (testo - sequenza linee terminate da carrege return e/o line feed) binary file (organizzazione interna dei file binari: es. file eseguibile, archivio!) accesso sequenziale |random attributi informazioni sul file (es. tempo di creazione, protezioni..) operazioni create | delete | open | close | read | write | append | seek | get attribute | set attribute | rename 6 Possibili attributi di un file 7 File memory mapped Molti sistemi operativi, incluso linux, forniscono un meccanismo di mappatura dei file nell’address space di un processo in esecuzione il file diventa la backing store della regione di memoria Quando il processo finisce il file viene aggiornato definitivamente su disco Il file mapping elimina esplicite operazioni di I/O su disco, rendendo più semplice ed efficace la programmazione problemi: - limite dell’address space per la dimensione del file - condivisione (gestita come shared memory) 8 directory E' associato ad ogni collezione di file Contiene informazioni sui file, incluso attributi, locazione e dimensione, ownership ed altre informazioni per il access control (l’owner del file puo' garantire opportuni privilegi di accesso ad altri user) informazioni per gestire l’uso concorrente del file registrazione della storia delle attivita’ sul file LLe informazioni sono fornite indirettamente (attraverso le SVC del S.O.) all’utente 9 gerarchia di directory Il directory mantiene il mapping (es. Memorizza) tra i file che contiene e le informazioni che li caratterizzano (attributi e allocazione su disco) punto di vista dell’utente: - permette di gestire sistemi con un gran numero di utenti - ogni user può avere quante directory vuole ed organizzarci i file in 10 modo rispondente alle sue esigenze Path Name • Il filesystem Unix rappresenta in un unico albero tutte le risorse accessibili, compresi i device che vengono rappresentati da file speciali • Un directory contiene informazioni sui file che contiene (in Unix: file normali, directory, file speciali, pipe) • Unix inode: incapsula gli attributi di un file ed riferimenti alla sua collocazione in memoria • Un directory Unix è una lista di coppie (filename,inode) Un directory tree UNIX 11 Operazioni sul Directory Create Delete Opendir Closedir Readdir Rename Link Unlink 12 File Access right FSM deve permettere il controllo del modo in cui un file e’ acceduto Un utente e’ designato come owner del file. In genere e’ chi lo ha creato. L’accesso puo’ essere garantito alle seguenti classi: • specific user identificato da un User ID • User Group insieme di utenti non definiti individualmente. Il sistema deve tener traccia della membership • All tutti gli utenti ! file pubblici 13 Security in UNIX modi di protezione file 14 Shared Files E’ utile che i file condivisi compaiano simultaneamente su directory differenti –Link Il FS diventa un DAG Problema: Se il directory è implementato con entry contenenti copia degli indirizzi, aggiungere un blocco da B (o C) non può essere visto da C (o B), agendo essi su copie separate • i-node risolve anche se da nessuno dei directory che condividono i file si può risalire agli altri • symbolic link 15 Shared File Link sinbolico: B fa un link ad un file di C creando un nuovo file di tipo link che contiene il path name del file a cui è linkato. Quando B legge il file, il SO • vede che è un link • Trova tramite il nome il file e lo legge 16 Livelli del File System Gestisce i metadati - strutture del FS (struttura directory, file descriptor..) Gestisce mapping blocchi logiciblocchi fisici (compresa traduzione) e spazio libero* Invia i comandi ai device driver per leggere/scrivere blocchi file * è a conoscenza dei file e dei loro blocchi logici e dei blocchi fisici 17 Implementazione del File System Il progettista di un file system si occupa dei seguenti aspetti - Come memorizzare file e directory - Come gestire lo spazio disco - Come rendere ogni attività connessa col file system efficiente ed affidabile 18 Strutture presenti nel disco • Boot control block (Unix boot block, NTFS partition boot sector) - contiene le informazioni necessarie per avviare il SO da quella partizione (altrimenti, se il disco non contiene un SO, vuoto) • Partition control block (Unix superblocco, NTFS master file table) - dettagli relativi alla partizione: numero e dimensione dei blocchi, contatore blocchi liberi e riferimenti relativi, contatori descrittori file liberi e riferimenti relativi • File descriptor (Unix i-node) - contengono gli attributi dei file (permessi, dimensioni, link, date ultime operazioni, indirizzi blocchi 19 boot • Una row partition è una partizione priva di file system (es. swap device) • nella fase di avviamento si esegue il montaggio della root partition – sequenza di blocchi la cui immagine viene caricata in memoria “non-FS” – contiene il kernel ed eventuali altri file di sistema. L’avvio avviene sempre da una posizione precisa. • La root partition può contenere un boot loader capace di interpretare diversi FS e SO e che una volta caricato può avviare un diverso SO • Ogni partizione può avere un file system di diverso formato 20 Strutture mantenute in memoria dal FS • Partition table - contiene informazioni su ciascuna partizione montata • Struttura dei directory contenuti in memoria (che i processi hanno utilizzato di recente) • Tabella dei file aperti • Tabella dei file aperti per ciascun processo Nota: Unix tratta i directory con le stesse system call dei file, NT tratta i directory con system call distinte Target: gestione del file system e caching efficiente 21 un possibile layout di file system Partition Table contiene indirizzi inizio e fine di ogni partizione, una è attiva Super block contiene tutti i parametri chiave per la gestione del FS e viene letto in memoria al boot o quando in FS viene riferito Master Boot Record usato al boot del computer - Trova la partizione attiva - Legge il 1o blocco, Boot block, e lo esegue Il layout di una partizione disco varia fortemente con FS/OS 22 • Alcune considerazioni su open La creazione/apertura di un file permette di collezionare in memoria le informazioni sul file per gestire efficientemente le operazioni di I/O. • open - passa al FS un pathname che permette di recuperare il file nel directory accedendo così i suoi attributi (es. collezionati in i-node) • Alcune porzioni del directory sono mantenute in memoria dal FS per accelerare le operazioni su directory (es. dentry object di Linux) • Il file control block (es. i-node), accresciuto di informazioni dinamiche sullo stato attuale di utilizzo del file , và inserito (se non c’è già) nella tabella dei file aperti (l’entry in tabella contiene informazioni sul n° procressi che hanno aperto il file) e in una per process file table (nota: l’inserimento può essere un semplice puntamento - file descriptor in unix o file handle in NT). • Le entry di apertura conterranno permessi e offset per le operazioni rw • Quando un processo chiude un file, l’entry della per process file table viene cancellata e il contatore di aperture nella tabella generale viene decrementato. – Quando il contatore di aperture è azzerato, si aggiorna la struttura del directory su disco e si elimina l’entry nella tabella generale dei file aperti 23 Contenuti di un File Control Block (es. i-node) 24 Strutture In-Memory del File System (a) Apertura di un file (b) Accesso in lettura al file 25 Virtual File Systems Molti SO sono in grado di gestire diversi FS contemporaneamente • Virtual File Systems (VFS) fornisce un modello “objectoriented” per supportare implementazioni distine di FS compreso NFS. • VFS permette l’uso della stessa interfaccia di system call ( API) per tipi differenti di FS. • L’API è quella del VFS interface piuttosto che quella specifica del FS. 26 Strati del FS 1. Interfaccia del file system: per le chiamate open, read, write.. 2. VFS: separa le operazioni generiche di FS dalla implementazione specifica tramite una interfaccia uniforme alle diverse implementazioni di FS montati localmente o accessibili dalla rete. • Una struttura unica, il v-node, rappresenta un file locale o remoto (con un indicatore numerico univoco) • Il VFS distingue i file locali dai remoti e attiva le operazioni specifiche del FS locale e invoca le procedure del protocollo NFS per richieste remote (attraverso la creazione e gestione di opportuni file handle) 1. Strato della implementazione locale del FS o di realizzazione del protocollo NFS 27 Secondary storage management In memoria secondaria un file consiste di una collezione di blocchi. Il SO/FS e’ responsabile dell’allocazione dei blocchi nei file: ! 1. per ogni file deve essere allocato (allocation policy) lo spazio di memoria secondaria 2. e’ necessario tener traccia dello spazio disponibile per l’allocazione (free space management) questi due task sono correlati 28 File allocation Problematiche 1. quando si crea un nuovo file, occorre allocare subito il massimo spazio richiesto per esso? 2. Lo spazio viene allocato per un file come una o più unità (blocchi) contigue (portions). • La dimensione di una porzione può variare dal singolo blocco all’intero file. • Che dimensione scegliere per tale porzione? 3. Che struttura dati usare per tener traccia delle porzioni assegnate? (File Allocation Table - FAT) 29 30 Preallocation vs. Dynamic Allocation Preallocazione nel momento in cui e’ richiesta la creazione di un file si dichiara la sua massima dimensione (soluzione adatta ai casi in cui questa dimensione e’ prevedibile, come compilazione di programma, trasferimento di file da un sistema ad un altro attraverso la rete..) Allocazione dinamica alloca spazio al file, in porzioni, quando occorre (se non e’ possibile la stima della dimensione del file, non occorre sovrastima) 31 Portion size 1/2 Trade-off tra efficienza dal punto di vista del singolo file ed efficienza dell’intero sistema. La contiguità di spazio migliora le prestazioni, specialmente per le operazioni di retrieve-next, e soprattutto nell’esecuzione di transazioni nei sistemi operativi transaction oriented. Avere un gran numero di piccole porzioni incrementa la dimensione delle tabelle per gestire l’informazione di allocazione Avere porzioni di dimensione fissa (es.blocchi o multipli, pagine!) semplifica la riallocazione dello spazio Avere porzioni di dimensione variabile o piccole porzioni di dimensione 32 fissa minimizza lo spreco di spazio causato dalla sovrallocazione. Portion size 2/2 soluzioni alternative: variable large contiguous portion offre le migliori prestazioni nell’accesso, la dimensione variabile evita lo spreco di spazio e la file allocation table e’ piccola ma il riuso dello spazio e’ difficile Blocchi - piccole porzioni di dimensione fissa offrono maggiore flessibilità di allocazione. Richiede dimensioni maggiori per la tabella di allocazione. La contiguità viene abbandonata; i blocchi vengono allocati quando occorre. 33 metodi di allocazione - file allocation method Come vengono allocati i disk block di un file : • Contiguous allocation • Linked allocation • Indexed allocation 34