Η εικονική μνήμη είναι ένα από εκείνα τα πράγματα που στηρίζουν τα σύγχρονα λειτουργικά συστήματα, αλλά συνήθως, δεν το σκέφτεσαι πραγματικά εκτός και αν έχεις πρόβλημα. Οι διανομές Linux σάς ζητούν να ρυθμίσετε τον χώρο της εικονικής μνήμης (ανταλλαγές κατατμήσεων) κατά την εγκατάσταση, αλλά οι περισσότεροι αρχάριοι δεν γνωρίζουν πόσο χρήσιμο είναι αυτό.
Εδώ είναι όλα όσα πρέπει να γνωρίζετε για την εικονική μνήμη στο Linux.
Τι είναι η εικονική μνήμη;
Η εικονική μνήμη είναι ένας τρόπος αναπαράστασης της μνήμης σας που έχει αφαιρεθεί από τη φυσική μνήμη του υπολογιστή σας. Χρησιμοποιεί τόσο τη μνήμη RAM όσο και τον αποθηκευτικό σας χώρο, είτε σε παραδοσιακό σκληρό δίσκο είτε σε SSD.
Στο Linux, αυτό γίνεται σε επίπεδο πυρήνα και υλικού. Η CPU διαθέτει ένα κομμάτι υλικού που ονομάζεται μονάδα διαχείρισης μνήμης (MMU) που μεταφράζει τις διευθύνσεις φυσικής μνήμης σε εικονικές. Αυτές οι διευθύνσεις είναι ανεξάρτητες από το πού βρίσκονται φυσικά στο μηχάνημα. Αυτοί οι χώροι διευθύνσεων είναι γνωστοί ως "σελίδες" και θα μπορούσαν να βρίσκονται στη μνήμη RAM ή στον σκληρό σας δίσκο ή στο SSD. Το λειτουργικό σύστημα βλέπει αυτές τις διευθύνσεις ως μια μεγάλη δεξαμενή μνήμης, γνωστή ως "χώρος διευθύνσεων".
Η εικονική μνήμη εκμεταλλεύεται το γεγονός ότι δεν χρησιμοποιείται όλη η μνήμη που χρησιμοποιείται στη θεωρία συνεχώς. Τα προγράμματα στη μνήμη αναλύονται σε σελίδες και τα μέρη που ο πυρήνας θεωρεί περιττά "ανταλλάσσονται" ή μετακινούνται στον σκληρό δίσκο. Όταν χρειάζονται, μπορούν να «ανταλλάσσονται» ή να επαναφέρονται στη μνήμη RAM.
Ο χώρος που χρησιμοποιείται για την εικονική μνήμη σε μια μονάδα δίσκου είναι γνωστός ως "backing store" ή "swap space". Στον κόσμο των Windows, είναι συνήθως υλοποιείται ως αρχείο, γνωστό ως "αρχείο ανταλλαγής". Είναι επίσης δυνατό να γίνει αυτό στο Linux, αλλά είναι πολύ πιο συνηθισμένο προς την χρησιμοποιήστε ένα αποκλειστικό διαμέρισμα δίσκου.
Τα αρχεία Swap στο Linux δεσμεύονται συνήθως για ελάχιστα ή ενσωματωμένα συστήματα και είναι σύνηθες τα τελευταία να εκτελούνται χωρίς εικονική μνήμη εντελώς, επειδή τα ενσωματωμένα λειτουργικά συστήματα πρέπει να είναι μικρά.
Το αποτέλεσμα της εικονικής μνήμης είναι ότι είναι δυνατή η εκτέλεση μεγάλων προγραμμάτων χρησιμοποιώντας περισσότερη μνήμη από τη φυσική RAM το μηχάνημά σας, παρόμοιο με το πώς μια πιστωτική κάρτα σάς επιτρέπει να κάνετε μεγάλες αγορές για περισσότερα χρήματα από όσα έχετε στην τράπεζά σας λογαριασμός. Όπως μια πιστωτική κάρτα, η εικονική μνήμη είναι χρήσιμη όταν τη χρειάζεστε, αλλά δεν θέλετε να επεκτείνετε υπερβολικά τη χρήση της.
Η εικονική μνήμη επιτρέπει επίσης στους προγραμματιστές να δημιουργούν εφαρμογές χωρίς να χρειάζεται να γνωρίζουν πώς είναι οργανωμένη η μνήμη ενός υπολογιστή.
Το κύριο μειονέκτημα ιστορικά με την εικονική μνήμη ήταν ότι οι σκληροί δίσκοι ήταν πιο αργοί από τη μνήμη RAM. Εάν ένα μηχάνημα δεν έχει αρκετή μνήμη RAM, το σύστημα μπορεί να συνεχίσει να ανταλλάσσει σελίδες μέσα και έξω ατελείωτα, μια διαδικασία γνωστή ως "thrashing". Αυτό είναι λιγότερο πρόβλημα σε σύγχρονους υπολογιστές με περισσότερη μνήμη RAM και ταχύτερα SSD που μετατοπίζουν τους μηχανικούς σκληρούς δίσκους, αλλά εξακολουθεί να είναι κάτι που πρέπει να γνωρίζετε του.
Linux Swap Partitions
Όπως αναφέρθηκε προηγουμένως, η συνήθης μέθοδος για τη ρύθμιση της εικονικής μνήμης στο Linux είναι η χρήση ενός αποκλειστικού διαμερίσματος δίσκου. Το βοηθητικό πρόγραμμα εγκατάστασης θα εξετάσει το υλικό σας και θα προτείνει ένα σχήμα διαμερισμάτων που περιλαμβάνει ένα διαμέρισμα ανταλλαγής.
Μπορείτε επίσης να προσθέσετε διαμερίσματα ανταλλαγής μετά την εγκατάσταση. Εάν θέλετε να προσθέσετε ένα νέο διαμέρισμα σε μια υπάρχουσα μονάδα δίσκου, θα πρέπει να το κάνετε χρησιμοποιήστε ένα μη καταστροφικό εργαλείο διαχωρισμού όπως το GParted. Βεβαιωθείτε ότι έχετε επιλέξει το "Linux swap" ως σύστημα αρχείων για το διαμέρισμα σας.
Δημιουργήστε αντίγραφα ασφαλείας σημαντικών δεδομένων πριν από την αναδιαμέριση της μονάδας δίσκου σας.
Αφού δημιουργήσετε το διαμέρισμα σας, χρησιμοποιήστε την εντολή mkswap για να μορφοποιήσετε το διαμέρισμα σας.
sudo mkswap /dev/sdX
Τώρα θα πρέπει να επεξεργαστείτε το δικό σας /etc/fstab ως root για να προσθέσετε το διαμέρισμα ανταλλαγής. Αυτή η γραμμή, που προστέθηκε στο αρχείο, θα δημιουργήσει ένα διαμέρισμα ανταλλαγής που θα προσαρτηθεί κατά την εκκίνηση:
/dev/sdX κανένας δεν αλλάζει τις προεπιλογές 0 0
Τώρα χρησιμοποιήστε το ανταλλάσσω εντολή για την ενεργοποίηση του νέου σας χώρου ανταλλαγής, όπου sdX είναι το όνομα του διαμερίσματος swap:
sudo swapon /dev/sdX
Χρήση Swap Files σε Linux
Είναι εύκολο να ρυθμίστε ένα αρχείο ανταλλαγής στο Linux χρησιμοποιώντας τη γραμμή εντολών. Ίσως θελήσετε να το κάνετε αυτό εάν δεν θέλετε να κάνετε τον κόπο να επαναδιαμερίσετε τη μονάδα δίσκου σας ή να επεξεργαστείτε /etc/fstab. Μία μέθοδος είναι η χρήση καταπίπτω:
Για παράδειγμα, για να δημιουργήσετε ένα αρχείο ανταλλαγής 2 GB:
sudo fallocate -l 2G /path/to/swapfile
Εναλλακτικά, μπορείτε να χρησιμοποιήσετε την εντολή dd για να δημιουργήσετε το αρχείο ανταλλαγής.
sudo δδ αν=/dev/μηδέν του=/path/to/swapfile bs=1024 καταμέτρηση=2048
Βεβαιωθείτε ότι χρησιμοποιείτε σωστά την εντολή dd, καθώς η λανθασμένη λήψη του αρχείου και του outfile μπορεί να προκαλέσει απώλεια δεδομένων. Το fallocate είναι η προτιμώμενη μέθοδος για αυτόν τον λόγο.
ο /dev/zero συσκευή είναι μια ειδική συσκευή που βγάζει "0." Αυτό που κάνει αυτή η εντολή dd είναι να δημιουργεί ένα κενό αρχείο μπλοκ δύο gigabyte χρησιμοποιώντας μπλοκ 1024 kilobyte κατάλληλα για χρήση ως χώρος ανταλλαγής.
Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το mkswap και ανταλλάσσω εντολές με ένα αρχείο swap όπως θα κάνατε με ένα διαμέρισμα swap:
sudo mkswap /path/to/swapfile
sudo swapon /path/to/swapfile
Ίσως αναρωτιέστε πότε πρέπει να χρησιμοποιήσετε ένα αρχείο swap ή ένα αποκλειστικό διαμέρισμα για τον χώρο ανταλλαγής. Η επιλογή είναι εύκολη: στις περισσότερες περιπτώσεις, θα πρέπει να χρησιμοποιήσετε ένα διαμέρισμα. Αυτή είναι η καλύτερη επιλογή για επιτραπέζιο υπολογιστή Linux ή διακομιστή. Το σχήμα διαμερισμάτων που προτείνεται από το πρόγραμμα εγκατάστασης είναι συνήθως επαρκές σε έναν επιτραπέζιο υπολογιστή Linux ενός χρήστη.
Μπορεί να θέλετε να χρησιμοποιήσετε ένα αρχείο swap εάν εκτελείτε Linux σε μια εικονική μηχανή, σε ένα μικρό ενσωματωμένο σύστημα ή απλά δεν θέλετε να επαναδιαμερίσετε το υπάρχον σύστημα Linux.
Πόσος χώρος ανταλλαγής;
Για πολλά χρόνια, η τυπική συμβουλή για το πόσος χώρος ανταλλαγής χρειάζεται είναι το διπλάσιο της φυσικής RAM. Με τις μεγάλες μονάδες δίσκου και τις ποσότητες μνήμης που διαθέτουν ακόμη και οι φθηνότεροι υπολογιστές, αυτός ο κανόνας μπορεί να τεθεί υπό αμφισβήτηση.
Σε πολλά συστήματα, εάν ελέγξετε το top ή το htop, μπορεί να παρατηρήσετε ότι ο χώρος ανταλλαγής δεν χρησιμοποιείται καθόλου, εάν ρυθμίσετε το σύστημά σας με αυτόν τον τρόπο.
Ωστόσο, το διπλάσιο της φυσικής μνήμης είναι ένα καλό σημείο εκκίνησης και ένα ασφαλιστήριο συμβόλαιο εάν έχετε μεγαλύτερες απαιτήσεις από τη μνήμη. Μπορείτε να κάνετε αλλαγές στο σύστημά σας όπως απαιτείται. Εάν το σύστημά σας χρησιμοποιεί όλη τη μνήμη RAM, ο υπολογιστής μπορεί να αντιμετωπίσει προβλήματα απόδοσης κατά τη χρήση εικονικής μνήμης.
Ο υπολογιστής μπορεί να συνεχίσει να εναλλάσσεται μέσα και έξω, μια διαδικασία γνωστή ως thrashing, με αποτέλεσμα να φαίνεται ότι δεν ανταποκρίνεται. Εάν εξακολουθείτε να έχετε μηχανικό σκληρό δίσκο, μπορείτε συχνά να τον ακούτε να έχει συνεχώς πρόσβαση.
Αυτό είναι πολύ λιγότερο πρόβλημα στις μέρες μας, καθώς η ποσότητα μνήμης RAM ακόμη και στους φθηνότερους υπολογιστές είναι υπεραρκετή, καθώς και η ταχύτητα των SSD είναι πολύ μεγαλύτερη από τους παλιούς σκληρούς δίσκους. Είναι ακόμα κάτι που πρέπει να γνωρίζετε.
Ο ευκολότερος τρόπος για να το διορθώσετε είναι απλώς να προσθέσετε περισσότερη μνήμη RAM στο μηχάνημά σας. Εάν αυτό δεν είναι δυνατό, μπορείτε να προσπαθήσετε να προσαρμόσετε την "ανταλλαγή" του πυρήνα του Linux.
Ο αριθμός swappiness καθορίζει πόσο βυθίζεται ο πυρήνας στην εικονική μνήμη. Κυμαίνεται από 0 έως 100. Η ρύθμιση του στο 0 σημαίνει ότι το Linux δεν θα αλλάξει καθόλου, ενώ στο 100, θα αλλάζει με κάθε ευκαιρία. Η προεπιλογή στα περισσότερα συστήματα είναι 60.
Για να αλλάξετε προσωρινά την swappiness, χρησιμοποιήστε την εντολή sysctl:
sudo sysctl vm.swappiness=20
Το "20" σε αυτήν την εντολή θα είναι ο αριθμός swappiness μέχρι να κάνετε επανεκκίνηση. Για να το αλλάξετε οριστικά, επεξεργαστείτε το /etc/sysctl.conf αρχείο ως root και τοποθετήστε τη γραμμή, "vm.swappiness=[swappiness number]", όπου "[swappiness number]" είναι ο αριθμός swappiness που θέλετε. Αυτό θα είναι ένα διάλειμμα μέχρι να μπορέσετε να εγκαταστήσετε περισσότερη μνήμη RAM.
Η εικονική μνήμη διατηρεί το σύστημα Linux σας να λειτουργεί ομαλά
Η εικονική μνήμη είναι ένα στοιχείο των σύγχρονων λειτουργικών συστημάτων, συμπεριλαμβανομένου του Linux, που διατηρεί τον υπολογιστή σας να λειτουργεί ομαλά. Μπορείτε να χρησιμοποιήσετε ένα αρχείο ανταλλαγής, αλλά η συνήθης μέθοδος είναι ένα αποκλειστικό διαμέρισμα. Δεν χρειάζεται να το σκέφτεστε τόσο πολύ, αλλά τα διαμερίσματα και τα αρχεία ανταλλαγής Linux είναι εύκολο να ρυθμιστούν και να αντιμετωπιστούν.
Πολλές από αυτές τις συμβουλές ισχύουν και για άλλα συστήματα, συμπεριλαμβανομένων των Windows, ακόμα κι αν οι μέθοδοι ρύθμισης εικονικής μνήμης είναι διαφορετικές.