Πώς να δημιουργήσετε ένα αρχείο Swap στο Linux

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

Swap Files εναντίον Swap Partitions

Υπάρχουν πολλά σενάρια όπου μπορεί να θέλετε να αυξήσετε τον υπάρχοντα ή να προσθέσετε νέο χώρο ανταλλαγής στον υπολογιστή σας Linux.

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

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

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

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

Πριν βουτήξουμε: Btrf και SSD

Υπάρχουν δύο σημεία που θα θέλαμε να συζητήσουμε γρήγορα.

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

Από τον πυρήνα 5.0, εσείς μπορεί να έχει swap αρχεία σε συστήματα αρχείων Btrfs εάν έχουν δημιουργηθεί με τις ακόλουθες απαιτήσεις:

Δεν υπάρχουν αρχεία αντιγραφής σε εγγραφή (NOCOW).
Δεν είναι συμπιεσμένα.
Δεν χρησιμοποιούν διαφορετικούς σκληρούς δίσκους.

Οι περισσότεροι αναγνώστες θα χρησιμοποιούν το προεπιλεγμένο σύστημα αρχείων ext4, επομένως αυτό δεν θα τους απασχολεί.

Όταν οι μονάδες Solid-State Drive (SSD) ήταν για πρώτη φορά διαθέσιμες, υπήρχε ανησυχία σχετικά με τη χρήση τους σε καταστάσεις που είχαν συχνές εγγραφές συστήματος αρχείων. Οι άνθρωποι προειδοποιήθηκαν να βάλουν χώρο ανταλλαγής στους SSD, ακόμη και να αποφύγουν την καταγραφή του συστήματος σε SSD.

  Οι 9 καλύτερες εφαρμογές οικιακού διακομιστή Linux που πρέπει να εγκαταστήσουν όλοι

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

Έλεγχος υπάρχοντος χώρου ανταλλαγής

Κοίτα πριν πηδήξεις. Ας ελέγξουμε ποιος χώρος ανταλλαγής είναι διαθέσιμος στον υπολογιστή σας. Μπορείτε να το κάνετε αυτό με δύο τρόπους και θα χρησιμοποιήσουμε και τους δύο. Η εντολή free θα εμφανίσει τη χρησιμοποιημένη και την ελεύθερη μνήμη. Η επιλογή -h (ανθρώπινος αναγνώσιμος) θα προκαλέσει ελεύθερη χρήση λογικών μονάδων όταν εμφανίζει τις τιμές μνήμης.

free -h

Η έξοδος από το δωρεάν δείχνει ότι δεν υπάρχει διαμορφωμένος χώρος ανταλλαγής σε αυτό το μηχάνημα.

Η ανταλλαγή δεν συζητείται ποτέ χωρίς να εμφανιστεί η μνήμη RAM και η δωρεάν μνήμη RAM. Αξίζει λοιπόν να σημειωθεί ότι η δωρεάν μνήμη RAM δίνεται ως 237 MB. Μην το μπερδεύετε με το σύνολο της διαθέσιμης μνήμης RAM για χρήση. Αυτή η τιμή παρέχεται από το σχήμα “διαθέσιμο”, το οποίο είναι 881 MB.

Το Linux χρησιμοποιεί δωρεάν μνήμη RAM για τους δικούς του σκοπούς, όπως η προσωρινή αποθήκευση αρχείων και οι buffer του πυρήνα. Η ποσότητα μνήμης RAM που αφιερώνεται σε αυτό είναι η τιμή “buff/cache”, η οποία είναι 871 MB. Αλλά αυτή η μνήμη εξακολουθεί να θεωρείται —και να μετράται ως—«διαθέσιμη». Τα περιεχόμενα της μνήμης RAM “buf/cache” μπορούν να απορριφθούν αμέσως και να χρησιμοποιηθούν από οποιαδήποτε εφαρμογή χρειάζεται λίγη μνήμη.

Ένας άλλος τρόπος για να ελέγξετε εάν υπάρχει διαθέσιμος χώρος ανταλλαγής είναι να χρησιμοποιήσετε την εντολή swapon. Η επιλογή –show δεν κάνει καμία αλλαγές στο swap στον υπολογιστή σας. Παρέχει μόνο στατιστικά στοιχεία.

swapon --show

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

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

Πόσος χώρος ανταλλαγής χρειάζομαι;

Η παραδοσιακή απάντηση ήταν “διπλάσια ποσότητα μνήμης RAM που έχετε”. Αλλά αυτό επινοήθηκε όταν οι υπολογιστές είχαν πολύ περιορισμένη μνήμη RAM. Καθώς η μνήμη RAM έχει γίνει φθηνότερη και τα προγράμματα και τα παιχνίδια απαιτούν περισσότερο τη μνήμη, οι προδιαγραφές του υπολογιστή έχουν προσαρμοστεί ανάλογα. Οι οικικοί υπολογιστές με 32 GB μνήμης RAM δεν είναι ασυνήθιστοι στις μέρες μας. Και δεν πρόκειται να διαθέσετε 64 GB χώρου στον σκληρό δίσκο για να ανταλλάξετε χώρο εάν έχετε 32 GB μνήμης RAM. Αυτό είναι ξεκάθαρα υπερβολικό.

Το ποσό της ανταλλαγής που χρειάζεστε είναι ως εμπρηστικό θέμα, συγκρίσιμο με το “ποιος είναι ο καλύτερος επεξεργαστής”. Μία από τις πιο λογικές συζητήσεις που έχουμε δει σχετικά με αυτό το θέμα είναι στο Συχνές ερωτήσεις για την ανταλλαγή Ubuntu. Είναι μια σύντομη και κοινή λογική προσέγγιση (αν και, όπως πολλοί άνθρωποι, παρεξηγούν πώς λειτουργεί η swappiness στο Linux). Υπάρχει ένας εύχρηστος πίνακας που δείχνει μια συνιστώμενη ποσότητα χώρου εναλλαγής για την ποσότητα μνήμης RAM που έχει το σύστημά σας και εάν βάζετε τον υπολογιστή σας σε κατάσταση αδρανοποίησης ή όχι.

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

  Πώς να εγκαταστήσετε το VMWare Workstation Pro 14 σε Linux

Διαλέγω ένα μέγεθος αρχείου swap από τον πίνακα, και τρέξτε το για λίγο. Παρακολουθήστε τη χρήση του χώρου ανταλλαγής από το σύστημά σας. Εάν απαιτείται λεπτομέρεια, οι αλλαγές γίνονται εύκολα. Με την ανταλλαγή αρχείων, είναι μια δουλειά δύο λεπτών. Συγκρίνετε αυτό με την προσαρμογή των κατατμήσεων σε έναν ζωντανό υπολογιστή Linux.

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

Δεν πρέπει να χρησιμοποιήσετε την εντολή fallocate για να δημιουργήσετε το swapfile σας. Αυτό είναι από τη σελίδα man για swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

Έτσι, αν και το fallocate είναι πιο γρήγορο, θα χρησιμοποιήσουμε το dd to δημιουργήστε το αρχείο ανταλλαγής. Το μηχάνημα που χρησιμοποιήθηκε για την έρευνα αυτού του άρθρου έχει δύο GB μνήμης RAM. Θα δημιουργήσουμε ένα αρχείο ανταλλαγής ενός GB.

Οι επιλογές είναι:

if: Το αρχείο εισόδου. Σε αυτό το παράδειγμα, χρησιμοποιούμε το /dev/zero το οποίο θα παρέχει μια ροή μηδενικών byte.
από: Το αρχείο εξόδου. Θα δημιουργήσουμε ένα αρχείο στον ριζικό κατάλογο, που ονομάζεται swapfile.
bs: Το μέγεθος του μπλοκ σε byte. Αυτό καθορίζει πόσα byte να διαβάζονται από το αρχείο εισόδου και να γράφονται στο αρχείο εξόδου, κάθε φορά.
καταμέτρηση: Πόσα μπλοκ να διαβάσετε και να γράψετε. Πολλαπλασιάστε αυτόν τον αριθμό με την τιμή bs για να λάβετε το μέγεθος του αρχείου.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Ορισμένα στατιστικά στοιχεία παρέχονται κατά τη δημιουργία του αρχείου.

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

Χρησιμοποιήστε την εντολή ls για να δείτε το αρχείο στον ριζικό κατάλογο:

ls /

Προετοιμασία του αρχείου Swap

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

sudo mkswap /swapfile

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

Χρησιμοποιώντας το αρχείο Swap

Τα προεπιλεγμένα δικαιώματα είναι πολύ φιλελεύθερα, πρέπει να τα περιορίσουμε έτσι ώστε μόνο το root να μπορεί να χρησιμοποιήσει το swapfile. Χρησιμοποιήστε το chmod για να αλλάξετε τα δικαιώματα του αρχείου:

sudo chmod 600 /swapfile

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

Πρέπει να χρησιμοποιήσουμε την εντολή swapon για να ενημερώσουμε το Linux ότι υπάρχει ένα νέο αρχείο swap διαθέσιμο για χρήση. Χρειάζεται μόνο να δώσουμε τη διαδρομή και το όνομα αρχείου:

sudo swapon /swapfile

Το αρχείο ανταλλαγής είναι πλέον ενεργό.

  Πώς να χρησιμοποιήσετε και να εγκαταστήσετε το Stremio σε Linux

Προσθήκη του αρχείου Swap στο fstab

Για να βεβαιωθείτε ότι το αρχείο swap είναι διαθέσιμο μετά από μια επανεκκίνηση, προσθέστε το στο αρχείο /etc/fstab. Μπορείτε να χρησιμοποιήσετε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου προτιμάτε, αλλά θα δείξουμε τη διαδικασία χρησιμοποιώντας το γραφικό πρόγραμμα επεξεργασίας κειμένου Gedit.

sudo gedit /etc/fstab

Η γραμμή που πρέπει να προσθέσουμε στο κάτω μέρος του αρχείου είναι:

/swapfile    none    swap    sw    0    0

Τα πεδία είναι:

Σύστημα αρχείων: Η διαδρομή και το όνομα του αρχείου ανταλλαγής.
Σημείο προσάρτησης: Το αρχείο δεν είναι προσαρτημένο σαν σύστημα αρχείων, επομένως η καταχώριση είναι “κανένα”.
Τύπος: Αυτό είναι “ανταλλαγή”.
Επιλογές: Κατά την εκκίνηση, το swapon -a (έναρξη όλων των συσκευών που επισημαίνονται ως swap) θα κληθεί από ένα από τα σενάρια εκκίνησης. Αυτή η επιλογή λέει στο Linux να αντιμετωπίζει αυτήν την καταχώρηση ως πόρο swap που θα πρέπει να τεθεί υπό τον έλεγχο αυτής της εντολής swapon -a. Είναι σύνηθες να βλέπουμε “προεπιλογές” να χρησιμοποιούνται εδώ επειδή υπάρχει μια εσφαλμένη πεποίθηση μεταξύ ορισμένων χρηστών Linux ότι αυτό το πεδίο αγνοείται. Όπως θα δούμε, αυτό δεν ισχύει. Επομένως, είναι λογικό να χρησιμοποιήσετε τη σωστή επιλογή.
Dump: Αυτό μπορεί να μηδενιστεί. Δεν έχει σημασία σε αυτή την περίπτωση.
Pass: Αυτό μπορεί να μηδενιστεί. Δεν έχει σημασία σε αυτή την περίπτωση.

Αποθηκεύστε τις αλλαγές και κλείστε το πρόγραμμα επεξεργασίας.

Έλεγχος χρήσης εναλλαγής

Για να δείτε εάν χρησιμοποιείται ο χώρος ανταλλαγής, χρησιμοποιήστε την εντολή swapon με την επιλογή –show:

swapon --show

Οι στήλες είναι:

Όνομα: Το όνομα του διαμερίσματος swap ή του αρχείου swap.
Τύπος: Ο τύπος της συσκευής ανταλλαγής.
Μέγεθος: Το μέγεθος του πόρου ανταλλαγής.
Χρησιμοποιείται: Η ποσότητα του χρησιμοποιημένου χώρου ανταλλαγής.
Prio: Η προτεραιότητα αυτού του χώρου ανταλλαγής.

Η προτεραιότητα ανταλλαγής χώρου

Κάθε χώρος ανταλλαγής έχει προτεραιότητα. Εάν δεν παρέχετε ένα, εκχωρείται αυτόματα ένα. Οι προτεραιότητες που κατανέμονται αυτόματα είναι πάντα αρνητικές. Το εύρος των προτεραιοτήτων που μπορούν να εκχωρηθούν χειροκίνητα είναι από 0 έως 32767. Πρώτα χρησιμοποιούνται πόροι ανταλλαγής με υψηλότερες προτεραιότητες.

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

Για να ορίσετε μια προτεραιότητα, προσθέστε την επιλογή pri= (προτεραιότητα) στην καταχώρηση /etc/fstab. Επεξεργαστείτε τη γραμμή που προσθέσατε στο /etc/fstab ώστε να μοιάζει με αυτό:

/swapfile    none    swap    sw,pri=10    0    0

Δηλαδή, προσθέστε pri=10 στο πεδίο επιλογών, διαχωρισμένο από το “sw” με κόμμα. Μην αφήνετε κενά μεταξύ του «sw», του κόμματος και του «pri=10». Επανεκκινήστε τον υπολογιστή σας και χρησιμοποιήστε την εντολή swapon –show:

swapon -- show

Η προτεραιότητα αυτού του χώρου ανταλλαγής έχει αυξηθεί στο 10. Αυτό είναι θετικό απόδειξη ότι το πεδίο επιλογών στην καταχώρηση /etc/fstab δεν αγνοείται.

Swap Space Made Easy

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

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

Και ας ελέγξουμε ότι λειτούργησε:

swapon --show

Εάν θέλετε να κάνετε αυτή τη μόνιμη απόθεση, τη στο αρχείο σας /etc/fstab.

Κεραία. Η δουλειά έγινε.