Ανατομία Αποθήκευσης: Αρχεία Συστήματος, Κρυφής Μνήμης και Χρήστη

  • Η αρχιτεκτονική αποθήκευσης οργανώνεται σε επίπεδα: καταχωρητές, προσωρινή μνήμη, κύρια μνήμη και δευτερεύουσες και βοηθητικές μνήμες.
  • Τα συστήματα αρχείων διαχειρίζονται αρχεία, καταλόγους, δικαιώματα και κατανομή μπλοκ, χρησιμοποιώντας δομές όπως inodes, extents και journaling.
  • Τα Windows και το GNU/Linux χρησιμοποιούν προσωρινές μνήμες αρχείων και διαφορετικά συστήματα αρχείων (FAT, NTFS, ext, XFS, ZFS, APFS) ανάλογα με τις ανάγκες απόδοσης και αξιοπιστίας.
  • Τα διαμερίσματα και το MBR δομούν φυσικά τον δίσκο σε ανεξάρτητες λογικές μονάδες όπου βρίσκονται τα διαφορετικά συστήματα αρχείων.

⚠️ Το ψηφιακό σας δακτυλικό αποτύπωμα (διεύθυνση IP) είναι εκτεθειμένο!

Η διεύθυνση IP σας είναι: ανίχνευση…

Κάντε streaming/download/«Σερφάρισμα» στο διαδίκτυο ανώνυμα με το Surfshark .

🌐 Μόνο $45.63 - 27 μήνες + Unlimited devices
Δεν αποθηκεύουμε τη διεύθυνση IP σας. Η ανίχνευση γίνεται τοπικά στον browser σας.

Το περιεχόμενο αυτού του σεναρίου δημιουργείται αυστηρά για εκπαιδευτικούς σκοπούς. Η χρήση γίνεται με δική σας ευθύνη.

Όταν μιλάμε για τον τρόπο αποθήκευσης και μετακίνησης των πληροφοριών μέσα σε έναν υπολογιστή, συνήθως σκεφτόμαστε μόνο τον σκληρό δίσκο ή τη μνήμη RAM. Αλλά κάτω από όλα αυτά κρύβεται μια ολόκληρη αρχιτεκτονική αποθήκευσης με επίπεδα, προσωρινές μνήμες, συστήματα αρχείων και διαμερίσματα που καθορίζουν πόσο γρήγορα και με ασφάλεια εργαζόμαστε με δεδομένα. Η κατανόηση αυτής της ανατομίας είναι το κλειδί αν μελετάτε συστήματα, διαχειρίζεστε υπολογιστές ή απλώς θέλετε να μάθετε τι συμβαίνει όταν αποθηκεύετε ένα αρχείο ή όταν ένας δίσκος καταστραφεί.

Σε αυτό το άρθρο, θα εξερευνήσουμε, βήμα προς βήμα, πώς οργανώνεται ο χώρος αποθήκευσης από την CPU έως τη δευτερεύουσα αποθήκευση : τον ρόλο της προσωρινής μνήμης, πώς λειτουργεί η προσωρινή μνήμη του συστήματος αρχείων στα Windows, τι είναι ένα αρχείο, πώς οργανώνονται οι κατάλογοι, οι διαφορετικοί τύποι συστημάτων αρχείων (FAT, NTFS, ext, APFS, κ.λπ.) και πώς διαμερίζονται οι σκληροί δίσκοι χρησιμοποιώντας MBR. Θα ακολουθήσουμε μια πρακτική προσέγγιση με σχετικά, καθημερινά παραδείγματα.

Γενική ανατομία της αποθήκευσης σε ένα σύστημα υπολογιστή

Σε κάθε σύγχρονο υπολογιστή, βρίσκουμε πολλά επίπεδα μνήμης, το καθένα με διαφορετική ταχύτητα, χωρητικότητα και λειτουργία . Από πάνω προς τα κάτω, μπορούμε να τα οργανώσουμε ως εξής:

  • Μητρώα επεξεργαστή .
  • Ενσωματωμένη ή σχεδόν εγγύς μνήμης cache της CPU (L1, L2, L3).
  • Κύρια μνήμη (RAM).
  • Δευτερεύουσα αποθήκευση (σκληροί δίσκοι, SSD κ.λπ.).
  • Βοηθητική μνήμη (USB, εξωτερικοί σκληροί δίσκοι, οπτικές μονάδες, κ.λπ.).

Οι καταχωρητές είναι εξαιρετικά γρήγορες μνήμες που μπορούν να χωρέσουν μόνο ένα ή λίγα δεδομένα ανά καταχωρητή. Λειτουργούν ως εσωτερικές μεταβλητές του επεξεργαστή : για παράδειγμα, ο Μετρητής Προγράμματος (PC) αποθηκεύει τη διεύθυνση της επόμενης εντολής που θα εκτελεστεί και αλλάζει με κάθε βήμα. Αναγνωρίζονται με όνομα (PC, RI, AX, κ.λπ.), είναι ασταθείς και βασίζονται στην τεχνολογία ημιαγωγών.

Η κύρια μνήμη (RAM) αποτελείται από κελιά ίσου μεγέθους που ονομάζονται λέξεις (32, 64 ή 128 bit, ανάλογα με την αρχιτεκτονική). Για την πρόσβαση σε ένα κελί, χρησιμοποιείται η διεύθυνσή του, η οποία μεταδίδεται μέσω του διαύλου διευθύνσεων. Όπως και οι καταχωρητές, η RAM είναι πτητική: εάν διακοπεί η παροχή ρεύματος, το περιεχόμενό της χάνεται. Ακόμα κι έτσι, έχει πολύ μεγαλύτερη χωρητικότητα από τους καταχωρητές και είναι το σημείο όπου εκτελούνται τα προγράμματα και φορτώνονται τα δεδομένα κατά τον χρόνο εκτέλεσης.

Μνήμη cache και δεδομένα cache: επιτάχυνση της πρόσβασης

Ανάμεσα στην CPU και την κύρια μνήμη βρίσκεται η προσωρινή μνήμη, η οποία έχει σχεδιαστεί για να φέρνει τα δεδομένα που χρησιμοποιούνται συχνά πιο κοντά στον επεξεργαστή και να μειώνει την καθυστέρηση. Χρησιμοποιεί επίσης τεχνολογία ημιαγωγών και χωρίζεται σε κελιά, αλλά είναι ταχύτερη από τη μνήμη RAM και σημαντικά πιο ακριβή, γι’ αυτό και η χωρητικότητά της είναι χαμηλότερη.

Η ιδέα πίσω από την προσωρινή αποθήκευση είναι πάντα η ίδια, είτε μιλάμε για προσωρινή μνήμη CPU, προσωρινή μνήμη δίσκου ή προσωρινή μνήμη προγράμματος περιήγησης : η προσωρινή αποθήκευση πληροφοριών στις οποίες έχει ήδη γίνει πρόσβαση, έτσι ώστε, εάν χρειαστεί ξανά, να μπορούν να ανακτηθούν από μια ταχύτερη τοποθεσία από την αρχική πηγή (δίσκος, δίκτυο κ.λπ.).

Η έννοια της προσωρινής αποθήκευσης δεδομένων ισχύει επίσης σε επίπεδο εφαρμογής, διακομιστή και προγράμματος περιήγησης ιστού. Ένα πρόγραμμα περιήγησης, για παράδειγμα, αποθηκεύει προσωρινά εικόνες, σενάρια, αρχεία CSS και HTML την πρώτη φορά που επισκέπτεστε μια σελίδα. Με αυτόν τον τρόπο, όταν επιστρέψετε σε αυτόν τον ιστότοπο, δεν χρειάζεται να κατεβάσει ξανά τα πάντα. Αντίθετα, επαναχρησιμοποιεί τα τοπικά δεδομένα και ζητά μόνο ό,τι έχει αλλάξει, βελτιώνοντας σημαντικά τους χρόνους φόρτωσης.

Αυτός ο μηχανισμός προσωρινής αποθήκευσης χρησιμοποιείται επίσης σε άλλα στοιχεία: οι διακομιστές DNS αποθηκεύουν προσωρινά τις εγγραφές ονομάτων τομέα για ταχύτερες αναλύσεις και τα CDN (δίκτυα παράδοσης περιεχομένου) αναπαράγουν και αποθηκεύουν προσωρινά στατικό περιεχόμενο σε κόμβους που διανέμονται σε όλο τον κόσμο για να μειώσουν την καθυστέρηση για τους τελικούς χρήστες.

Δευτερεύουσα μνήμη: αποθήκευση μπλοκ και τομέων

Η κύρια μνήμη είναι γρήγορη αλλά έχει δύο προβλήματα: είναι ασταθής και δεν έχει αρκετή χωρητικότητα για να αποθηκεύσει όλες τις πληροφορίες που χειριζόμαστε (έγγραφα, βάσεις δεδομένων, βίντεο, αντίγραφα ασφαλείας κ.λπ.). Γι’ αυτό χρειαζόμαστε δευτερεύουσα και βοηθητική αποθήκευση: σκληρούς δίσκους, SSD και πρότυπα όπως UFS, USB, οπτικούς δίσκους κ.λπ. Είναι μόνιμες, φθηνότερες ανά μονάδα αποθήκευσης και έχουν μεγάλες χωρητικότητες.

Αυτές οι συσκευές δεν είναι οργανωμένες σε μικρά κελιά όπως η μνήμη RAM, αλλά σε φυσικά μπλοκ που ονομάζονται τομείς . Παραδοσιακά, το τυπικό μέγεθος ενός τομέα ήταν 512 byte. Οι λειτουργίες ανάγνωσης και εγγραφής εκτελούνται τουλάχιστον σε επίπεδο τομέα: δεν μπορείτε να διαβάσετε ή να γράψετε μια ποσότητα δεδομένων μικρότερη από έναν τομέα, ούτε μπορείτε να αντιμετωπίσετε ένα κλάσμα ενός τομέα.

Με την αύξηση της χωρητικότητας του δίσκου, κατέστη απαραίτητο να ομαδοποιηθούν διάφοροι τομείς για την καλύτερη διαχείριση του χώρου. Αυτό οδήγησε στη δημιουργία συστάδων ή μονάδων κατανομής , οι οποίες είναι ομάδες τομέων που το σύστημα αρχείων χρησιμοποιεί ως τη μικρότερη μονάδα κατανομής σε αρχεία. Αυτό απλοποιεί τη διαχείριση, αλλά έχει επιπτώσεις στην σπατάλη χώρου, όπως θα δούμε αργότερα.

Αρχεία και σύστημα αρχείων: η λογική του δίσκου

Για να αξιοποιήσει τις συσκευές αποθήκευσης, το λειτουργικό σύστημα χρειάζεται ένα λογικό επίπεδο που να καθορίζει τον τρόπο με τον οποίο αποθηκεύονται, οργανώνονται και ελέγχονται οι πληροφορίες σε αυτά τα φυσικά μπλοκ. Αυτό το επίπεδο είναι το σύστημα αρχείων.

Από λογική άποψη, το σύστημα αρχείων βασίζεται σε δύο βασικές έννοιες: το αρχείο και τον φάκελο ή κατάλογο . Ένα αρχείο είναι μια ακολουθία byte που είναι αποθηκευμένα σε ένα εξωτερικό μέσο και θεωρείται λογική μονάδα: ένα έγγραφο PDF, μια εικόνα, ένα βίντεο, μια βάση δεδομένων κ.λπ. Κάθε αρχείο έχει ένα όνομα και, συνήθως, μια επέκταση που βοηθά στην αναγνώριση του τύπου περιεχομένου (για παράδειγμα, .png, .txt, .pdf).

Ένας φάκελος ή κατάλογος είναι απλώς ένας τρόπος ομαδοποίησης αρχείων και άλλων καταλόγων σύμφωνα με τα κριτήρια του χρήστη ή του συστήματος για τη διευκόλυνση της οργάνωσης. Εσωτερικά, για το ίδιο το σύστημα αρχείων, ένας κατάλογος είναι ουσιαστικά ένα ειδικό αρχείο που αποθηκεύει πληροφορίες σχετικά με το περιεχόμενό του και τον τρόπο δομής του.

Το σύστημα αρχείων χειρίζεται κρίσιμες εργασίες όπως η ανάθεση τομέων και συστάδων σε αρχεία , η παρακολούθηση των μπλοκ που ανήκουν σε κάθε αρχείο, η παροχή λειτουργιών δημιουργίας, μετονομασίας, τροποποίησης και διαγραφής, η διατήρηση της ιεραρχικής δομής καταλόγων, ο έλεγχος των τομέων που είναι ελεύθεροι και των τομέων που είναι κατειλημμένοι, καθώς και η διαχείριση των δικαιωμάτων και της ασφάλειας πρόσβασης δεδομένων.

Είναι σύνηθες για κάθε οικογένεια λειτουργικών συστημάτων να έχει τα δικά της εγγενή συστήματα αρχείων, αν και η διασταυρούμενη συμβατότητα και η υποστήριξη μέσω συγκεκριμένων εργαλείων γίνονται ολοένα και πιο συνηθισμένες, συμπεριλαμβανομένων τρόπων πρόσβασης σε υπηρεσίες αποθήκευσης cloud. Τα δεδομένα που φτάνουν μέσω μιας γραμμής επικοινωνίας ή μιας ειδικής συσκευής μπορούν επίσης να εκτεθούν ως αρχεία, παρόλο που στην πραγματικότητα δημιουργούνται δυναμικά (συσκευές στο /dev στο GNU/Linux, για παράδειγμα).

Χαρακτηριστικά, δικαιώματα και ACL στο σύστημα αρχείων

Προκειμένου το λειτουργικό σύστημα να ελέγχει ποιος έχει πρόσβαση σε τι, κάθε πόρος (αρχεία, κατάλογοι, εκτυπωτές, πόροι δικτύου κ.λπ.) συνήθως έχει μια συσχετισμένη λίστα ελέγχου πρόσβασης (ACL) . Αυτή η λίστα εμφανίζει τους χρήστες ή τις ομάδες που μπορούν να έχουν πρόσβαση σε αυτόν και με ποια δικαιώματα: ανάγνωση, εγγραφή, εκτέλεση κ.λπ.

Εκτός από τα δικαιώματα, ένα αρχείο μπορεί να έχει χαρακτηριστικά που περιγράφουν τη φύση του ή την ειδική μεταχείρισή του από το σύστημα: αρχείο συστήματος, κρυφό, μόνο για ανάγνωση, κρυπτογραφημένο, κατάλογο, προσωρινό κ.λπ. Αυτά τα χαρακτηριστικά επηρεάζουν τον τρόπο με τον οποίο το αρχείο εμφανίζεται στον χρήστη και ποιες λειτουργίες επιτρέπονται.

Διαδρομές, ονόματα και μπαλαντέρ

Σχεδόν όλα τα σύγχρονα συστήματα αρχείων οργανώνουν τα δεδομένα ιεραρχικά με τη μορφή ενός δέντρου καταλόγων . Για να εντοπίσετε με μοναδικό τρόπο ένα αρχείο ή κατάλογο, χρησιμοποιείται η διαδρομή του, η οποία περιγράφει τη διαδρομή που πρέπει να ακολουθηθεί μέσα στο δέντρο: μια ακολουθία καταλόγων που χωρίζονται από έναν ειδικό χαρακτήρα, το τελευταίο στοιχείο του οποίου είναι το ίδιο το αρχείο ή ο φάκελος.

Σε συστήματα τύπου Unix (GNU/Linux, macOS στον πυρήνα του), η απόλυτη διαδρομή ξεκινά με μια κάθετο (/) που αντιπροσωπεύει τον ριζικό κατάλογο . Παράδειγμα: /home/Alicia/Documents/report.odt. Στα συστήματα της Microsoft, το γράμμα της μονάδας δίσκου προηγείται από άνω και κάτω τελεία (:) και ανάστροφες κάθετους: C:\Users\Alicia\Documents\report.odt.

Μπορούμε επίσης να χρησιμοποιήσουμε σχετικές διαδρομές, οι οποίες ξεκινούν από τον τρέχοντα κατάλογο του χρήστη . Για παράδειγμα, η εντολή ../../Jacinto/Documentos/memoria.odt υποδεικνύει “ανεβείτε δύο επίπεδα και μετά κατεβείτε στο Jacinto/Documentos/memoria.odt”. Στο Unix, υπάρχουν ειδικοί χαρακτήρες μπαλαντέρ για διαδρομές: . (τρέχων κατάλογος), .. (γονικός κατάλογος) και ~ (αρχικός κατάλογος χρήστη).

Τα λειτουργικά συστήματα χρησιμοποιούν χαρακτήρες μπαλαντέρ για να αναφερθούν σε ένα ή περισσότερα αρχεία χωρίς να γνωρίζουν τα πλήρη ονόματά τους. Ο αστερίσκος (*) αντιπροσωπεύει οποιονδήποτε συνδυασμό χαρακτήρων , συμπεριλαμβανομένης της απουσίας χαρακτήρων. Το ερωτηματικό (?) αντιπροσωπεύει έναν μόνο χαρακτήρα. Για παράδειγμα, το *image*.png θα μπορούσε να ταιριάζει με τα My_image.png, image.png, image1.png και image21.png, ενώ το image??.png θα αντιστοιχούσε μόνο σε ονόματα έξι χαρακτήρων ακολουθούμενα από .png, όπως image21.png.

Από το αρχείο στη RAM στο αρχείο στον δίσκο

Όταν δημιουργείτε ένα αρχείο από μια εφαρμογή, τα δεδομένα αρχικά βρίσκονται αποκλειστικά στην κύρια μνήμη. Εάν ανοίξετε το Σημειωματάριο, πληκτρολογήσετε το όνομά σας και δεν τα έχετε αποθηκεύσει ακόμα, οι πληροφορίες βρίσκονται στη μνήμη της διεργασίας notepad.exe . Δεν υπάρχει αρχείο στο δίσκο που να σχετίζεται με αυτό το περιεχόμενο.

Τη στιγμή που κάνετε κλικ στην επιλογή “Αποθήκευση” και επιλέγετε μια τοποθεσία, το λειτουργικό σύστημα δημιουργεί ένα αρχείο στο σύστημα αρχείων και εκχωρεί ένα ή περισσότερα clusters στη συσκευή αποθήκευσης για την αποθήκευση αυτών των πληροφοριών. Από τότε και στο εξής, το σύστημα πρέπει πάντα να γνωρίζει ποια μπλοκ έχουν δεσμευτεί για αυτό το αρχείο και με ποια σειρά θα τα διαβάσει.

Μια ενδιαφέρουσα λεπτομέρεια: συχνά το λογικό μέγεθος ενός αρχείου (σε bytes) είναι πολύ μικρότερο από τον πραγματικό χώρο στο δίσκο που καταλαμβάνει . Για παράδειγμα, ένα αρχείο κειμένου με τη λέξη “Javier” σε ASCII καταλαμβάνει 6 byte περιεχομένου, αλλά σε ένα σύστημα με μέγεθος συμπλέγματος 4 KiB, αυτό το αρχείο θα καταλαμβάνει 4096 byte στο δίσκο, επειδή το σύμπλεγμα είναι η μικρότερη μονάδα που μπορεί να εκχωρηθεί (αν ανησυχείτε για αυτήν τη συμπεριφορά, δείτε τι πρέπει να κάνετε εάν ο εσωτερικός σας χώρος αποθήκευσης φαίνεται πλήρης).

προσωρινή μνήμη αρχείων συστήματος στα Windows

Στα Windows, το λειτουργικό σύστημα υλοποιεί μια προσωρινή μνήμη αρχείων συστήματος που λειτουργεί ως ενδιάμεσος μεταξύ των λειτουργιών εισόδου/εξόδου και του φυσικού δίσκου. Από προεπιλογή, όταν ένα πρόγραμμα διαβάζει από ή γράφει σε ένα αρχείο, στην πραγματικότητα διαβάζει από ή γράφει στη μνήμη, σε μια περιοχή που διαχειρίζεται ο διαχειριστής προσωρινής μνήμης.

Όταν εκτελείται μια λειτουργία ανάγνωσης, τα δεδομένα φορτώνονται πρώτα από τον δίσκο σε μια περιοχή της μνήμης του συστήματος που προορίζεται ως προσωρινή μνήμη αρχείων. Από εκεί, οι διεργασίες λειτουργίας χρήστη αντιγράφουν αυτά τα δεδομένα στον δικό τους χώρο διευθύνσεων. Εάν η ίδια περιοχή του αρχείου διαβαστεί ξανά αργότερα , το σύστημα μπορεί να το εμφανίσει απευθείας από την προσωρινή μνήμη χωρίς να έχει ξανά πρόσβαση στον δίσκο, βελτιώνοντας σημαντικά την απόδοση.

Κατά τη διάρκεια των εργασιών εγγραφής, τα δεδομένα αποθηκεύονται αρχικά στην προσωρινή μνήμη αρχείων του συστήματος αντί να εγγράφονται αμέσως στον δίσκο. Αυτός ο μηχανισμός είναι γνωστός ως προσωρινή αποθήκευση εγγραφής-επαναφοράς . Ο διαχειριστής της προσωρινής μνήμης εκκαθαρίζει περιοδικά αυτήν την προσωρινή μνήμη, γράφοντας τα τροποποιημένα μπλοκ στον φυσικό δίσκο και ελευθερώνοντας χώρο στην προσωρινή μνήμη. Ο χρόνος της εκκαθάρισης εξαρτάται από το χρονικό διάστημα που τα δεδομένα βρίσκονται στην προσωρινή μνήμη και από το χρονικό διάστημα πριν από την τελευταία φορά που έγινε η πρόσβαση σε αυτά.

Αυτή η πολιτική αναβολής της εγγραφής στο δίσκο έχει πλεονεκτήματα απόδοσης, αλλά ενέχει έναν κίνδυνο: εάν συμβεί διακοπή ρεύματος ή ξαφνική βλάβη πριν από την εκκαθάριση της προσωρινής μνήμης , ενδέχεται να χαθούν δεδομένα που δεν έχουν ακόμη εγγραφεί στο δίσκο. Για την εξισορρόπηση της απόδοσης και της αξιοπιστίας, τα Windows εκκινούν μια διαδικασία που ονομάζεται αναβαλλόμενη εγγραφή κάθε δευτερόλεπτο, η οποία τοποθετεί στην ουρά ένα κλάσμα των σελίδων που περιμένουν εγγραφή στο δίσκο και προσαρμόζει δυναμικά την ποσότητα δεδομένων που εκκαθαρίζει.

Ορισμένες εφαρμογές (όπως λογισμικό προστασίας από ιούς ή συστήματα διαχείρισης βάσεων δεδομένων ) πρέπει να διασφαλίζουν ότι οι εγγραφές εγγράφονται αμέσως στο δίσκο. Τα Windows παρέχουν λειτουργία εγγραφής για αυτόν τον σκοπό: εάν ανοιχτεί ένα αρχείο με τη σημαία FILE_FLAG_WRITE_THROUGH, τα δεδομένα εγγράφονται στην προσωρινή μνήμη, αλλά ο διαχειριστής της προσωρινής μνήμης τα προωθεί στο δίσκο χωρίς καθυστέρηση. Επιπλέον, λειτουργίες όπως το FlushFileBuffers σάς επιτρέπουν να επιβάλλετε την εκκαθάριση των μεταδεδομένων και οποιουδήποτε εκκρεμούς περιεχομένου.

Σε ορισμένα σενάρια που περιλαμβάνουν μαζικές λειτουργίες εισόδου/εξόδου με πολύ μεγάλα μπλοκ, η προσωρινή αποθήκευση μπορεί να υποβαθμίσει την απόδοση. Σε τέτοιες περιπτώσεις, είναι δυνατό να ανοίξετε αρχεία με τη σημαία FILE_FLAG_NO_BUFFERING, έτσι ώστε οι αναγνώσεις και οι εγγραφές να πηγαίνουν απευθείας στον φυσικό δίσκο , παρακάμπτοντας την προσωρινή μνήμη αρχείων (αν και ορισμένα μεταδεδομένα ενδέχεται να εξακολουθούν να αποθηκεύονται στην προσωρινή μνήμη).

Τύποι συστημάτων αρχείων και χαρακτηριστικά

Τα πιο συχνά χρησιμοποιούμενα συστήματα αρχείων είναι στενά συνδεδεμένα με την οικογένεια λειτουργικών συστημάτων για την οποία σχεδιάστηκαν, αν και πολλά έχουν γίνει σχεδόν de facto πρότυπα λόγω συμβατότητας. Ας δούμε τα πιο σημαντικά.

Συστήματα αρχείων Microsoft Family

Στον κόσμο των Windows, μπορούμε να διακρίνουμε κυρίως δύο κύριες οικογένειες: FAT και NTFS . Το FAT (File Allocation Table – Πίνακας Κατανομής Αρχείων) έχει απλό και πολύ παλιό σχεδιασμό, ενώ το NTFS (New Technology File System – Σύστημα Αρχείων Νέας Τεχνολογίας) είναι πιο σύγχρονο, ισχυρό και πλούσιο σε λειτουργίες.

Το FAT βασίζεται σε έναν πίνακα που υποδεικνύει σε ποιο αρχείο ανήκει κάθε συστάδα και ποιο είναι το επόμενο συστάδα στην αλυσίδα αρχείων. Οι πιο αξιοσημείωτες εκδόσεις του είναι : FAT12 (αρχές της δεκαετίας του 1980, με τόμους έως 32 MB και 8,3 ονόματα αρχείων), FAT16 (έως περίπου 90 GB με συστάδες 32 KiB), VFAT (υποστηρίζει προστατευμένη λειτουργία 32-bit και μεγάλα ονόματα αρχείων στα Windows 3.11/95) και FAT32 (εισήχθη στα Windows 95 OSR2, με θεωρητική χωρητικότητα σχεδόν 8 TB αλλά περιορισμένη από τη Microsoft σε μικρότερα μεγέθη και με μέγιστο μέγεθος αρχείου 4 GB). Αργότερα, εμφανίστηκε το exFAT, βελτιστοποιημένο για μονάδες USB και μονάδες flash, με λιγότερους περιορισμούς στο μέγεθος των αρχείων.

Το FAT έχει αρκετά μειονεκτήματα: η δομή του είναι επιρρεπής σε κατακερματισμό , δεν εφαρμόζει προηγμένα δικαιώματα ή καταγραφή σε χρονολόγιο και, για να είναι γρήγορο, ολόκληρος ο πίνακας FAT συνήθως φορτώνεται στη μνήμη RAM, καταναλώνοντας σημαντική ποσότητα μνήμης. Σε πολύ μεγάλους δίσκους, εάν μόνο ένα μέρος του πίνακα είναι αποθηκευμένο στην προσωρινή μνήμη, η πρόσβαση σε αρχεία με υψηλό κατακερματισμό μπορεί να περιλαμβάνει πολλά άλματα δίσκου μόνο και μόνο για την ανάγνωση θραυσμάτων FAT.

Το NTFS, από την πλευρά του, εισάγει βελτιώσεις στην απόδοση, την ασφάλεια και την αξιοπιστία . Υποστηρίζει λεπτομερή δικαιώματα, ACL, κρυπτογράφηση, συμπίεση, καταγραφή σε χρονικά διαστήματα και αυτόματη ανάκτηση από ορισμένα σφάλματα. Βασίζεται στο HPFS (που αναπτύχθηκε για OS/2) και μπορεί να αντιμετωπίσει τεράστιους όγκους (έως και δεκάδες terabyte σε τυπικές υλοποιήσεις). Έχουν κυκλοφορήσει αρκετές εκδόσεις: από το NT 3.1 (v1.0) έως τις εκδόσεις 3.x που χρησιμοποιούνται από τα Windows 2000 και XP και μετά.

Συστήματα αρχείων στην Apple

Οι υπολογιστές Apple έχουν περάσει από αρκετές γενιές συστημάτων αρχείων, καθεμία από τις οποίες προσαρμόστηκε στην τεχνολογία της εποχής. Τα πιο αντιπροσωπευτικά είναι τα MFS, HFS, HFS+ και APFS .

Το MFS (Macintosh File System) ήταν το πρώτο σύστημα αρχείων για το αρχικό Macintosh το 1984. Επέτρεπε ονόματα αρχείων έως και 255 χαρακτήρες, αν και ευρετηρίαζε μόνο τους πρώτους 63, και χειριζόταν τόμους έως και 256 MB. Καθώς οι χωρητικότητες αποθήκευσης αυξάνονταν ραγδαία, σύντομα αντικαταστάθηκε από το HFS (Hierarchical File System) , γνωστό και ως Mac OS Standard, το οποίο εισήγαγε πραγματική ιεραρχική οργάνωση και υποστήριζε τόμους έως και 2 TB (με μεμονωμένα αρχεία έως και 2 GB).

Αργότερα ήρθε το HFS Plus (HFS+) ή Mac OS Extended, με υποστήριξη για journaling, συμβάσεις ονοματοδοσίας Unicode και τόμους έως 8 exabyte . Ήταν το κύριο σύστημα αρχείων σε Mac για πολλά χρόνια. Με την έλευση των SSD και την ανάγκη για σύγχρονη κρυπτογράφηση και στιγμιότυπα, η Apple σχεδίασε το APFS (Apple File System), ειδικά βελτιστοποιημένο για μνήμη flash και υποστηριζόμενο από το macOS Sierra και το iOS 10.3. Το APFS βελτιώνει τη διαχείριση χώρου, την κλωνοποίηση αρχείων και την απόδοση σε εντατικές λειτουργίες.

Συστήματα αρχείων σε GNU/Linux και Unix

Το GNU/Linux υποστηρίζει μια μεγάλη ποικιλία συστημάτων αρχείων, αλλά τα πιο συνηθισμένα είναι οι οικογένειες ext (ext2, ext3, ext4), ReiserFS, XFS και ZFS (το τελευταίο μέσω εξωτερικών ενοτήτων).

Το ext2 παρουσιάστηκε το 1993 ως βελτιωμένος διάδοχος του ext, με υποστήριξη για τόμους έως 16 TB και αρχεία έως 2 TB, και ονόματα αρχείων 256 χαρακτήρων. Το ext3, που κυκλοφόρησε το 2001, πρόσθεσε την καταγραφή σε χρονικά διαστήματα και βασίστηκε σε πιο αποτελεσματικές δομές όπως εξισορροπημένα δυαδικά δέντρα, διατηρώντας παράλληλα τη συμβατότητα με το ext2. Το ext4, που κυκλοφόρησε το 2006, βελτίωσε την ταχύτητα, τη χρήση της CPU και αύξησε τη μέγιστη χωρητικότητα σε 1 exabyte για τόμους και αρχεία έως 16 TB.

Το ReiserFS ήταν ένα από τα πρώτα συστήματα καταγραφής δεδομένων που υποστηρίζονταν από τον πυρήνα του Linux, προσφέροντας καλή απόδοση με μικρά αρχεία. Το XFS, αρχικά από το IRIX και μεταφερμένο στο Linux, υλοποιεί επίσης καταγραφή δεδομένων και είναι αξιοσημείωτο για το μέγιστο μέγεθος τόμου και την απόδοσή του σε περιβάλλοντα υψηλής απόδοσης, ικανό να χειριστεί έως και 16 exabytes.

Το ZFS, που αναπτύχθηκε αρχικά από την Sun Microsystems για το Solaris, εισάγει μια συνδυασμένη προσέγγιση συστήματος αρχείων και διαχείρισης τόμων. Επιτρέπει αρχεία έως και 16 exabyte και μεγάλους όγκους , με προηγμένες λειτουργίες όπως στιγμιότυπα, επαλήθευση ακεραιότητας χρησιμοποιώντας checksum, αυτοέλεγχο και αυτόματη επιδιόρθωση σιωπηλής καταστροφής.

Πώς τα συστήματα αρχείων αντιμετωπίζουν τα μπλοκ: inodes και extents

Σε συστήματα τύπου Unix, συστήματα αρχείων όπως το ext2 και το ext3 χρησιμοποιούν μια δομή που ονομάζεται inode για την αναπαράσταση κάθε αρχείου. Το inode αποθηκεύει μεταδεδομένα (δικαιώματα, κάτοχο, μέγεθος, χρονικές σημάνσεις κ.λπ.) και μια σειρά από δείκτες σε μπλοκ δεδομένων.

Στο ext3, κάθε inode περιέχει 12 άμεσους δείκτες σε μπλοκ δεδομένων, συν τρεις έμμεσους δείκτες: έναν μονό, έναν διπλό και έναν τριπλό. Οι άμεσοι δείκτες επιτρέπουν άμεση πρόσβαση σε 12 μπλοκ δεδομένων. Εάν το μέγεθος του μπλοκ είναι 4096 bytes, αυτό ισοδυναμεί με 48 KiB δεδομένων (12 × 4096).

Εάν το αρχείο ξεπεράσει αυτό το όριο, ενεργοποιείται ο απλός έμμεσος δείκτης, ο οποίος δείχνει σε ένα ειδικό μπλοκ που περιέχει μόνο διευθύνσεις άλλων μπλοκ δεδομένων. Υποθέτοντας λέξεις 32-bit (4-byte), ένα μπλοκ 4096-byte μπορεί να περιέχει 1024 διευθύνσεις. Αυτό αντιστοιχεί σε 4 MiB (1024 × 4096 byte). Για ακόμη μεγαλύτερα αρχεία, χρησιμοποιούνται διπλοί και τριπλοί έμμεσοι δείκτες, οι οποίοι συνδέουν αλυσιδωτά πολλά επίπεδα μπλοκ διευθύνσεων, επιτυγχάνοντας χωρητικότητες έως και 4 GiB (διπλά) και 4 TiB (τριπλά) ανά αρχείο.

Το άθροισμα των χωρητικοτήτων που παρέχονται από τους 12 άμεσους δείκτες, τον απλό έμμεσο δείκτη, τον διπλό δείκτη και τον τριπλό δείκτη μας δίνει το μέγιστο θεωρητικό μέγεθος ενός αρχείου στο ext3 : περίπου 48 KiB + 4 MiB + 4 GiB + 4 TiB.

Στο ext4, αυτή η δομή επανασχεδιάζεται: οι δείκτες γίνονται 48 bit για να υποστηρίζουν μεγαλύτερες συσκευές (έως 1 EiB) και χρησιμοποιούνται extents αντί για έμμεσα μπλοκ . Ένα extent περιγράφει μια περιοχή συνεχόμενων μπλοκ χρησιμοποιώντας δύο τιμές: το αρχικό μπλοκ και τον αριθμό των μπλοκ. Τα 60 byte που χρησιμοποίησε το ext3 για διευθύνσεις επαναχρησιμοποιούνται στο ext4 για την αποθήκευση πολλαπλών extents και μιας κεφαλίδας. Εάν ένα αρχείο είναι ιδιαίτερα κατακερματισμένο και απαιτεί περισσότερα extents, οργανώνεται ένα δέντρο (HTree), με τη ρίζα αποθηκευμένη στον inode και τους κόμβους φύλλων να περιέχουν τα πρόσθετα extents.

Αυτή η δομή που βασίζεται σε εκτάσεις στοχεύει στη μείωση του κατακερματισμού και στη βελτίωση της απόδοσης , καθώς λειτουργεί με μεγάλα συνεχόμενα εύρη αντί για μεγάλες λίστες μεμονωμένων μπλοκ.

Άλλα συγκεκριμένα και εικονικά συστήματα αρχείων

Εκτός από τα συστήματα αρχείων δίσκων και δικτύου, υπάρχουν συστήματα που έχουν σχεδιαστεί για πολύ συγκεκριμένους σκοπούς ή για να λειτουργούν σε εικονική λειτουργία . Μερικά αξιοσημείωτα παραδείγματα περιλαμβάνουν:

  • swap: περιοχή δίσκου που προορίζεται για εικονική μνήμη, όπου οι σελίδες ανταλλάσσονται όταν εξαντληθεί η μνήμη RAM.
  • archfs: σύστημα αρχείων χώρου χρήστη (FUSE) που επιτρέπει την περιήγηση σε αποθετήρια rdiff-backup.
  • cdfs: ένα εικονικό σύστημα αρχείων στο Linux για πρόσβαση σε μεμονωμένα δεδομένα ή κομμάτια ήχου σε CD.
  • udev και devfs: χρησιμοποιούνται στο GNU/Linux για τη διαχείριση αρχείων συσκευών στο /dev.
  • ftpfs και nntpfs: Συστήματα Χώρου Χρήστη (FUSE) που εκθέτουν δεδομένα προσβάσιμα μέσω FTP ή NNTP σαν να ήταν τοπικό σύστημα αρχείων.

Το FUSE (Filesystem in Userspace), που περιλαμβάνεται στον πυρήνα του Linux από την έκδοση 2.6.14, επιτρέπει σε μη προνομιούχους χρήστες να αναπτύσσουν και να εγκαθιστούν συστήματα αρχείων που εκτελούνται στον χώρο χρήστη, με μια ενότητα πυρήνα που λειτουργεί ως ενδιάμεσος. Αυτό αυξάνει σημαντικά την ποικιλία των διαθέσιμων συστημάτων αρχείων (NTFS, EncFS, κ.λπ.), επιτρέποντας ακόμη και την προσάρτηση εικονικών δίσκων (όπως αρχεία .vdi) σαν να ήταν φυσικοί δίσκοι. Το μειονέκτημα είναι ότι η συνεχής εναλλαγή μεταξύ λειτουργίας πυρήνα και λειτουργίας χρήστη εισάγει κάποια μείωση στην απόδοση.

Από κάτω, όλα βασίζονται στο VFS (Εικονικό Σύστημα Αρχείων), ένα επίπεδο αφαίρεσης που ενοποιεί την πρόσβαση σε συστήματα αρχείων με πολύ διαφορετικές αρχιτεκτονικές , έτσι ώστε οι εφαρμογές να βλέπουν μια κοινή διεπαφή ανεξάρτητα από τον συγκεκριμένο τύπο συστήματος που βρίσκεται από κάτω.

Συναλλαγές και καταγραφή σε χρονικά συστήματα αρχείων

Μια συναλλαγή είναι μια ακολουθία λειτουργιών που πρέπει να εκτελεστούν ατομικά : είτε όλες ολοκληρώνονται με επιτυχία είτε, εάν κάτι αποτύχει, το σύστημα πρέπει να αποκατασταθεί στην αρχική του κατάσταση. Αυτή η έννοια ισχύει για βάσεις δεδομένων, αλλά και για συστήματα αρχείων μέσω της καταγραφής σε χρονικά διαστήματα.

Η καταγραφή σε ημερολόγιο περιλαμβάνει τη διατήρηση ενός ημερολογίου στο οποίο καταγράφονται οι προγραμματισμένες τροποποιήσεις πριν από την εφαρμογή τους στο πραγματικό σύστημα αρχείων. Εάν προκύψει διακοπή ρεύματος ή απροσδόκητη βλάβη κατά την εκτέλεση της εγγραφής, το ημερολόγιο εξετάζεται κατά την επανεκκίνηση του συστήματος: οι ελλιπείς συναλλαγές ακυρώνονται ή επαναλαμβάνονται ανάλογα με τον τρόπο λειτουργίας, διασφαλίζοντας ότι η δομή του συστήματος αρχείων παραμένει συνεπής και αποτρέποντας σοβαρή καταστροφή.

Διαμερίσματα, MBR και οργάνωση λογικού δίσκου

Ένας σκληρός δίσκος ή ένας SSD σπάνια χρησιμοποιείται ως μονολιθικό, αδιαίρετο μπλοκ. Είναι πιο συνηθισμένο να δημιουργούνται διαμερίσματα (partitions) , τα οποία είναι συνεχόμενα τμήματα του δίσκου που οριοθετούνται από έναν αρχικό τομέα και έναν τελικό τομέα. Κάθε διαμέρισμα μπορεί να περιέχει διαφορετικό σύστημα αρχείων, επιτρέποντάς σας, για παράδειγμα, να έχετε Windows και Linux στον ίδιο δίσκο ή να διαχωρίζετε τα δεδομένα συστήματος από τα δεδομένα χρήστη.

Από την οπτική γωνία του λειτουργικού συστήματος, κάθε διαμέρισμα μπορεί να αντιμετωπιστεί ως ανεξάρτητη λογική μονάδα δίσκου : στα Windows, με το δικό της γράμμα μονάδας δίσκου (C:, D:, κ.λπ.)· στο GNU/Linux, τοποθετημένο σε συγκεκριμένους καταλόγους (/home, /var, κ.λπ.). Αυτό παρέχει ευελιξία και απλοποιεί εργασίες όπως η επανεγκατάσταση ενός λειτουργικού συστήματος χωρίς να επηρεάζεται το διαμέρισμα δεδομένων.

Στα κλασικά σχήματα διαμέρισης MBR, οι πληροφορίες διαμέρισης αποθηκεύονται στον πίνακα διαμερισμάτων που βρίσκεται στον τομέα 0 του δίσκου , γνωστό ως MBR (Master Boot Record). Το MBR περιλαμβάνει τρία κύρια στοιχεία: ένα μικρό πρόγραμμα εκκίνησης (bootloader, το οποίο εκκινεί το λειτουργικό σύστημα ή έναν πιο σύνθετο φορτωτή εκκίνησης), τον πίνακα διαμερισμάτων (με έως και τέσσερις καταχωρήσεις) και έναν “μαγικό κώδικα” 16-bit, συνήθως 0x55AA, ο οποίος υποδεικνύει ότι το MBR είναι έγκυρο.

Ο πίνακας διαμερισμάτων MBR υποστηρίζει μόνο τέσσερα κύρια διαμερίσματα . Για να ξεπεραστεί αυτό το όριο, ορίστηκαν δύο επιπλέον τύποι: τα εκτεταμένα διαμερίσματα και τα λογικά διαμερίσματα. Ένα εκτεταμένο διαμέρισμα είναι στην πραγματικότητα ένας ειδικός τύπος πρωτεύοντος διαμερίσματος που δεν περιέχει άμεσα δεδομένα, αλλά περιέχει πολλά λογικά διαμερίσματα μέσα σε αυτό . Έτσι, μπορούμε να έχουμε το πολύ τέσσερις καταχωρήσεις στο MBR (τρία κύρια και ένα εκτεταμένο, για παράδειγμα) και μέσα στο εκτεταμένο διαμέρισμα, όσα λογικά διαμερίσματα χρειαζόμαστε.

Στην πράξη, όταν ένας νέος δίσκος δεν έχει αρχικοποιημένο MBR, εργαλεία όπως το gparted ανιχνεύουν την έλλειψη μιας αναγνωρίσιμης ετικέτας και τον μαγικό κωδικό 0x55AA και εμφανίζουν προειδοποιήσεις. Το πρώτο βήμα είναι συνήθως η δημιουργία ενός νέου πίνακα διαμερισμάτων (για παράδειγμα, ενός MBR τύπου MSDOS). Από εκεί, δημιουργούνται τα κύρια διαμερίσματα και, εάν χρειάζονται περισσότερα από τέσσερα συστήματα αρχείων, προστίθεται ένα εκτεταμένο διαμέρισμα για να φιλοξενήσει επιπλέον λογικά διαμερίσματα.

Κατά τη φάση σχεδιασμού, συνιστάται να αποφασίσετε εκ των προτέρων το μέγεθος και τον τύπο κάθε διαμερίσματος: για παράδειγμα, ένα μεγάλο πρωτεύον διαμέρισμα για δεδομένα σε NTFS, ένα άλλο σε ext4 για Linux, ένα διαμέρισμα FAT32 για swap και ένα εκτεταμένο διαμέρισμα με πολλά λογικά διαμερίσματα ή για να επαναχρησιμοποιήσετε τον σκληρό σας δίσκο για άλλες χρήσεις. Εάν τα τέσσερα πρωτεύοντα διαμερίσματα χρησιμοποιηθούν χωρίς να έχουμε δεσμεύσει ένα εκτεταμένο διαμέρισμα , θα πρέπει να διαγράψουμε ορισμένα διαμερίσματα για να επανασχεδιάσουμε σωστά τη δομή.

Σε περιβάλλοντα διαχείρισης ή εκπαίδευσης, είναι σύνηθες να χρησιμοποιείτε μια διανομή Live, όπως το SystemRescue, να εκκινείτε σε γραφική λειτουργία (χρησιμοποιώντας το startx) και να χρησιμοποιείτε εργαλεία όπως το gparted για τη δημιουργία, την αλλαγή μεγέθους και τη μορφοποίηση κατατμήσεων με διαφορετικά συστήματα αρχείων (NTFS, FAT32, ext3, ext4, κ.λπ.), ελέγχοντας παράλληλα τον τρόπο αρχικοποίησης ενός MBR και τον τρόπο με τον οποίο οι αλλαγές αντικατοπτρίζονται στον πίνακα κατατμήσεων.

Αυτό το ολόκληρο δίκτυο καταχωρητών, προσωρινών μνημών, κύριας μνήμης, δίσκων, συστημάτων αρχείων, καταγραφής σε χρονικά διαστήματα και διαμερισμάτων σημαίνει ότι όταν κάνετε κλικ στην επιλογή “Αποθήκευση”, τα δεδομένα ταξιδεύουν από το καταχωρητή της CPU σε ένα συγκεκριμένο μπλοκ σε έναν φυσικό δίσκο, περνώντας από πολλά επίπεδα προσωρινής μνήμης και λογικών δομών. Η κατανόηση του τρόπου με τον οποίο όλα αυτά τα κομμάτια συνδέονται μεταξύ τους σάς επιτρέπει να κατανοήσετε καλύτερα τα προβλήματα απόδοσης, τα σφάλματα δίσκου, τα μηνύματα αλλοίωσης αρχείων και τις αποφάσεις σχεδιασμού, όπως το μέγεθος του συμπλέγματος ή την επιλογή του συστήματος αρχείων για κάθε περίπτωση χρήσης. Σας βοηθά επίσης να επιλέξετε δωρεάν υπηρεσίες αποθήκευσης στο cloud με βάση τις ανάγκες σας.

Αφήστε ένα Σχόλιο

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Δεν είναι διαφήμιση – ανήκει στο DirectVortex