File System
Transcript
File System
File System 63 Caratteristiche generali • Struttura gerarchica; • Files senza struttura ("byte stream"); • Protezione da accessi non autorizzati; • File & device independence; • Semplicità. 64 Caratteristiche generali • I tipi (principali) di files sono tre: - Files ordinari - Directories - Files speciali • Il sistema assegna biunivocamente a ciascun file un identificatore numerico, detto i-number ("index-number"), che gli permette di rintracciarlo nel file system. 65 Files ordinari • Sono sequenze di byte ("byte stream"); • Possono contenere informazioni qualsiasi (dati, programmi sorgente, programmi oggetto,...); • Il sistema non impone nessuna struttura. R O M A eoln M text file 00II0I0I 0I000000 IIIIIIII 0III0III IIII0000 binary file 66 Organizzazione dei files Per consentire all'utente di rintracciare facilmente i propri files, Unix permette di raggrupparli in directories, organizzate in una (unica) struttura gerarchica. ROOT DIRECTORY : directory : file ordinario directory (vuota) file speciale 67 Directories • Sono sequenze di bytes come i files ordinari; • Differiscono dai files ordinari solo perché non possono essere scritte da programmi ordinari; • Il loro contenuto è una serie di directory entries, che definiscono l'associazione fra gli i-number (usati dal sistema) e i filename mnemonici ((usati dall'utente). ) entry entry •••• •••• i-number (2 bytes in SV) fil filename (14 bytes b t in i SV) 68 Directories Ogni directory ha sempre almeno 2 entries: "•" la directory stessa "••" la directoryy p padre a 107 b 202 c 253 • 202 d 289 •• 107 c 253 d 289 eof 69 Byte Offset in Directory Inode Number (2 bytes) File Name (14 bytes) 0 202 . 16 107 .. 32 253 c 48 289 d Struttura directory /a/b Filename sinonimi (Links) Un file può avere più filename (ma sempre un solo i-number). a 89 d 210 b c 107 e Esempio: p Il file 107 ha 3 links f 402 89 107 ••• b 107 c 107 210 d 210 ••• ••• e 107 f 402 ••• 402 70 In un sistema Unix ci sono due tipologie di link a file. Hard link • E’ un file contenente un puntatore al file referenziato. I file referenziati – – devono trovarsi nello stesso file system non possono essere directory • Il file esiste almeno fino a quando c’è un hard link che punta ad esso. Symbolic link (o soft link) • Non ha informazioni effettive sul file referenziato ma solo la posizione su dove si trova. – – Il file può trovarsi in un file system distribuito come NFS È possibile linkare anche le directory • Se il file di destinazione viene eliminato allora il link diventa inconsistente. Pathname assoluto Ogni file viene identificato univocamente specificando il suo pathname assoluto, che individua il cammino dalla root-directory al file. / /dir/dir/..../dir/filename di /di / /di /fil root separatori bin etc usr ......... dev roberto mario prog prog a x y a b c /usr/mario/prog /usr/roberto/prog/a 71 Tipiche directories di sistema /bin comandi eseguibili /dev files speciali (I/O devices) /etc files per l'amministrazione del sistema, ad esempio: /etc/passwd /etc/termcap /lib librerie di programmi /tmp area temporanea / /usr h home di directories t i N.B. La struttura varia da versione a versione 72 Home directories • Ad ogni utente viene assegnata, ad opera del system administrator, una directory di sua proprietà (home directory) che ha come nome lo username del suo proprietario; • Ad essa essa, l'utente l utente potrà appendere tutti i files (o subdirectories) che desidera; • Spesso (ma non sempre) le home directories sono sotto /usr. / usr ggigi g mario roberto 73 Working directory • Ogni utente opera, ad ogni istante, su una directory corrente, o working directory; • Subito dopo il login, la working directory è la home directory dell'utente; • L'utente può cambiare la working directory con apposito comando (cd). 74 Pathname relativo / bi bin usr etc t ......... d dev working directory roberto mario Ogni file può essere identificato univocamente specificando solamente il suo pathname relativo alla ll working ki directory. di t prog prog /usr/mario/prog ••/mario/prog •/••/mario/prog a a x b c y /usr/roberto/prog/a prog/a •/prog/a 75 Files speciali • Ogni device di I/O viene visto, a tutti gli effetti, come un file (file speciale); • Richieste di lettura/scrittura da/a files speciali causano operazioni di input/output dai/ai devices associati. / dev tt 1 tty tt 2 tty •••••• tty 3 modem 76 Files speciali File & device independence: In Unix i programmi non sanno se operano su un file o su un device. Dischi Comandi UNIX Stampanti UNIX File System Programmi utente Nastri Terminali Linee di com nica ione comunicazione Pipes stessa interfaccia per ogni tipo di file 77 I/O Subsystem mknod od /de /dev/tty13 / y 3 c 2 13 3 Crea un file di device: /dev/tty13: nome del file c: file speciale a caratteri ( b: file speciale a blocchi) 2: major number p di device che corrisponde p ad una entry entri appropriata pp p Indica il tipo nella character(o block) device switch table. 13: minor number: N Numero di unità ità del d ld device i nella ll classe l cuii appartiene. ti 51 Attributi Per ogni file (ordinario, directory, speciale) Unix mantiene le seguenti informazioni nel descrittore del file: Tipo Posizione Dimensione Numero di links Proprietario Permessi Creazione Modifica A Accesso ordinario, directory, speciale? dove si trova? quanto è grande? quanti nomi ha? chi lo possiede? chi può usarlo e come? quando è stato creato? quando è stato modificato più di recente? quando d è stato t t l'accesso l' più iù recente? t ? 78 File system “montabile” • Un file system Unix è sempre unico, ma può avere parti residenti su d i rimuovibili device i ibili ((es. di dischetti); h tti) • Queste parti devono essere: montate prima di potervi accedere (mount) - "montate" - "smontate" prima di rimuovere il supporto (umount) Root file system • La stessa tecnica si usa per suddividere il file system fra diversi device, anche se non rimuovibili. i ibili \ (root) a b c (root) d Mounted file system e f 79 Mount Table Tabella sempre p residente,, aggiornata gg da mount e umount,, che contiene, per ogni file system montato: - major e minor number del device; - puntatore al superblocco del file system; - puntatore alla root del file system a cui è montato; - puntatore alla directory su cui è montato; 82 Storia • Il file system Unix, negli anni, si è evoluto da sistema di files locali a sistemi di files distribuiti (ad esempio nfs); • L’interfaccia (system calls) verso il file system è rimasta invece abbastanza stabile; • Oggi normalmente il kernel è in grado di supportare file system multipli, ((coesistenti sulla stessa macchina); ); • Nel seguito si descrive s5fs (il file system originale di System V). 80 Tipiche tipologie di file systems supportati in SVR4 File System Description S5fs Original System V file system ufs Berkeley Fast File System adapted to vnode/vfs interface vxfs Veritas journal file system specfs A file system for device special files NFS Network File System RFS Remote File System fifofs A file system for first-in, first-out files /proc File System which represent each process as file bfs Boot File System s5fs: Organizzazione del disco • Ogni disco è suddiviso in zone contigue dette dischi logici (o volumi, o partizioni); • Ogni file system è interamente contenuto in un volume, ed ogni volume può contenere un solo file system; • Per creare un file system si usa il comando mkfs; • La dimensione dei volumi è fissa fissa, e specificata al momento della creazione del file system. 81 s5fs: Organizzazione del disco Un file system può essere montato su altri file system mediante il comando mount (e smontato mediante il comando umount) File System 1 dev bin usr FS 2 staff VOLUME /dev/dk/1 /dev/dk/2 FS 3 /d /dk/3 /dev/dk/3 DISCO 82 s5fs: Organizzazione del disco • Ogni volume è suddiviso in blocchi di dimensione fissa (512, 1024, 2048 o più bytes a seconda della versione di sistema); • Un blocco costituisce la unità di allocazione a un file e la unità di accesso al disco ........ 83 s5fs: Organizzazione del disco Un volume è suddiviso in quattro aree distinte; Le aree hanno dimensione fissa definita al momento della configurazione del sistema Area di bootstrap Area di controllo (o superblocco) A Area dei descrittori di file (i‐list) d id itt i di fil (i li t) Area dei blocchi dati Volume 84 s5fs: Area di bootstrap • Non serve per gestire i files: contiene il programma di bootstrap per la inizializzazione del sistema; • Si usa l'area di bootstrap p del volume che contiene il root file system y ((ma per uniformità c’è su ogni volume). 85 s5fs: Area dei blocchi dati • Contiene i blocchi dati di tutti i file del file system, e i blocchi liberi, che possono essere allocati ai files; • I blocchi vengono allocati ai vari file e deallocati quando necessario: pertanto i blocchi di un file non sono necessariamente contigui; • Tutti i blocchi liberi sono collegati in una free-block list, la cui testa è nel superblocco; p ; d descrittore itt d l file del fil • Gli indirizzi dei blocchi dati di un file sono nel descrittore d l fil del file ((contenuto t t nella ll ii-list). li t) di i-number n (64 bytes) Area blocchi dati 3 01 ... n .........max Super blocco 1 2 2 3 1 File A File B Free 86 s5fs: Area dei descrittori di file (i-list) • È una tabella di descrittori di file denominati i-node (“index-node”); • Ciascun i-node è accessibile attraverso il suo indice nella tabella (i-number). descrittore del file di i‐number n (64 bytes) Area blocchi dati 3 01 ... n .........max Super blocco i list i‐list 1 2 2 3 1 File A File B Free 87 Campo Dimensioni (byte) Descrizione di_mode 2 Tipo di file, permessi, etc. di_nlinks 2 Numero di hard links al file di_uid 2 UID proprietario di_gid 2 GID proprietario di_size 4 Dimensione in bytes di_addr 39 di_gen 1 Generation number di_atime 4 Tempo di ultimo accesso di_mtime 4 Tempo dell’ultima modifica di_ctime 4 Tempo ultima modifica inode Array degli indirizzi dei blocchi Struttura di un inode s5fs: i-node Tipo di file Nu mero di (h ard) lin k al file UID del proprietario GID del proprietario Permessi di accesso Dimen sion e del file in bytes Tabella degli in dirizzi dei blocch i dati Un i-node contiene gli attributi di un file. Ora e data dell'u ltimo accesso Ora e data dell'u ltima modifica Ora e data dell'u ltima modifica dell'i-n ode 88 s5fs: i-node R W X per il proprietario Permessi: 12 bit R W X R per il gruppo W X per gli altri Sticky bit: permette di richiedere al kernel che l’immagine l immagine di un processo resti allocata nell’area di swap anche dopo la sua terminazione (utile per programmi frequentemente utilizzati, es. vi) SETUID: set user-id SETGID: set group-id SETGID id Sticky bit 89 s5fs: i-node Sticky bit: • permette tt di richiedere i hi d all kernel k l che h l’i l’immagine i di un processo resti ti allocata ll t nell’area di swap anche dopo la sua terminazione (utile per programmi frequentemente utilizzati, es. vi); • comando unix: chmod +t program-file; • un eseguibile con lo sticky bit settato non viene rimosso dalla memoria primaria anche se nessun processo lo sta usando; • solo il super-user puó settare lo sticky bit (perché?); • Lo sticky bit viene disabilitato - all’apertura del file in scrittura - chmod -t program-file p g - rm file - unmount filesystem of file - kernel out of space in swap device 90 s5fs: i-node Set-Uid bit (S): • L’obiettivo è quello di concedere temporaneamente i privilegi di un utente ad un altro; process id process-id real user id possessore del file in esecuzione effective user id possessore del processo (chi lo ha lanciato) • normalmente,, i privilegi p g di un p processo (q (quali p permessi p possiede)) sono q quelli dell’utente che ha lanciato il processo. 91 s5fs: i-node Set-Uid bit (S): Consideriamo un programma PIPPO appartenente all all’utente utente A, A ed un utente B che esegue PIPPO. 92 s5fs: i-node Set-Uid bit (S): 93 s5fs: i-node 1 accesso 0 1 2 accessi La tabella degli indirizzi è composta di 13 indirizzi, e si basa su una struttura a quattro livelli. livelli 9 10 11 3 accessi 12 4 accessi i-node blocchi dati 94 Esempio 1 Ipotesi: blocco: indirizzo: 1024/4 = 1 Kb 4 bytes 256 indirizzi per blocco Come accedere al byte 12500 di un file? 12500/1024 = 12 con resto 212 Quindi devo accedere al 212 212-esimo esimo byte del 13 13-esimo esimo blocco del file file. 95 Esempio 2 Ipotesi: blocco: indirizzo: 1024/4 = 1 Kb 4 bytes 256 indirizzi per blocco Qual è la dimensione massima indirizzabile? 10 * 1 Kb 256 * 1 Kb 256 * 256 * 1 Kb 256 * 256 * 256 * 1 Kb = 10 Kb = 256 Kb = 64 Mb = 16 Gb + + + = > 16 GB per file NB: In ogni caso, poichè 32 bit indirizzano solo fino a 4 Gb (232), la dimensione è limitata a 4 Gb per file. 96 s5fs: prestazioni La struttura di indirizzamento a un file privilegia i file piccoli rispetto ai file grandi. Nota: In una tipica installazione Unix, la maggior parte dei file ha dimensioni molto piccole. Ad esempio, uno studio su un campione di circa 20.000 files ha dato questi risultati: 48% 85% dei files dei files <= 1 Kb <= 8 Kb [Mullender Tanenbaum [Mullender, Tanenbaum, Immediate Files Files, in Software Practice and Experience Experience, Aprile 1984] 97 s5fs: superblocco È un singolo blocco, e contiene informazioni globali sul volume: • dimensione del volume (# blocchi) • informazioni per gestione blocchi liberi (numero dei blocchi liberi nel volume, testa della free-block list, flag di lock della free-block list) • dimensione della i-list • informazioni per gestione i-nodes liberi (numero degli i-node liberi, cache degli i-node liberi, flag di lock per la lista degli i-node liberi) • flag che indica se il superblocco è stato modificato 98 s5fs: superblocco • Nel superblocco viene mantenuto un elenco di i-number di i-node liberi (“caching”); • Quando serve un i-node libero, dalla cache viene prelevato un i-number (se c è); c’è); • Quando la cache è vuota, la si rialimenta scandendo la i-list per cercare altri i-node liberi ((campo p “tipo-file” p a 0)) (Ci si ricorda l’ultimo i-node letto nella i-list, e la prossima ricerca riparte da lì); • In tal modo, gli i-node liberati vengono riutilizzati (Q (Questo t approccio i non è utilizzabile tili bil per i bl blocchi hi lib liberi, i perché hé questi ti non sono riconoscibili). 99 s5fs: free-block list n el s uperblocco (co pia in memo ria) 49 Free b lo cks add re ss b locks 49 0 49 0 0 ... ... ... ... con t at ore pun t at ori s ign ificat iv i ... ... Free b lo cks Vantaggi: Con 1 accesso al disco (al massimo) posso: - ottenere gli indirizzi di molti blocchi liberi - liberare molti blocchi (Una normale lista lineare permetterebbe di ottenere un solo blocco alla volta) lt ) 102 s5fs: superblocco Per motivi di efficienza, copia del superblocco sta normalmente in memoria... ... e il sistema lo registra g p periodicamente su disco,, se è stato modificato MEMORIA CENTRALE Copia del superblocco DISCO all'inizio superblocco periodicamente (flag di modifica alto) 100 s5fs: superblocco Il superblocco è un’area critica, senza la quale l’intero file system non è più accessibile. Che cosa p può capitare: p - Il blocco fisico di disco su cui risiede può rovinarsi - Il sistema può cadere prima dell'allineamento fra superblocco in memoria i e su di disco Architettura molto pericolosa! 101 Risoluzione pathname /usr/f1 Pathname del file da accedere: Visione logica: / Visione fisica: NB: Si suppone per semplicità che tutti i file e la i-list occupino i un solo l bl blocco. i‐list bin usr Area blocchi dati f1 usr f1 f2 / <dati> ... ... ... f2 f1 1 57 4 ..... 112 bin x user 57 112 103 Risoluzione del pathname per /usr/ast/mbox L’i-node indicizzato dall’i-number 60 contiene l’indirizzo del blocco per il file mbox Miglioramenti rispetto a s5fs: – – Lunghezza massima dei nomi portata a 256 caratteri Più di 65535 inodes nel File System Miglioramenti rispetto a s5fs: – – Lunghezza massima dei nomi portata a 256 caratteri Più di 65535 inodes nel File System Ogni partizione è suddivisa in gruppi di cilindri contigui, ciascuno con proprie informazioni di servizio. Ciò permette di adottare particolari strategie per tenere vicini dati correlati. track2 track1 track0 Sector 0 Sector 1 head 0 Cylinder 0 platters head 1 Cylinder 1 head 2 Miglioramenti rispetto a s5fs: – – Lunghezza massima dei nomi portata a 256 caratteri Più di 65535 inodes nel File System Ogni partizione è suddivisa in gruppi di cilindri contigui, ciascuno con proprie informazioni di servizio. Ciò permette di adottare particolari strategie per tenere vicini dati correlati. Il superblocco è copiato in mirroring in ciascun gruppo di cilindri al fine di aumentare la sicurezza. Miglioramenti rispetto a s5fs: – – Lunghezza massima dei nomi portata a 256 caratteri Più di 65535 inodes nel File System Ogni partizione è suddivisa in gruppi di cilindri contigui, ciascuno con proprie informazioni di servizio. Ciò permette di adottare particolari strategie per tenere vicini dati correlati. Il superblocco è copiato in mirroring in ciascun gruppo di cilindri al fine di aumentare la sicurezza. File System diversi possono avere block size diversi: 4096 bytes, 8192 bytes, etc. – due livelli di accesso indiretto bastano per 4 Gb Miglioramenti rispetto a s5fs: – – Lunghezza massima dei nomi portata a 256 caratteri Più di 65535 inodes nel File System Ogni partizione è suddivisa in gruppi di cilindri contigui, ciascuno con proprie informazioni di servizio. Ciò permette di adottare particolari strategie per tenere vicini dati correlati. Il superblocco è copiato in mirroring in ciascun gruppo di cilindri al fine di aumentare la sicurezza. File System diversi possono avere block size diversi: 4096 bytes, 8192 bytes, etc. – due livelli di accesso indiretto bastano per 4 Gb Un blocco è suddiviso in n frammenti da 1, 2, …, 8 (minima dimensione 512 bytes). Un file in FFS è composto da un insieme di blocchi sul disco completi – l’ultimo blocco del file può essere parziale (1 o più frammenti contigui)