Σύστημα αρχείων Unix

Από The Stelios Files
Αναθεώρηση ως προς 14:31, 19 Απριλίου 2022 από τον Admin (συζήτηση | συνεισφορές) (Νέα σελίδα με 'Στο Unix και τα λειτουργικά συστήματα που εμπνέονται από αυτό, το σύστημα αρχείων θεωρείται κεντρικό στοιχείο του λειτουργικού συστήματος. Ήταν επίσης ένα από τα πρώτα μέρη του συστήματος που σχεδιάστηκε και εφαρμόστηκε από τον Ken Thompson στην πρώτη πειραματι...')
(διαφορά) ← Παλαιότερη αναθεώρηση | Τελευταία αναθεώρηση (διαφορά) | Νεότερη αναθεώρηση → (διαφορά)

Στο Unix και τα λειτουργικά συστήματα που εμπνέονται από αυτό, το σύστημα αρχείων θεωρείται κεντρικό στοιχείο του λειτουργικού συστήματος. Ήταν επίσης ένα από τα πρώτα μέρη του συστήματος που σχεδιάστηκε και εφαρμόστηκε από τον Ken Thompson στην πρώτη πειραματική έκδοση του Unix, to 1969 .

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

1 Αρχές

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

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

Οι κατάλογοι Unix δεν περιέχουν αρχεία. Αντίθετα, περιέχουν τα ονόματα των αρχείων σε συνδυασμό με αναφορά στα λεγόμενα inodes, τα οποία με τη σειρά τους περιέχουν τόσο το αρχείο όσο και τα μεταδεδομένα του (κάτοχος, δικαιώματα, χρόνος τελευταίας πρόσβασης κ.λπ., αλλά όχι το όνομα). Πολλά ονόματα στο σύστημα αρχείων μπορεί να αναφέρονται στο ίδιο αρχείο, μια δυνατότητα που ονομάζεται σκληρός σύνδεσμος (hard link). Τα μαθηματικά χαρακτηριστικά των σκληρών συνδέσμων καθιστούν το σύστημα αρχείων έναν περιορισμένο τύπο κατευθυνόμενου ακυκλικού γραφήματος, αν και οι κατάλογοι εξακολουθούν να σχηματίζουν ένα δέντρο, καθώς συνήθως μπορεί να μην είναι σκληρά συνδεδεμένα. (Όπως είχε αρχικά οραματιστεί το 1969, το σύστημα αρχείων Unix να χρησιμοποιεί στην πραγματικότητα ως γενικό γράφημα με σκληρούς συνδέσμους σε καταλόγους που παρέχουν πλοήγηση, αντί για ονόματα μονοπατιών.)

2 Τύποι αρχείων

Το σύστημα αρχείων UNIX περιέχει πολλούς διαφορετικούς τύπους αρχείων:

1. Συνηθισμένα αρχεία – Ένα συνηθισμένο αρχείο είναι ένα αρχείο στο σύστημα που περιέχει δεδομένα, κείμενο ή οδηγίες προγράμματος. Χρησιμοποιείται για την αποθήκευση των πληροφοριών του χρήστη, (κείμενο, εικόνα κλπ.) Βρίσκεται πάντα μέσα/κάτω από ένα αρχείο καταλόγου. Δεν περιέχει άλλα αρχεία.

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

  • Το όνομα αρχείου
  • Έναν μοναδικό αριθμό αναγνώρισης για το αρχείο ή τον κατάλογο (ονομάζεται αριθμός inode)

3. Ειδικά αρχεία – Χρησιμοποιούνται για την αναπαράσταση μιας πραγματικής φυσικής συσκευής, όπως εκτυπωτές, μονάδα ταινίας ή τερματικό, που χρησιμοποιούνται για λειτουργίες Εισόδου/Εξόδου (I/O). Εμφανίζονται σε ένα σύστημα αρχείων όπως ένα συνηθισμένο αρχείο ή ένας κατάλογος.

4. Pipes – Το UNIX σάς επιτρέπει να συνδέετε εντολές μεταξύ τους χρησιμοποιώντας διαδικασία του σωλήνα. Ο σωλήνας ενεργεί ως ένα προσωρινό αρχείο που υπάρχει μόνο για να διατηρεί δεδομένα από μια εντολή έως ότου διαβαστούν από μια άλλη. Ένας σωλήνας Unix παρέχει μια μονόδρομη ροή δεδομένων. Η έξοδος ή το αποτέλεσμα της πρώτης ακολουθίας εντολών χρησιμοποιείται ως είσοδος στο δεύτερη σειρά εντολών. Για να φτιάξετε ένα σωλήνα, τοποθετήστε μια κάθετη γραμμή (|) στη γραμμή εντολών μεταξύ δύο εντολών. Για παράδειγμα: who | wc -l

5. Sockets (Υποδοχείς) – Μια υποδοχή Unix (ή υποδοχή επικοινωνίας μεταξύ διεργασιών) είναι ένα ειδικό αρχείο που επιτρέπει την προηγμένη επικοινωνία μεταξύ διεργασιών. Ένα Unix Socket χρησιμοποιείται σε ένα πλαίσιο εφαρμογής πελάτη-διακομιστή. Στην ουσία, είναι μια ροή δεδομένων, παρόμοια με τη ροή δικτύου (και τις υποδοχές δικτύου), αλλά όλες οι συναλλαγές είναι τοπικές στο σύστημα αρχείων.

6. Symbolic Link (Συμβολικός σύνδεσμος) – Ο συμβολικός σύνδεσμος χρησιμοποιείται για την αναφορά σε κάποιο άλλο αρχείο του συστήματος αρχείων. Ο συμβολικός σύνδεσμος είναι επίσης γνωστός ως Soft link. Περιέχει μια φόρμα κειμένου της διαδρομής προς το αρχείο στο οποίο αναφέρεται. Σε έναν τελικό χρήστη, ο συμβολικός σύνδεσμος θα φαίνεται να έχει το δικό του όνομα, αλλά όταν προσπαθείτε να διαβάσετε ή να γράψετε δεδομένα σε αυτό το αρχείο, θα παραπέμψει αυτές τις λειτουργίες στο αρχείο στο οποίο υποδεικνύει. Εάν διαγράψουμε τον ίδιο τον σύνδεσμο , το αρχείο δεδομένων θα εξακολουθεί να υπάρχει. Εάν διαγράψουμε το αρχείο προέλευσης ή το μετακινήσουμε σε διαφορετική τοποθεσία, το συμβολικό αρχείο δεν θα λειτουργήσει σωστά.

3 Τυπική διάταξη καταλόγου

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

Οι λεπτομέρειες της διάταξης του καταλόγου ποικίλλουν με την πάροδο του χρόνου με αρκετές προσπάθειες τυποποίησης (τμημάτων) της

Ακολουθεί μια γενική επισκόπηση των κοινών θέσεων των αρχείων σε ένα λειτουργικό σύστημα Unix:


αρχείο Περιγραφή
/ Ο χαρακτήρας  /από μόνος του υποδηλώνει τη ρίζα του δέντρου του συστήματος αρχείων.
/bin Σημαίνει binaries (δυαδικά)  και περιέχει ορισμένα βασικά βοηθητικά προγράμματα, όπως ls ή cp, που απαιτούνται για την προσάρτηση του /usr, όταν πρόκειται για ξεχωριστό σύστημα αρχείων ή για την εκτέλεση σε λειτουργία ενός χρήστη (διαχειριστική) όταν το /usr δεν είναι δυνατή η προσάρτηση.
/boot Περιέχει όλα τα αρχεία που απαιτούνται για την επιτυχή διαδικασία εκκίνησης.
/dev Σημαίνει devices (συσκευές). Περιέχει αναπαραστάσεις αρχείων περιφερειακών συσκευών και ψευδοσυσκευών . Πρέπει να βρίσκεται στο ίδιο το ριζικό σύστημα αρχείων.
/etc Περιέχει αρχεία διαμόρφωσης και βάσεις δεδομένων συστήματος. Το όνομα προήλθε από το λατινικό et-cetera αλλά πλέον είναι το ακρωνύμιο της φράσης editable-text-configurations.
/home Είναι το σημείο εκκίνησης των καταλόγους χρηστών στο Linux και σε ορισμένα άλλα συστήματα. Στην αρχική έκδοση του Unix, αντ' αυτού υπήρχαν οι κατάλογοι των χρηστών βρίσκονται στον κατάλογο /usr.
/lib Αρχικά περιείχε τις βασικές βιβλιοθήκες  C. Στα σύγχρονα συστήματα, περιέχει τις κοινόχρηστες βιβλιοθήκες που χρειάζονται τα προγράμματα στην /bin, και πιθανώς με δυνατότητα φόρτωσης λειτουργικών μονάδων πυρήνα ή προγραμμάτων οδήγησης συσκευών . Στα Linux μπορεί να έχουν παραλλαγές /lib32 και /lib64 για υποστήριξη πολλών αρχιτεκτονικών.
/media Προεπιλεγμένο σημείο προσάρτησης για αφαιρούμενες συσκευές, όπως USB sticks, συσκευές αναπαραγωγής πολυμέσων, κ.λπ. Bρίσκεται στο ίδιο το διαμέρισμα ρίζας.
/mnt Από την λέξη mount. Κενός κατάλογος που χρησιμοποιείται συνήθως από τους διαχειριστές συστήματος ως προσωρινό σημείο προσάρτησης. O ίδιος ο κατάλογος, του οποίου οι υποκατάλογοι είναι σημεία προσάρτησης, βρίσκεται στο ίδιο το διαμέρισμα ρίζας.
/opt Περιέχει τοπικά εγκατεστημένο λογισμικό.
/proc εικονικό σύστημα αρχείων procfs που εμφανίζει πληροφορίες σχετικά με διεργασίες ως αρχεία.
/root Ο αρχικός κατάλογος για τη ρίζα του διαχειριστή του συστήματος. Ο αρχικός κατάλογος αυτού του λογαριασμού βρίσκεται συνήθως στο αρχικό σύστημα αρχείων και, ως εκ τούτου, δεν βρίσκεται στο /home (το οποίο μπορεί να είναι σημείο προσάρτησης για άλλο σύστημα αρχείων), για την περίπτωση που χρειάζεται να πραγματοποιηθεί ειδική συντήρηση, κατά την οποία άλλα συστήματα αρχείων δεν είναι διαθέσιμα. Μια τέτοια περίπτωση θα μπορούσε να συμβεί, για παράδειγμα, εάν μια μονάδα σκληρού δίσκου παρουσιάσει βλάβη και δεν μπορεί να τοποθετηθεί σωστά. Κατά σύμβαση, αυτός ο κατάλογος βρίσκεται στο ίδιο το διαμέρισμα του root.
/sbin Σημαίνει "system (or superuser) binaries» (δυαδικά αρχεία συστήματος ή υπερχρήστη) και περιέχει βασικά βοηθητικά προγράμματα, όπως init, που συνήθως απαιτούνται για την εκκίνηση, τη συντήρηση και την ανάκτηση του συστήματος. Πρέπει να βρίσκεται στο ίδιο το διαμέρισμα root.
/srv Δεδομένα διακομιστή (δεδομένα για υπηρεσίες που παρέχονται από το σύστημα).
/sys Συναντάται σε ορισμένες διανομές Linux , περιέχει ένα εικονικό σύστημα αρχείων sysfs , που περιέχει πληροφορίες που σχετίζονται με το υλικό και το λειτουργικό σύστημα.
/tmp Ένα μέρος για προσωρινά αρχεία που δεν αναμένεται να επιβιώσουν μετά την επανεκκίνηση. Πολλά συστήματα εκκαθαρίζουν αυτόν τον κατάλογο κατά την εκκίνηση ή χρησιμοποιούν tmpfs για να τον εφαρμόσουν.
/unix Ο πυρήνας Unix στο Research Unix και το System-V.  Με την προσθήκη υποστήριξης εικονικής μνήμης στο 3BSD , αυτό μετονομάστηκε /vmunix.
/usr Το σύστημα αρχείων χρήστη: αρχικά ο κατάλογος περιείχε τους οικείους καταλόγους χρηστών, αλλά ήδη από την Τρίτη Έκδοση του Research Unix , περίπου το 1973, επαναχρησιμοποιήθηκε για να χωρίσει τα προγράμματα του λειτουργικού συστήματος σε δύο δίσκους (ο ένας από αυτούς ήταν μονάδα σταθερής κεφαλής 256K) έτσι ώστε οι βασικές εντολές είτε να εμφανίζονται είτε στο /bin είτε στο /usr/bin. Τώρα περιέχει εκτελέσιμα, βιβλιοθήκες και κοινόχρηστους πόρους που δεν είναι κρίσιμοι για το σύστημα, κ.λπ.
/usr/include Αποθηκεύει τις κεφαλίδες ανάπτυξης εφαρμογών που χρησιμοποιούνται σε όλο το σύστημα. Τα αρχεία κεφαλίδας χρησιμοποιούνται ως επί το πλείστον από την #include οδηγία στη γλώσσα C , η οποία ιστορικά επιλέχθηκε να δώσει το όνομα αυτό στον καταλόγο.
/usr/lib Αποθηκεύει τις απαραίτητες βιβλιοθήκες και αρχεία δεδομένων για προγράμματα που είναι αποθηκευμένα εντός /usr ή αλλού.
/usr/libexec Διατηρεί προγράμματα που προορίζονται να εκτελεστούν από άλλα προγράμματα και όχι απευθείας από χρήστες.
/usr/local Μοιάζει /usr στη δομή, αλλά οι υποκατάλογοι του χρησιμοποιούνται για προσθήκες που δεν αποτελούν μέρος της διανομής του λειτουργικού συστήματος.
/usr/share Δεδομένα προγράμματος ανεξάρτητα από την αρχιτεκτονική. Σε Linux και σύγχρονα παράγωγα BSD, αυτός ο κατάλογος έχει υποκαταλόγους, όπως man για manpages , που εμφανίζονταν απευθείας κάτω /usr σε παλαιότερες εκδόσεις.
/var Από την λέξη variable - μεταβλητή . Ένα μέρος για αρχεία που ενδέχεται να αλλάζουν συχνά - ειδικά σε μέγεθος, για παράδειγμα μηνύματα ηλεκτρονικού ταχυδρομείου που αποστέλλονται σε χρήστες στο σύστημα ή αρχεία κλειδώματος αναγνωριστικού διεργασίας .
/var/log Περιέχει αρχεία καταγραφής συστήματος.
/var/mail Το μέρος όπου αποθηκεύεται όλη η εισερχόμενη αλληλογραφία. Οι χρήστες (εκτός από τον root) μπορούν να έχουν πρόσβαση μόνο στη δική τους αλληλογραφία. Συχνά, αυτός ο κατάλογος είναι ένας συμβολικός σύνδεσμος προς το /var/spool/mail.
/var/spool Κατάλογος ουρά. Περιέχει εργασίες εκτύπωσης, ουρά αλληλογραφίας και άλλες εργασίες σε ουρά.
/var/src Το μέρος όπου βρίσκεται ο μη μεταγλωττισμένος πηγαίος κώδικας ορισμένων προγραμμάτων.
/var/tmp Ο /var/tmpκατάλογος είναι ένα μέρος για προσωρινά αρχεία που πρέπει να διατηρούνται μεταξύ των επανεκκινήσεων του συστήματος.


4 Πηγές