Next Previous Contents

2. Τέλος πάντων, τι είναι μια κατάτμηση;

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

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

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

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

Παρόλα αυτά, μερικές κατατμήσεις με συγκεκριμένα συστήματα αρχείων μπορούν να διαιρεθούν χωρίς να χαθούν δεδομένα (αν είστε τυχεροί). Για παράδειγμα, υπάρχει ένα πρόγραμμα ονόματι "fips" που διαιρεί κατατμήσεις MS-DOS στα δύο για να κάνει χώρο για μια εγκατάσταση Linux χωρίς να χρειαστεί επανεγκατάσταση του MS-DOS. Όμως πάλι δε θα το αγγίξετε χωρίς να πάρετε αντίγραφα, έτσι δεν είναι;

2.1 Τα αντίγραφα είναι σημαντικά

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

Προσοχή: Μιλάω για αληθινές ταινίες, όχι εκείνες τις ftape αηδίες που ελέγχονται από τον ελεγκτή δίσκου. Αγοράστε SCSI: το Linux έχει εγγενή υποστήριξη SCSI. Δεν χρειάζεται να φορτώσετε ASPI οδηγούς, δε χάνετε πολύτιμη HMA και εφόσον ο ελεγκτής SCSI εγκατασταθεί, απλά προσθέτετε δίσκους, κασέτες και CD-ROMs επάνω του. Ούτε άλλες I/O διευθύνσεις, παίξιμο με IRQ ή συνδυασμοί Master/Slave και PIO.

Επίσης: Οι καλοί SCSI ελεγκτές σας δίνουν υψηλή επίδοση I/O χωρίς μεγάλο φορτίο στον επεξεργαστή. Ακόμη και κάτω από βαριά χρήση του δίσκου θα έχετε καλή απόκριση. Εάν σχεδιάζετε να χρησιμοποιήσετε ένα σύστημα Linux σαν βασικό USENET τροφοδότη ή εάν θα ασχοληθείτε ως ISP μην διανοηθείτε να πάρετε σύστημα χωρίς SCSI.

2.2 Αριθμοί και ονόματα συσκευών

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

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

Τo Linux δε μπορεί να χειριστεί πάνω από ένα συγκεκριμένο αριθμό κατατμήσεων ανά δίσκο. Έτσι, στο Linux έχετε 4 πρωταρχικές κατατμήσεις (3 από αυτές χρήσιμες, εάν χρησιμοποιείτε λογικές κατατμήσεις) και το πολύ 15 κατατμήσεις συνολικά σε ένα δίσκο SCSI (63 συνολικά σε ένα δίσκο IDE).

Στο Linux, οι κατατμήσεις απεικονίζονται ως αρχεία συσκευών. Το αρχείο συσκευής είναι ένα αρχείο τύπου c (για συσκευή χαρακτήρων=character, που δε χρησιμοποιούν ενδιάμεση μνήμη-buffer chache) ή τύπου b (για συσκευή τεμαχίων=block, που περνά μέσα από την ενδιάμεση μνήμη). Στο Linux, όλοι οι δίσκοι απεικονίζονται ως block συσκευές. Σε αντίθεση με άλλα Unix συστήματα, το Linux δεν προσφέρει ακατέργαστες εκδόσεις χαρακτήρων (raw character) των δίσκων και των αντίστοιχων κατατμήσεών τους.

Το μόνο σημαντικό σε ένα αρχείο συσκευής είναι ο μείζων και ο μικρός αριθμός συσκευής, που δείχνονται αντί του μεγέθους του αρχείου:


$ ls -l /dev/hda
brw-rw----   1 root     disk       3,   0 Jul 18  1994 /dev/hda
                                   ^    ^
                                   |    minor device number 
                                   major device number

Όταν χρησιμοποιείται ένα αρχείο συσκευής, ο μείζων αριθμός επιλέγει ποιός οδηγός συσκευής θα κληθεί για να εκτελεστεί η εργασία εισόδου/εξόδου. Η κλήση αυτή γίνεται με τον μικρό αριθμό ως παράμετρο και εξαρτάται αποκλειστικά από τον οδηγό πώς θα μεταφραστεί ο μικρός αριθμός. Η τεκμηρίωση του οδηγού συνήθως εξηγεί πώς ο οδηγός χρησιμοποιεί τους μικρούς αριθμούς. Για IDE δίσκους η τεκμηρίωση βρίσκεται στο /usr/src/linux/Documentation/ide.txt. Για SCSI δίσκους, θα περιμένατε να τους βρείτε στο /usr/src/linux/Documentation/scsi.txt, αλλά δεν είναι εκεί. Πρέπει να κοιτάξετε στον κώδικα του οδηγού για να είστε σίγουροι (/usr/src/linux/driver/scsi/sd.c:184-196). Ευτυχώς υπάρχει και η λίστα αριθμών και ονομάτων οδηγών του Peters Anvin στο /usr/src/linux/Documentation/devices.txt; κοιτάξτε τις αναφορές για block συσκευές, μείζων 3, 22, 33, 34 για IDE και μείζων 8 για SCSI δίσκους. Οι μείζων και μικροί αριθμοί είναι ένα byte ο καθένας και για αυτό ο αριθμός κατατμήσεων ανά δίσκο είναι περιορισμένος.

Κατά σύμβαση, τα αρχεία συσκευών έχουν συγκεκριμένα ονόματα και πολλά προγράμματα έχουν γνώση των ονομάτων αυτών κατά τη μεταγλώττισή τους. Περιμένουν οι IDE δίσκοι να ονομάζονται /dev/hd* και τους SCSI δίσκους /dev/sd*. Οι δίσκοι αριθμούνται ως a, b, c κλπ, οπότε το /dev/hda είναι ο πρώτος IDE δίσκος και ο /dev/sda είναι ο πρώτος σας SCSI δίσκος. Και οι δυο συσκευές αντιπροσωπεύουν ολόκληρους δίσκους, ξεκινώντας από το block ένα. Γράφοντας στις συσκευές αυτές με τα λάθος εργαλεία θα καταστρέψει τις εγγραφές εκκίνησης και κατατμήσεων, καθιστώντας όλα τα δεδομένα στον δίσκο μη προσβάσιμα ή κάνοντας το σύστημά σας αδύνατο να ξεκινήσει. Να ξέρετε τι κάνετε, και ξανά, πάρτε αντίγραφα πριν κάνετε οτιδήποτε.

Οι πρωταρχικές κατατμήσεις του δίσκου είναι οι 1, 2, 3 και 4. Έτσι /dev/hda1 είναι η πρώτη πρωταρχική κατάτμηση στον πρώτο IDE δίσκο κοκ. Λογικές κατατμήσεις έχουν νούμερα 5 και άνω, οπότε /dev/sdb5 είναι η πρώτη λογική κατάτμηση στον δεύτερο SCSI δίσκο.

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

Το Linux χρησιμοποιεί τον κωδικό 0χ82 για κατατμήσεις εναλλαγής και 0χ83 για "εγγενή" συστήματα αρχείων (ext2 δηλαδή). Το κάποτε δημοφιλές αλλά τώρα παρωχημένο Linux/Minix σύστημα χρησιμοποιούσε τον κωδικό 0χ81. Το OS/2 χρησιμοποιεί τον τύπο 0χ07 και το ίδιο και το NTFS σύστημα των Windows NT. Το MS-DOS χρησιμοποιεί αρκετούς κωδικούς για τις διάφορες εκδόσεις του FAT συστήματός του: 0χ01, 0χ04 και 0χ06 είναι γνωστά. Το DR-DOS χρησιμοποιούσε το 0χ81 για τις προστατευόμενες FAT κατατμήσεις του, δημιουργώντας προβλήματα με το Linux/Minix στον καιρό του, αλλά σήμερα ούτε το Linux/Minix ούτε και το DR-DOS χρησιμοποιούνται πια. Η εκτεταμένη κατάτμηση που χρησιμοποιείται από τις λογικές κατατμήσεις έχει κωδικό 0χ05.

Οι κατατμήσεις δημιουργούνται και καταστρέφονται με το fdisk. Κάθε λειτουργικό που σέβεται τον εαυτό του έχει ένα fdisk που παραδοσιακά καλείται fdiskFDISK.EXE) στα περισσότερα συστήματα. Μερικά fdisk, κυρίως του DOS, είναι κάπως περιορισμένα όταν χειρίζονται κατατμήσεις άλλων λειτουργικών. Τέτοιοι περιορισμοί έχουν να κάνουν με την αδυναμία χειρισμού οτιδήποτε με ξένου κωδικό, με αριθμό κυλίνδρου μεγαλύτερο του 1024 και την αδυναμία να δημιουργήσουν ή να καταλάβουν κατατμήσεις που δεν τελειώνουν σε όριο κυλίνδρου. Για παράδειγμα, το fdisk του MS-DOS δε μπορεί να σβήσει κατατμήσεις NTFS, το fdisk του OS/2 έχει αναφερθεί ότι κρυφά "διορθώνει" κατατμήσεις που δημιουργήθηκαν με το fdisk του Linux που δεν τελειώνουν σε όριο κυλίνδρου, ενώ και τα δύο, του DOS και του OS/2, έχουν προβλήματα με δίσκους με περισσότερους από 1024 κυλίνδρους (δείτε το "large-disk" mini-howto για λεπτομέρειες για τέτοιους δίσκους).


Next Previous Contents