Magaz, The Greek Linux Magazine
Magaz Logo

Επόμενο  Προηγούμενο  Περιεχόμενα

2. Swap αρχεία

Ένα swap αρχείο είναι ένα κανονικό αρχείο. Δεν είναι με κανένα τρόπο ειδικό προς τον πυρήνα. Το μόνο πράγμα που νοιάζει τον πυρήνα είναι να μην έχει καθόλου "τρύπες", και να είναι έτοιμο για χρήση με την εντολή mkswap.

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

Το κομμάτι σχετικά με τις "τρύπες" είναι σημαντικό. Το αρχείο swap κρατάει τον χώρο του δίσκου έτσι ώστε ο πυρήνας να μπορεί γρήγορα να swap out μια σελίδα χωρίς να χρειάζεται να παέι μέσω όλων των πραγμάτων που είναι χρήσιμα όταν καταχωρεί ένα sector δίσκου σε ένα αρχείο. Ο πυρήνας απλώς χρησιμοποιεί όποιους τομείς έχουν ήδη καταχωρηθεί στο αρχείο. Επειδή μια "τρύπα" σε ένα αρχείο σημαίνει πως δεν υπάρχουν καθόλου τομείς δίσκου καταχωρημένοι (για αυτό το μέρος μέσα στο αρχείο), δεν είναι καλό για τον πυρήνα να προσπαθεί να τους χρησιμοποιεί.

2.1 Ορισμός swap αρχείου

Ένας καλός τρόπος για να δημιουργήσετε το swap αρχείο χωρίς "τρύπες" είναι μέσω της ακόλουθης εντολής:

dd if=/dev/zero of=<swap αρχείο> bs=<bytes> count=<blocks>
  • if=/dev/zero : input file, διαβάζει από αυτό το αρχείο
  • of=<swap αρχείο> : output file, γράφει σε αυτό το αρχείο
  • bs=<bytes> : block size, διαβάζει και γράφει <bytes> bytes κάθε φορά
  • count=<blocks> : αντιγράφει μόνο <blocks> blocks από αυτά που διαβάζει

Θα εμφανιστεί το μήνυμα:

<blocks>+0 records in
<blocks>+0 records out

Είναι καλύτερα το μέγεθος να είναι πολλαπλάσιο του 4, επειδή ο πυρήνας γράφει σελίδες μνήμης, που είναι 4ΚΒ σε μέγεθος. Αν το μέγεθος δεν είναι πολλαπλάσιο του 4, το τελευταίο ζευγάρι των kilobytes μπορεί να είναι αχρησιμοποίητο. Ειδικότερα, για swap αρχείο το μέγεθος είναι καλό να είναι πολλαπλάσιο του inode μεγέθους, συνήθως 1024 ή 2048 (ή ακόμη και 4096), γιατί 1block=1KB=1024 bytes άρα τιμές πολλαπλάσιες του 1024.

2.2 Ρόλος του /dev/zero

Το /dev/zero είναι ένα ειδικό αρχείο που κατά την ανάγνωσή του, επιστρέφει \0 χαρακτήρες. Είναι μια συσκευή που όταν την διαβάζετε παίρνετε άπειρα ASCII 0. Είναι χρήσιμη ως πηγή "κενών" bytes, όπως ακριβώς και πολλοί επεξεργαστές RISC έχουν ένα zero καταχωρητή που είναι πάντα 0.

Δημιουργείται με:

mknod -m 666 /dev/zero c 1 5
chown root.mem /dev/zero

Επόμενο  Προηγούμενο  Περιεχόμενα


Valid HTML 4.01!   Valid CSS!