Ειδικά συστήματα αρχείων

Εικόνα: markos
Submitted by markos on Δευ, 05/03/2007 - 03:46

Στα συστήματα αρχείων που είδαμε μέχρι τώρα τα αρχεία έχουν φυσική υπόσταση, δηλαδή υπάρχουν τα περιεχόμενά τους στην επιφάνεια κάποιου δίσκου ή άλλου αποθηκευτικού μέσου. Το Linux προσφέρει για συγκεκριμένες ανάγκες και κάποια εικονικά συστήματα αρχείων στα οποία τα αρχεία έχουν κάποια ειδική σημασία, π.χ. παρουσιάζουν πληροφορίες για το σύστημα ή αντιστοιχούν σε συσκευές που συνδέονται κατά τη διάρκεια λειτουργίας του συστήματος (hot-plug), όπως συμβαίνει με τις συσκευές USB και Firewire.

Το εικονικό σύστημα αρχείων devfs

To σύστημα αυτό χρησιμοποιείται ως εναλλακτική λύση στον τρόπο διαχείρισης των αρχείων των μονάδων συσκευών που βρίσκονται συνήθως στον κατάλογο /dev. Χωρίς το devfs, με μια απλή ματιά θα διαπιστώσετε το τεράστιο πλήθος των αρχείων που βρίσκονται σε αυτόν τον κατάλογο.

Κάθε ένα από αυτά αρχεία είναι σημείο επαφής μιας μονάδας συσκευής υλικού (διαμερίσματος σκληρού δίσκου, μονάδας CD-ROM, τερματικού, σειριακής και παράλληλης θύρας, κλπ). Για να χρησιμοποιήσετε την κάθε συσκευή θα πρέπει να χρησιμοποιήσετε το σημείο επαφής της. Φυσικά, σπάνια βρίσκεται υπολογιστής που να έχει τόσες συσκευές συνδεδεμένες όσα και σημεία επαφών. Τα σημεία επαφών έχουν προδημιουργηθεί για μελλοντική χρήση, με το σενάριο κελύφους /dev/MAKEDEV. Τα περισσότερα από αυτά είναι αχρησιμοποίητα αλλά βρίσκονται στον κατάλογο αυτό για περίπτωση που υπάρξει ανάγκη.

Τα προβλήματα που δημιουργούνται όταν δε χρησιμοποιείται το devfs, πέρα από το πλήθος των περιττών αρχείων, είναι αρχικά η μη ομαδοποίηση των σημείων επαφής των συσκευών. Αυτό σημαίνει ότι ανεξάρτητα του είδους της συσκευής (διαμέρισμα δίσκου, σειριακής θύρας, ποντικιού, κλπ) όλα βρίσκονται στον κατάλογο /dev. Στο παρελθόν, όταν ο αριθμός των διαθέσιμων συσκευών δεν ήταν τόσο μεγάλος αυτό δεν αποτελούσε πρόβλημα. Όμως τα πρωτόκολλα SCSI, USB και Firewire, χρησιμοποιούν γενικής χρήσης θύρες στις οποίες συνδέονται αμέτρητες συσκευές. Με το παλιό σύστημα, πρέπει να δημιουργούμε σημεία επαφής για όλες τις πιθανές συσκευές που συνδέονται στην κάθε θύρα και όλα αυτά πρέπει να είναι μέσα στον κατάλογο /dev μη ομαδοποιημένα! Κάτι τέτοιο με τα σημερινά δεδομένα είναι, φυσικά, παράλογο.

Αλλά αν υποθέσουμε ότι λυνόταν το πρόβλημα της ομαδοποίησης, θα είχαμε ακόμη ένα σημαντικό πρόβλημα να αντιμετωπίσουμε, αυτό της πρόβλεψης όλων των πιθανών συσκευών που συνδέονται ή πρόκειται να συνδεθούν στις συγκεκριμένες θύρες ώστε να δεσμεύσουμε για κάθε μια τους αντίστοιχους πρωτεύοντες και δευτερεύοντες αριθμούς μονάδος (major και minor device numbers). Χωρίς το devfs, κάτι τέτοιο δεν είναι εφικτό, καθώς γρήγορα εξαντλούνται όλοι οι διαθέσιμοι αριθμοί (έχοντας διαθέσιμο εύρος 8-bit ο καθένας).

Αυτά και άλλα ακόμη προβλήματα της παλαιότερης υποδομής, οδήγησαν στην ανάπτυξη ενός συστήματος όπως το Devfs. Το Devfs, προσφέρει ένα εικονικό σύστημα αρχείων που εμφανίζει ομαδοποιημένες τις συσκευές και μάλιστα μόνο αυτές που είναι συνδεδεμένες την τρέχουσα στιγμή. Αυτό έχει το θετικό χαρακτηριστικό της μείωσης του αριθμού των αρχείων ενώ επιτρέπει την εμφάνιση ακόμη και των συσκευών που συνδέονται κατά τη διάρκεια της λειτουργίας του υπολογιστή (hot-pluggable devices). Συν τοις άλλοις, προσφέρει πλήρη συμβατότητα με την ονοματολογία των συσκευών του Linux όπως χρησιμοποιούνται με το υπάρχον σύστημα.

Μερικά παραδείγματα της ονοματολογίας του Devfs εμφανίζονται στον επόμενο πίνακα:

Παλαιότερη ονομασία
Ονομασία Devfs
/dev/hda1 /dev/ide/host0/bus0/target0/lun0/part1
/dev/sda3 /dev/scsi/host0/bus0/target0/lun0/part3
/dev/sg1 /dev/scsi/host2/bus0/target0/lun0/generic
/dev/tty2 /dev/vc/2
/dev/psaux /dev/misc/psaux

Φυσικά ισχύουν και οι παλαιότερες ονομασίες για λόγους συμβατότητας.
Για να χρησιμοποιήσετε το Devfs θα πρέπει να ενεργοποιήσετε την αντίστοιχη επιλογή στον πυρήνα του Linux.

Για περισσότερες πληροφορίες για το Devfs, μπορείτε να ανατρέξετε στην διεύθυνση:
http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html

Χρήσιμα πακέτα λογισμικού στό Debian: devfsd.

Το εικονικό σύστημα αρχείων procfs

Όπως θα δούμε και στο κεφ. 14, το Debian προσφέρει αρκετές εντολές και εργαλεία για την διαχείριση του συστήματος. Με αυτές τις εντολές μπορεί κάποιος να μάθει σημαντικές πληροφορίες για το σύστημα καθώς και να επέμβει σε αυτό. Πέρα από τον παραδοσιακό αυτό τρόπο, προσφέρεται και ένα εικονικό σύστημα αρχείων, το procfs, στο οποίο τα αρχεία παρουσιάζουν την τρέχουσα κατάσταση του συστήματος, δηλαδή τις παραμέτρους του πυρήνα, των οδηγών συσκευών, τις διεργασίες του συστήματος, κλπ.
Πιο αναλυτικά στο procfs και στα χαρακτηριστικά του θα αναφερθούμε στο κεφ. 14.
Το procfs είναι εκ των προτέρων ενεργοποιημένο σε κάθε πυρήνα του Linux και ο αρμός του (mount point είναι πάντα ο κατάλογος /proc).

Χρήσιμα πακέτα λογισμικού στό Debian: procps, psmisc, systune.