Σύστημα Αρχείων File System
Περίληψη Το σύστημα αρχείων από την σκοπιά του χρήστη Ονομασία αρχείων και επιτρεπόμενες λειτουργίες Κατάλογος αρχείων (directories) Το σύστημα αρχείου από την σκοπιά του σχεδιαστή Πως αποθηκεύονται τα αρχεία και οι κατάλογοι Διαχείριση του χώρου του δίσκου Αποδοτική και αξιόπιστη λειτουργία Παραδείγματα CD-ROM MS-DOS & Windows Linux
Αρχεία Αρχεία (files) είναι ένας «μηχανισμός» με το οποίο Αποθηκεύονται πληροφορίες σε συσκευές αποθήκευσης έτσι που να μπορούν εύκολα να διαβαστούν σε μεταγενέστερο χρόνο. Χωρίς ο χρήστης να πρέπει να ξέρει που ακριβώς αποθηκεύθηκαν τα δεδομένα ή πως ακριβώς λειτουργεί ο δίσκος. Οργάνωση Δεδομένων Πεδία (fields) Καταχωρήσεις (records): Συλλογή από σχετικά πεδία Αρχεία (files): Συλλογή από σχετικές καταχωρήσεις Βάσεις Δεδομένων (databases)
Απώτεροι Στόχοι του Συστήματος Διαχείρισης Αρχείων Να ικανοποιεί τις ανάγκες του χρήστη Να «εγγυάται» (στο δυνατό βαθμό) την αξιοπιστία των δεδομένων Τα δεδομένα είναι ορθά Τα δεδομένα δεν έχουν χαθεί Να Βελτιστοποιεί την απόδοση Ρυθμός διεκπεραίωσης καθώς και χρόνος απόκρισης Να υποστηρίζει τις συσκευές αποθήκευσης δεδομένων Να παρέχει τυποποιημένη και εύκολη πρόσβαση στις συσκευές Ε/Ε Να υποστηρίζει πολλαπλούς χρήστες (σε περίπτωση συστημάτων με πολλαπλούς χρήστες)
Ανάγκες χρηστών Ο κάθε χρήστης θέλει να μπορεί να δημιουργήσει και να διαγράψει, να διαβάζει, να γράφει ή να μεταβάλλει ένα αρχείο. Ο κάθε χρήστης θέλει να ελέγχει την πρόσβαση στα δικά του αρχεία καθώς και να έχει ελεγχόμενη πρόσβαση στα αρχεία άλλων χρηστών Η πρόσβαση να γίνεταί με συμβολικά ονόματα (όχι απλούς αριθμούς) Ο κάθε χρήστης θέλει να μπορεί να αναδιοργανώνει τα αρχεία του ανάλογα με το πρόβλημα Ο κάθε χρήστης θέλει να μπορεί να μεταφέρει δεδομένα μεταξύ αρχείων Ο κάθε χρήστης θέλει να έχει πρόσβαση στα δεδομένα του ακόμα και μετά από κάποιο καταστροφικό γεγονός ή και «βλακεία» (backup)
Ονόματα Αρχείων Το ΛΣ μπορεί να διάφορους κανόνες σχετικούς με τα ονόματα των αρχείων Το μέγεθος ενός ονόματος (π.χ. 8 χαρακτήρες) Τη χρήση ειδικών χαρακτήρων (π.χ. !.#$%) Τη δομή του ονόματος (π.χ. Filename.ext) Η προέκταση του ονόματος (.ext) μπορεί να δηλώνει το τύπο του αρχείου fn.txt, fn.c, fn.hlp, fn.pdf, fn.exe … Τη χρήση κεφαλαίων ή μικρών χαρακτήρων (fn.txt ή Fn.txt)
Βασική Δομή Αρχείων 1 byte 1 record Συνεχόμενη σειρά από bytes (Unix and Windows) Συνεχόμενη σειρά από καταχωρήσεις Δέντρο (tree)
Τύποι Αρχείων Κανονικά αρχεία (regular files) περιέχουν δεδομένα του χρήστη ASCII or Binary Κατάλογοι αρχείων (directories) Ειδικά αρχεία (Character and block special files) Τα διάφορα αρχεία έχουν δομή η οποία εξαρτάται από το ΛΣ. Κάθε ΛΣ πρέπει να αναγνωρίζει τουλάχιστον τα αρχεία προγραμμάτων (executables) Magic number Text size Data size BSS size Entry point Flags Text Data Relocation Bits Symbol Table (Debugging) Header
Πρόσβαση στα Αρχεία Σειριακή Πρόσβαση (sequential access) Όλα τα bytes ή όλες οι καταχωρήσεις διαβάζονται με την σειρά Εάν από ένα αρχείο χρειαζόμαστε μόνο την τελευταία γραμμή, πρέπει να διαβάσουμε ολόκληρο το αρχείο! Τυχαία Πρόσβαση Αρχείων (Random Access Files) Τα αρχεία μπορούν να διαβαστούν από οποιοδήποτε σημείο Η τυχαία πρόσβαση είναι πολύ σημαντική για πολλές εφαρμογές όπως π.χ. τις βάσεις δεδομένων Μέθοδοι για τυχαία πρόσβαση Read: παίρνει σαν παράμετρο τη διεύθυνση του σημείου απ’ όπου να ξεκινήσει η πρόσβαση. Seek: Ειδική εντολή η οποία τοποθετεί το «δείκτη» του αρχείου σε οποιοδήποτε σημείο. Πρόσβαση χρησιμοποιώντας Συστημικές κλήσεις Memory map (Το αρχείο φορτώνεται στο χώρο της διεργασίας)
Ιδιότητες Αρχείων (File Attributes)
Λειτουργίες Αρχείων (File Operations) Create: Δημιουργία αρχείου Delete: Διαγραφή αρχείου και ελευθέρωση μνήμης Open: Φόρτωση ιδιοτήτων και διευθύνσεων του αρχείου στην κύρια μνήμη Close: Ελευθέρωση της κύριας μνήμης Read / Write / Append Δείκτης (current position) Seek: Μετακινεί το δείκτη στο σημείο που θέλει ο χρήστης Get/Set Attributes: Διαβάζουν ή αλλάζούν τις ιδιότητες του αρχείου Rename: Αλλάζει το όνομα του αρχείου
Κατάλογοι Αρχείων (Directories) Χρησιμοποιούνται για την καλύτερη οργάνωση των αρχείων Συστήματα με ένα μόνο φάκελο (root directory) δεν είναι πρακτικά Όλοι οι χρήστες πρέπει να αποθηκεύουν τα αρχεία τους στο ίδιο φάκελο Δεν μπορεί να χρησιμοποιηθεί το ίδιο όνομα αρχείου Ιεραρχικοί κατάλογοι αρχείων Κάθε φάκελος μπορεί να περιέχει αρχεία και φακέλους Πρόσβαση στα αρχεία παρέχεται με το όνομα του μονοπατιού (path name) Απόλυτο (ολόκληρο) μονοπάτι (Absolute path name) Σχετικό μονοπάτι (Relative path name)
Λειτουργίες Καταλόγων (Directory Operations) Create: Δημιουργία ενός καταλόγου Delete: Διαγραφή Καταλόγου (Μόνο άδειοι κατάλογοι μπορούν να διαγραφούν) Opendir: Φόρτωση ιδιοτήτων και διευθύνσεων του καταλόγου στην κύρια μνήμη Closedir: Ελευθέρωση της κύριας μνήμης Readdir: Επιστρέφει την επόμενη καταχώρηση στον κατάλογο Rename: Αλλάζει το όνομα του αρχείου Link / unlink: Συνδέει αρχεία έτσι που το ίδιο αρχείο να εμφανίζεται στο κατάλογο περισσοτέρων χρηστών Ένα πρόγραμμα μπορεί να το βλέπουν όλοι οι χρήστες αλλά να υπάρχει ένα μόνο αντίγραφο στο δίσκο
Διαρρύθμιση του Συστήματος Αρχείων Σύστημα Αρχείων MBR Partition 1 Partition 2 Partition 3 Partition 4 Partition Table Master Boot Record Δομή ενός Partition (εξαρτάται από σύστημα αρχείων) Boot Block Super Free space management i-nodes Root Directory Files & Directories Super Block: Παράμετροι του συστήματος αρχείων Free Space Management: Τρόπος διαχείρισης των ελεύθερων τομέων i-nodes: δομή δεδομένων που χαρακτηρίζει κάθε κατάλογο και αρχείο (UNIX)
Αποθήκευση Αρχείων Ένα αρχείο μπορεί να αποθηκευτεί σε μια σειρά από συνεχόμενους τομείς (blocks) Σημειώστε πως τα blocks ορίζονται από το ΛΣ και πιθανότατα είναι διαφορετικά από του τομείς (sectors) του δίσκου. Για παράδειγμα ένα sector μπορεί να είναι 512 bytes ενώ το ΛΣ μπορεί να ορίσει το block σαν 2K (δηλαδή 4 sectors). Απλή μέθοδος διαχείριση Για ένα αρχείο το μόνο που χρειάζεται είναι η αρχική διεύθυνση και το μέγεθος του αρχείου. Έχει εξαιρετική απόδοση αφού με μια μόνο αναζήτηση μπορούμε να διαβάσουμε ολόκληρο το αρχείο Το σημαντικό μειονέκτημα της μεθόδου είναι ότι οδηγεί σε κατακερματισμό (fragmentation) της χωρητικότητας του δίσκου Όταν διαγραφεί ένα αρχείο αφήνει πίσω του τρύπες Χρησιμοποιείται στα CD-ROMS
Αποθήκευση Αρχείων Τα blocks συνδέονται μεταξύ τους σε διάταξη συνδεδεμένης λίστας Η πρώτη καταχώρηση κάθε block είναι ο δείκτης στο επόμενο block Block 0 Locat. 4 File A Block 1 Locat. 7 Block 2 Locat. 2 Block 3 Locat. 10 Block 4 Locat. 12 Locat. 6 File B Locat. 3 Locat. 11 Locat. 14 Η μέθοδος αυτή έχει σοβαρό πρόβλημα απόδοσης Εάν χρειαζόμαστε κάποιες πληροφορίες από το block 4 του Αρχείου Α, τότε θα πρέπει να διαβάσουμε τουλάχιστον την επικεφαλίδα κάθε block 0-3 για να βρούμε το block 4. Επίσης το μέγεθος του block δεν είναι πλέον δύναμη του 2.
Αποθήκευση Αρχείων Εναλλακτικά η λίστα φορτώνεται ολόκληρη στην κύρια μνήμη (File Allocation Table (FAT)) Το πρόβλημα με αυτή τη μέθοδο είναι το μέγεθος του FAT Αν ένας δίσκος είναι 20GB και εάν τα blocks είναι 1KB, τότε χρειαζόμαστε περίπου 60-80MB Θα μπορούσε να χρησιμοποιηθεί σύστημα σελίδωσης οπόταν μόνο μέρος του FAT θα είναι φορτωμένο στην κύρια μνήμη 2 4 6 8 10 12 14 10 11 7 3 2 12 14 -1 File A File B
Αποθήκευση Αρχείων i-nodes (index-nodes) Δομές δεδομένων που κρατούν πληροφορίες για κάθε αρχείο και κάθε κατάλογο Κρατούν επίσης μια σειρά με δείκτες σε όλα τα blocks του αρχείου Η τελευταία καταχώρηση της σειράς κρατείται σε περίπτωση που το μέγεθος του αρχείου είναι μεγαλύτερο από το μέγιστο χώρο της σειράς. Σε τέτοια περίπτωση, η τελευταία καταχώρηση δείχνει σε ένα άλλο i-node. Όταν χρησιμοποιούμε i-nodes μπορούμε να φορτώσουμε στην κύρια μνήμη μόνο τα i-nodes των ανοικτών αρχείων. File attributes Address of block 0 Address of block n-1 Address of block n Other table
Ιδιότητες Αρχείων Που αποθηκεύουμε το όνομα (συμπεριλαμβανομένου και του μονοπατιού) και τις ιδιότητες (attributes) κάθε αρχείου Μια πιθανή λύση είναι στην καταχώρηση του καταλόγου Σε περίπτωση που χρησιμοποιούνται i-nodes τότε αποθηκεύουμε το όνομα στην καταχώρηση του καταλόγου και τις υπόλοιπες ιδιότητες στο i-node. Πόσο χώρο δεσμεύουμε για την κάθε ιδιότητα; Π.χ., πόσο χώρο να αφιερώσουμε για το όνομα του αρχείου; Σε περίπτωση σταθερού χώρου MS-DOS: 8 χαρακτήρες συν 3 χαρακτήρες για προέκταση. Αυτή η λύση είναι περιοριστική, όμως δεν σπαταλά μνήμη. Κάποιος θα μπορούσε να επιτρέψει ονόματα μέχρι 255 χαρακτήρες, όμως στα πλείστα αρχεία ο χώρος θα έμενε αχρησιμοποίητος Σε περίπτωση μεταβαλλόμενου χώρου, πρέπει από την αρχή να δηλώνουμε το μέγεθος του ονόματος Τι θα συμβεί αν μεγαλώσει το όνομα ή αν διαγράψουμε το αρχείο;
Αρχεία που Χρησιμοποιούνται από Πολλαπλούς Χρήστες (sharing) Σε περιπτώσεις που ένα αρχείο χρησιμοποιείται από περισσότερους από ένα χρήστες δημιουργούνται διάφορα προβλήματα Εάν ένα αρχείο εμφανίζεται στο σύστημα αρχείων δύο χρηστών (A-B) τότε αν ο Α προσθέσει κάποια δεδομένα (append) τότε η αλλαγές θα εμφανιστούν στο σύστημα του Α αλλά όχι του Β. Η λίστα με τα blocks του αρχείου να μην αποθηκεύεται στον κατάλογο αλλά σε μια δομή συνδεδεμένη με το αρχείο (π.χ. i-node). Χρησιμοποιώντας Link αρχεία (symbolic linking) Εάν ένα αρχείο ανήκει στον χρήστη Α και το χρησιμοποιεί και ο Β. Τι θα συμβεί αν αποφασίσει ο Α να το διαγράψει; Κάθε αρχείο έχει και ένα μετρητή που μετρά τους χρήστες που το χρησιμοποιούν. Όταν ένας νέος χρήστης θέλει το αρχείο, ο μετρητής αυξάνεται κατά ένα Όταν ένας χρήστης θέλει να το διαγράψει, τότε αφαιρείται ένα από το μετρητή Εάν η τιμή του μετρητή είναι 0, τότε ο αρχείο διαγράφεται
Μέγεθος των Blocks Εάν χρησιμοποιείται σελίδωση (paging), τότε το μέγεθος της κάθε σελίδας (page) είναι το ίδιο με το μέγεθος των blocks. Σε περίπτωση που χρησιμοποιούνται μεγάλα blocks τότε γίνεται σπατάλη της μνήμης αφού μεγάλο μέρος του block μπορεί να μείνει κενό. Μεγάλα blocks όμως διαβάζονται σχετικά πιο γρήγορα (λιγότερες αναζητήσεις - seek) και χρειάζονται λιγότερο χώρο για τον πίνακα αρχείων
Διαχείριση Αχρησιμοποίητων Blocks Bit-map: Σε κάθε block αντιστοιχεί ένα bit το οποίο υποδηλώνει κατά πόσο το block είναι ελεύθερο ή όχι. Πίνακας με δείκτες (index table): Το ΛΣ διατηρεί ένα πίνακα στον οποίο αναγράφονται οι διευθύνσεις όλων των ελεύθερων blocks. Συνεχόμενα blocks: Το ΛΣ διατηρεί, ένα πίνακα στον οποίο αναγράφεται η διεύθυνση του πρώτου ελεύθερου block καθώς και ο αριθμός των συνεχόμενων ελεύθερων που ακολουθούν
Αξιοπιστία του Συστήματος Αρχείων Οι πληροφορίες ενός συστήματος αρχείων πρέπει να αποθηκεύονται τακτικά σε εναλλακτικά μέσα αποθήκευσης, π.χ. μαγνητικές ταινίες (Backup). Τα αντίγραφα (backup) θα πρέπει να φυλάγονται σε διαφορετικούς χώρους για αποφυγή καταστροφικών γεγονότων (π.χ. φωτιά σε κτίριο). Physical Dump Αντιγράφονται όλοι οι τομείς (sectors) του δίσκου Δεν υπάρχει λόγος να αντιγράψουμε άδειους ή χαλασμένου τομείς Ποια αρχεία αποθηκεύονται Αρχεία με δεδομένα Δεν υπάρχει λόγος αποθήκευσης προγραμμάτων (εφόσον έχουμε το CD εγκατάστασης) Δεν υπάρχει λόγος αποθήκευσης προσωρινών αρχείων Αρχικά αποθηκεύονται όλα τα αρχεία και στη συνέχεια μόνο τα αρχεία τα οποία έχουν μεταβληθεί (incremental dump) Έλεγχος της συνέπειας (consistency) των δεδομένων Ελέγχουμε κατά πόσο οι πίνακες αρχείων και αχρησιμοποίητων αρχείων είναι σωστοί (π.χ., ένα block δεν εμφανίζεται και σαν άδειο αλλά και σαν καταχωρημένο)
Απόδοση του Συστήματος Αρχείων Caching: Αρχεία (ή blocks) τα οποία έχουν χρησιμοποιηθεί στο παρελθόν φυλάγονται στην μνήμη εάν υπάρχει περίπτωση να ξαναχρησιμοποιηθούν στο άμεσο μέλλον Κάποια blocks μπορεί να φορτωθούν στην μνήμη πριν ακόμα ζητηθούν π.χ. εάν ζητηθεί το n μπορεί να φορτωθεί και το n+1 σε περίπτωση που χρειαστεί. Πόσο συχνά φυλάγεται block από το cache στο δίσκο; Κάθε φορά που γίνεται κάποια αλλαγή, αυτή αποθηκεύεται αμέσως στο δίσκο (write-through caches) Δημιουργεί πολλές συστημικές κλήσεις αλλά αποφεύγει πιθανόν απώλειες δεδομένων λόγω οποιασδήποτε βλάβης MS-DOS Οι αλλαγές αποθηκεύονται περιοδικά (π.χ. κάθε 30 δευτερόλεπτα) Υπάρχει περίπτωση να χαθούν δεδομένα UNIX
Σύστημα Αρχείων CD-ROM Το σύστημα αρχείων του CD-ROM (π.χ. ISO 9660) είναι από τα πιο απλά και στόχο έχει να μπορεί να χρησιμοποιείται σε διαφορετικά συστήματα (π.χ. Linux, Windows, Mac κλπ). Το πρότυπο ISO 9660 υποστηρίζει μέχρι 216-1 = 65535 Το μέγεθος ενός block μπορεί να είναι 2048, 4096 ή 8192 bytes. Σε ειδικές περιπτώσεις μπορεί να είναι μεγαλύτερο. Τα πρώτα 16 blocks δεν ορίζονται από το πρότυπο. Ο κατασκευαστής μπορεί να τα χρησιμοποιήσει για κάποιο πρόγραμμα ή για να αρχικοποιήσει το σύστημα (boot up) Primary Volume Descriptor περιέχει γενικές πληροφορίες για το CR-ROM Βlock size, number of blocks on the CD-ROM, address of the root directory (its block number) System, volume, publisher, and data preparer identifiers Abstract, copyright notice, bibliographic information
Σύστημα Αρχείων CD-ROM Directory entry length padding Location of file File size Date & Time File name CD # L sys 1 8 7 2 4 4-15 Extended Attribute Length Flags Interleave Καταχωρήσεις καταλόγου (directory entries) Location of File: αρχικό block του αρχείου Flags: Κρυμμένα αρχεία (hidden entries), προεκτάσεις (extended entries) κλπ. CD #: ο αριθμός του CD στο οποίο είναι καταχωρημένο το αρχείο L: το μέγεθος του ονόματος του αρχείου File name: basename.ext;ver Padding: χρησιμοποιείται εάν χρειαστεί για να κάνει το συνολικό αριθμό των bytes άρτιο. Sys: προεκτάσεις στο πρότυπο
Σύστημα Αρχείων CD-ROM Στο πρότυπο ορίζονται 3 επίπεδα Το Επίπεδο 1 (level 1) είναι το πιο περιοριστικό αλλά έχει τις περισσότερες πιθανότητες να δουλεύει με όλα τα συστήματα Ονόματα αρχείων με μόνο 8+3 χαρακτήρες και καταλόγων μέχρι 8 χαρακτήρες. Το δέντρο του καταλόγου εκτείνεται μόνο μέχρι οκτώ επίπεδα Τα αρχεία πρέπει να είναι συνεχόμενα Το Επίπεδο 2 επιτρέπει ονόματα μέχρι 31 χαρακτήρες Το Επίπεδο 3 Επιτρέπει αρχεία τα οποία να είναι μερικώς κατακερματισμένα Προεκτάσεις (Extensions) Rock Ridge Extension (UNIX) Επιτρέπει μεγαλύτερα ονόματα κλπ Joliet Extension (Windows)
Control Program for Microcomputers (CP/M) ΛΣ για τον Intel 8080 και αργότερα για τον Zilog Z80 Προπομπός του MS-DOS Απλό ΛΣ οι βάσεις του οποίου μπορούν να χρησιμοποιηθούν για το σχεδιασμό ΛΣ για ενθυλακωμένα συστήματα (embedded systems) Υποστηρίζει floppy drives αρχικά 180ΚΒ και αργότερα 720ΚΒ (μέχρι 64ΚΒ RAM). Υποστήριζε μόνο ένα κατάλογο (root directory) Για εξοικονόμηση μνήμης, ο κατάλογος δεν διατηρείται στην κύρια μνήμη Κατά τη αρχικοποίηση το ΛΣ δημιουργεί ένα bit-map όλων των blocks το οποίο διατηρείται στην κύρια μνήμη
Control Program for Microcomputers (CP/M) User Code Extent Disk block numbers File Name 1 8 3 2 File Type (extension) Block count Καταχωρήσεις καταλόγου (directory entries) Παρόλο που το σύστημα δεν υποστηρίζει ταυτόχρονους πολλαπλούς χρήστες, υποστηρίζει πολλαπλούς χρήστες οι οποίοι έχουν πρόσβαση ένας κάθε φορά. Το μέγεθος κάθε block είναι 1 ΚΒ (8 sectors των 128 bytes) To block count μετρά το συνολικό αριθμό blocks του αρχείου Σε περίπτωση που το αρχείο είναι μεγαλύτερο από 16ΚΒ (ο μέγιστος αριθμός από δείκτες σε blocks) μπορεί ένας δείκτης να δείχνει σε άλλο πίνακα ο οποίος περιέχει επιπρόσθετους δείκτες. Σε αυτή την περίπτωση το πεδίο extent κρατά τη σειρά των πινάκων
MS-DOS Όπως και το CP/M χρησιμοποιεί ονόματα 8+3 κεφαλαίων χαρακτήρων Αρχικά (έκδοση 1) υποστήριζε μόνο ένα κατάλογο (root directory) αλλά από την έκδοση 2 και μετά υποστηρίζει ιεραρχικούς καταλόγους Οι καταχωρήσεις των αρχείων στους καταλόγους είναι σταθερού μήκους 32 bytes Attributes Date File Name Reserved 8 3 1 10 2 File Size 4 File Type (extension) Time First Block Number Στην καταχώρηση δεν αποθηκεύονται οι διευθύνσεις όλων των block του αρχείου. Αποθηκεύει μόνο τη διεύθυνση του πρώτου block του αρχείου. Οι διευθύνσεις όλων block του αρχείου αποθηκεύονται στο File Allocation Table (FAT) το οποίο είναι φορτωμένο στην κύρια μνήμη
MS-DOS File Allocation Table (FAT) Blocks έρχονται σε πολλαπλάσια μεγέθη των 512 bytes (cluster sizes). Ανάλογα με το μέγεθος του κάθε block και τον αριθμό των bits που χρησιμοποιούνται για τις διευθύνσεις των blocks στο δίσκο καθορίζεται το μέγιστο μέγεθος ενός partition. FAT-12 Χρησιμοποιεί blocks 512 bytes, 1ΚΒ, 2ΚΒ ή 4ΚΒ Χρησιμοποιεί 12 bits για τις διευθύνσεις του κάθε block στο δίσκο FAT-16 Χρησιμοποιεί blocks 2ΚΒ, 4ΚΒ, 8ΚΒ, 16KB, 32KB Χρησιμοποιεί 16 bits για τις διευθύνσεις του κάθε block στο δίσκο FAT-32 Χρησιμοποιεί blocks 4ΚΒ, 8ΚΒ, 16KB, 32KB Χρησιμοποιεί 28 bits για τις διευθύνσεις του κάθε block στο δίσκο
MS-DOS Μέγιστο μέγεθος ενός partition στις διάφορες εκδόσεις του FAT Block Size FAT-12 FAT-16 FAT-32 0.5 KB 2 MB 1 KB 4 MB 2 KB 8 MB 128 MB 4 KB 16 MB 256 MB 1 TB 8 KB 512 MB 2 TB 16 KB 1024 MB 32 KB 2048 MB To MS-DOS βρίσκει τα ελευθέρα blocks απευθείας από το FAT, οπόταν δεν χρειάζεται επιπρόσθετη δομή
Windows NTFS Βασικό στοιχείου του NTFS είναι η ικανότητα της αποκατάστασης του συστήματος αρχείων (όχι κατ’ ανάγκη όλων των αρχείων) σε περίπτωση που χαλάσει ο δίσκος Κάθε αλλαγή στο σύστημα αρχείων αντιμετωπίζεται σαν «ατομική» αλλαγή (δηλαδή πρέπει να συμπληρωθεί ή δεν εκτελείται καθόλου). Κάθε σημαντική αλλαγή (cut-paste ενός φακέλου) καταχωρείται πρώτα σε ένα αρχείο (log-file). Εάν η αλλαγή δεν διεκπεραιωθεί κανονικά, τότε το σύστημα αρχείων θα αποκατασταθεί από το log-file. Ένα αρχείο στο NTFS δεν αποτελείται μόνο από μια σειρά από bytes, αλλά μπορεί να έχει πολλαπλές σειρές (multiple data streams). Μια σειρά μπορεί να έχει τα δεδομένα του αρχείου (π.χ. μια φωτογραφία), άλλη ροή μπορεί να έχει πληροφορίες για το αρχείο. Στην περίπτωση της φωτογραφίας άλλη σειρά μπορεί να έχει τη φωτογραφία σε σμίκρυνση. Γιατί;
Windows NTFS Το NTFS υποστηρίζει μεγάλους (και πολύ μεγάλους) δίσκους πολύ αποδοτικά. Οργανώνει τους τομείς (sectors) του δίσκου σε clusters (συνεχόμενοι τομείς). Το NTFS αναγνωρίζει μόνο clusters. Εάν χρησιμοποιούνται clusters των 32ΚΒ, ένα αρχείο 2ΚΒ θα κρατήσει ολόκληρο το cluster! Το NTFS χρησιμοποιεί τον ακόλουθο πίνακα για να καθορίσει το μέγεθος του cluster Volume Size Sectors per Cluster Cluster Size < 512MB 1 512b 4GB-8GB 16 8K 512MB-1GB 2 1K 8GB-16GB 32 16K 1GB-2GB 4 2K 16GB-32GB 64 32K 2GB-4GB 8 4K >32GB 128 64K
Windows NTFS Partition boot sector MFT & MFT2 System Files File Area Partition boot sector: πληροφορίες για την διαρρύθμιση του partition, τη δομή του συστήματος αρχείων, κώδικα για αρχικοποίηση MFT (Master File Table): Περιέχει πληροφορίες για όλους τους φακέλους και αρχεία του partition. Περιέχει δείκτες στα clusters στα οποία είναι αποθηκευμένο το κάθε αρχείο. Περιέχει επίσης ιδιότητες του κάθε αρχείου καθώς και ένα bit-map με τα ελεύθερα clusters MFT2: αντίγραφο του MFT για αξιοπιστία
Linux The Linux Virtual File System VFS Ο στόχος του είναι να καταστήσει το σύστημα αρχείων του Linux συμβατό με διάφορα άλλα συστήματα αρχείων (π.χ. FAT, NTFS, IBM JFS). Όταν μια διεργασία καλέσει μια συστημική κλήση τότε το VFS χειρίζεται την κλήση μέχρι ενός σημείου και μετά καλεί την κατάλληλη ρουτίνα του συστήματος αρχείων στο οποίο ανήκει το αρχείο Τα βασικά στοιχεία ενός partition του Linux είναι Superblock object I-node Object D-entry Object File Object
Linux Superblock object: Περιέχει σημαντικές πληροφορίες του συστήματος αρχείων Συσκευή στην οποία είναι εγκατεστημένο το σύστημα αρχείων Το μέγεθος των blocks Λίστα με τα ανοικτά αρχεία Δείκτη στο root directory Σηματοφόρους ελέγχου πρόσβασης στο σύστημα αρχείων Διάφορα bits που δείχνουν ποια αρχεία έχουν αλλάξει, ποια είναι μόνο για διάβασμα κλπ. Λίστα με τις λειτουργίες στο Superblock *read_inode, *write_inode, *delete_inode, κλπ. I-node Object Κάθε αρχείο ή κατάλογος (directory) έχει το δικό του i-node. Περιέχει ιδιότητες του αρχείου και δείκτες στα blocks στα οποία είναι αποθηκευμένο το αρχείο
Linux Λειτουργίες σε I-node Objects D-entry Object File Object create: Δημιουργεί νέο i-node για ένα νέο αρχείο lookup: Ψάχνει για το i-node που αντιστοιχεί σε κάποιο αρχείο mkdir: Δημιουργεί ένα νέο i-node για ένα νέο κατάλογο D-entry Object Υποστηρίζουν την πρόσβαση στα αρχεία και καταλόγους (directories) File Object Κρατούν πληροφορίες των ανοικτών αρχείων D-entry του αρχείου Το σύστημα αρχείων στο οποίο βρίσκεται το αρχείο Ταυτότητες του χρήστη και της ομάδας Δείκτης στο σημείο που θα γίνει η επόμενη λειτουργία