In einem typischen Computer gibt es zwei grundlegende Arten von Speicher. Der erste Typ, Direktzugriffsspeicher (RAM), wird verwendet, um Daten und Programme zu speichern, während sie vom Computer aktiv verwendet werden. Programme und Daten können vom Computer nicht verwendet werden, wenn sie nicht im RAM gespeichert sind. RAM ist flüchtiger Speicher; Das heißt, die im RAM gespeicherten Daten gehen verloren, wenn der Computer ausgeschaltet wird.
Festplatten sind magnetische Medien, die zur langfristigen Speicherung von Daten und Programmen verwendet werden. Magnetische Medien sind nichtflüchtig; Die auf einer Festplatte gespeicherten Daten bleiben auch dann erhalten, wenn der Computer von der Stromversorgung getrennt wird. Die CPU (Central Processing Unit) kann nicht direkt auf die Programme und Daten auf der Festplatte zugreifen; es muss zuerst in den RAM kopiert werden, und dort kann die CPU auf ihre Programmieranweisungen und die Daten zugreifen, die von diesen Anweisungen verarbeitet werden sollen. Während des Bootvorgangs kopiert ein Computer bestimmte Betriebssystemprogramme wie den Kernel und init oder systemd sowie Daten von der Festplatte in den Arbeitsspeicher, wo der Prozessor des Computers, die CPU, direkt darauf zugreift.
Der zweite Speichertyp in modernen Linux-Systemen ist der Swap Space.
Leerzeichen tauschen
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Die Hauptfunktion des Auslagerungsspeichers besteht darin, Festplattenspeicher durch RAM-Speicher zu ersetzen, wenn der echte RAM voll ist und mehr Speicherplatz benötigt wird.
Angenommen, Sie haben ein Computersystem mit 8 GB RAM. Wenn Sie Programme starten, die diesen Arbeitsspeicher nicht füllen, ist alles in Ordnung und es ist kein Austausch erforderlich. Aber nehmen Sie an, die Tabelle, an der Sie arbeiten, wächst, wenn Sie weitere Zeilen hinzufügen, und dies und alles andere, was ausgeführt wird, füllt jetzt den gesamten Arbeitsspeicher. Ohne verfügbaren Auslagerungsspeicher müssten Sie aufhören, an der Tabelle zu arbeiten, bis Sie etwas von Ihrem begrenzten RAM freigeben könnten, indem Sie einige andere Programme schließen.
Der Kernel verwendet ein Speicherverwaltungsprogramm, das Speicherblöcke, auch Seiten genannt, erkennt, deren Inhalt in letzter Zeit nicht verwendet wurde. Das Speicherverwaltungsprogramm lagert genügend dieser relativ selten verwendeten Speicherseiten in eine spezielle Partition auf der Festplatte aus, die speziell für das „Paging“ oder Auslagern vorgesehen ist. Dadurch wird RAM frei und Platz für mehr Daten, die in Ihre Tabelle eingegeben werden können. Diese auf die Festplatte ausgelagerten Speicherseiten werden vom Speicherverwaltungscode des Kernels nachverfolgt und können bei Bedarf zurück in den Arbeitsspeicher ausgelagert werden.
Die Gesamtmenge an Arbeitsspeicher in einem Linux-Computer ist RAM plus Auslagerungsspeicher und wird als virtueller Speicher bezeichnet .
Arten von Linux-Swaps
Linux bietet zwei Arten von Auslagerungsspeicher. Standardmäßig erstellen die meisten Linux-Installationen eine Auslagerungspartition, es ist jedoch auch möglich, eine speziell konfigurierte Datei als Auslagerungsdatei zu verwenden. Eine Swap-Partition ist genau das, was ihr Name andeutet – eine Standardfestplattenpartition, die von mkswap
als Swap-Speicher bestimmt wird Befehl.
Eine Auslagerungsdatei kann verwendet werden, wenn kein freier Speicherplatz vorhanden ist, um eine neue Auslagerungspartition oder Speicherplatz in einer Datenträgergruppe zu erstellen, in der ein logischer Datenträger für Auslagerungsspeicher erstellt werden kann. Dies ist nur eine normale Datei, die erstellt und einer bestimmten Größe vorab zugewiesen wird. Dann das mkswap
Der Befehl wird ausgeführt, um ihn als Auslagerungsbereich zu konfigurieren. Ich empfehle nicht, eine Datei als Auslagerungsbereich zu verwenden, es sei denn, dies ist unbedingt erforderlich.
Schlagen
Thrashing kann auftreten, wenn der gesamte virtuelle Speicher, sowohl RAM als auch Auslagerungsspeicher, fast voll wird. Das System verbringt so viel Zeit damit, Speicherblöcke zwischen Auslagerungsspeicher und RAM und zurück zu paginieren, dass wenig Zeit für die eigentliche Arbeit bleibt. Die typischen Symptome dafür sind offensichtlich:Das System wird langsam oder reagiert gar nicht mehr, und die Festplattenaktivitätsanzeige leuchtet fast ständig.
Wenn Sie es schaffen, einen Befehl wie free
auszugeben die CPU-Auslastung und Speicherauslastung anzeigt, werden Sie feststellen, dass die CPU-Auslastung sehr hoch ist, vielleicht das 30- bis 40-fache der Anzahl der CPU-Kerne im System. Ein weiteres Symptom ist, dass sowohl RAM als auch Auslagerungsspeicher fast vollständig belegt sind.
Auch ein Blick auf die SAR-Daten (System Activity Report) kann diese Symptome zeigen. Ich installiere SAR auf jedem System, an dem ich arbeite, und verwende es für die forensische Analyse nach der Reparatur.
Was ist die richtige Menge an Auslagerungsspeicher?
Vor vielen Jahren war die Faustregel für die Menge an Auslagerungsspeicher, die auf der Festplatte zugewiesen werden sollte, das Doppelte der im Computer installierten RAM-Menge (das war natürlich, als der RAM der meisten Computer in KB oder MB gemessen wurde). . Wenn also ein Computer 64 KB RAM hätte, wäre eine Swap-Partition von 128 KB eine optimale Größe. Diese Regel berücksichtigte die Tatsache, dass die RAM-Größen zu dieser Zeit normalerweise recht klein waren und dass die Zuweisung von mehr als 2X RAM für Auslagerungsspeicher die Leistung nicht verbesserte. Mit mehr als doppelt so viel RAM für Swaps verbrachten die meisten Systeme mehr Zeit mit Thrashing als mit tatsächlicher Arbeit.
RAM ist zu einem billigen Gut geworden, und die meisten Computer verfügen heutzutage über RAM-Mengen, die sich auf mehrere zehn Gigabyte erstrecken. Die meisten meiner neueren Computer haben mindestens 8 GB RAM, einer hat 32 GB und meine Haupt-Workstation hat 64 GB. Meine älteren Computer haben zwischen 4 und 8 GB RAM.
Bei Computern mit großen RAM-Mengen ist der begrenzende Leistungsfaktor für den Auslagerungsspeicher weitaus niedriger als der 2X-Multiplikator. Das Fedora 28 Online-Installationshandbuch, das online unter Fedora Installation Guide zu finden ist, definiert aktuelle Überlegungen zur Zuweisung von Auslagerungsspeicher. Ich habe unten einige Diskussionen und die Tabelle mit Empfehlungen aus diesem Dokument eingefügt.
Die folgende Tabelle enthält die empfohlene Größe einer Auslagerungspartition in Abhängigkeit von der Größe des Arbeitsspeichers in Ihrem System und davon, ob Sie genügend Speicher für den Ruhezustand Ihres Systems benötigen. Die empfohlene Größe der Swap-Partition wird während der Installation automatisch festgelegt. Um den Ruhezustand zu ermöglichen, müssen Sie jedoch den Auslagerungsbereich in der Phase der benutzerdefinierten Partitionierung bearbeiten.
Tabelle 1:Empfohlener Systemauslagerungsbereich in der Fedora-Dokumentation
Größe des System-RAM | Empfohlener Auslagerungsbereich | Empfohlener Austausch mit Ruhezustand |
---|---|---|
weniger als 2 GB | zweimal so viel RAM | dreimal so viel RAM |
2 GB - 8 GB | Gleich der RAM-Größe | zweimal so viel RAM |
8 GB - 64 GB | 0,5-mal so viel RAM | 1,5-mal so viel RAM |
mehr als 64 GB | Workload-abhängig | Ruhezustand nicht empfohlen |
An der Grenze zwischen den oben aufgeführten Bereichen (z. B. ein System mit 2 GB, 8 GB oder 64 GB System-RAM) sollten Sie in Bezug auf den ausgewählten Auslagerungsspeicher und die Unterstützung des Ruhezustands nach eigenem Ermessen vorgehen. Wenn Ihre Systemressourcen dies zulassen, kann eine Erhöhung des Auslagerungsbereichs zu einer besseren Leistung führen.
Natürlich haben die meisten Linux-Administratoren ihre eigenen Vorstellungen von der angemessenen Menge an Auslagerungsspeicher – wie auch von so ziemlich allem anderen. Tabelle 2 unten enthält meine Empfehlungen basierend auf meinen persönlichen Erfahrungen in mehreren Umgebungen. Diese funktionieren möglicherweise nicht für Sie, aber wie bei Tabelle 1 können sie Ihnen beim Einstieg helfen.
Tabelle 2:Empfohlener Systemauslagerungsbereich laut Autor
Größe des Arbeitsspeichers | Empfohlener Auslagerungsbereich |
---|---|
≤ 2 GB | 2X RAM |
2 GB – 8 GB | =Arbeitsspeicher |
>8 GB | 8 GB |
Eine Überlegung in beiden Tabellen ist, dass mit zunehmender RAM-Menge das Hinzufügen von mehr Auslagerungsspeicher über einen bestimmten Punkt hinaus einfach zu einem Thrash führt, lange bevor der Auslagerungsspeicher auch nur annähernd gefüllt ist. Wenn Sie beim Befolgen dieser Empfehlungen zu wenig virtuellen Speicher haben, sollten Sie nach Möglichkeit mehr RAM statt mehr Auslagerungsspeicher hinzufügen. Wie bei allen Empfehlungen, die sich auf die Systemleistung auswirken, verwenden Sie das, was für Ihre spezifische Umgebung am besten geeignet ist. Dies erfordert Zeit und Mühe, um zu experimentieren und Änderungen basierend auf den Bedingungen in Ihrer Linux-Umgebung vorzunehmen.
Hinzufügen von mehr Auslagerungsspeicher zu einer Nicht-LVM-Plattenumgebung
Aufgrund sich ändernder Anforderungen an Auslagerungsspeicher auf Hosts, auf denen Linux bereits installiert ist, kann es erforderlich werden, die für das System definierte Menge an Auslagerungsspeicher zu ändern. Dieses Verfahren kann für alle allgemeinen Fälle verwendet werden, in denen die Größe des Auslagerungsbereichs erhöht werden muss. Es wird davon ausgegangen, dass ausreichend Speicherplatz verfügbar ist. Bei diesem Verfahren wird außerdem davon ausgegangen, dass die Festplatten in „rohe“ EXT4- und Swap-Partitionen partitioniert sind und kein Logical Volume Management (LVM) verwenden.
Die grundlegenden Schritte sind einfach:
-
Deaktivieren Sie den vorhandenen Auslagerungsbereich.
-
Erstellen Sie eine neue Swap-Partition der gewünschten Größe.
-
Lesen Sie die Partitionstabelle erneut.
-
Konfigurieren Sie die Partition als Auslagerungsspeicher.
-
Fügen Sie die neue Partition /etc/fstab hinzu.
-
Swap einschalten.
Ein Neustart sollte nicht erforderlich sein.
Sicherheitshalber sollten Sie vor dem Deaktivieren von Swap zumindest sicherstellen, dass keine Anwendungen ausgeführt werden und dass kein Swap-Speicher belegt ist. Der free
oder top
Befehle können Ihnen mitteilen, ob Auslagerungsspeicher verwendet wird. Um noch sicherer zu sein, können Sie zur Ausführungsebene 1 oder zum Einzelbenutzermodus zurückkehren.
Schalten Sie die Swap-Partition mit dem Befehl aus, der den gesamten Swap-Speicher ausschaltet:
$ swapoff -a
Zeigen Sie nun die vorhandenen Partitionen auf der Festplatte an.
$ fdisk -l
Dies zeigt die aktuellen Partitionstabellen auf jedem Laufwerk an. Identifizieren Sie die aktuelle Swap-Partition anhand der Nummer.
Starten Sie fdisk
im interaktiven Modus mit dem Befehl:
$ fdisk /dev/<device name>
Zum Beispiel:
$ fdisk /dev/sda
An dieser Stelle fdisk
ist interaktiv und funktioniert nur auf dem angegebenen Laufwerk.
Verwenden Sie die fdisk p
Unterbefehl, um zu überprüfen, ob auf der Festplatte genügend freier Speicherplatz vorhanden ist, um die neue Swap-Partition zu erstellen. Der Speicherplatz auf der Festplatte wird in Form von 512-Byte-Blöcken und Start- und Endzylindernummern angezeigt, daher müssen Sie möglicherweise etwas rechnen, um den verfügbaren Speicherplatz zwischen und am Ende der zugewiesenen Partitionen zu bestimmen.
Verwenden Sie das n
Unterbefehl zum Erstellen einer neuen Swap-Partition. fdisk fragt Sie nach dem Startzylinder. Standardmäßig wird der verfügbare Zylinder mit der niedrigsten Nummer ausgewählt. Wenn Sie das ändern möchten, geben Sie die Nummer des Startzylinders ein.
Die fdisk
Mit dem Befehl können Sie jetzt die Größe der Partitionen in verschiedenen Formaten eingeben, darunter die letzte Zylindernummer oder die Größe in Bytes, KB oder MB. Geben Sie 4000M ein, was (zum Beispiel) etwa 4 GB Speicherplatz auf der neuen Partition ergibt, und drücken Sie die Eingabetaste.
Verwenden Sie das p
Unterbefehl, um zu überprüfen, ob die Partition so erstellt wurde, wie Sie sie angegeben haben. Beachten Sie, dass die Partition wahrscheinlich nicht genau der von Ihnen angegebenen entspricht, es sei denn, Sie haben die letzte Zylindernummer verwendet. Die fdisk
Der Befehl kann Festplattenspeicher nur in Inkrementen auf ganzen Zylindern zuweisen, daher kann Ihre Partition etwas kleiner oder größer sein, als Sie angegeben haben. Wenn die Partition nicht Ihren Wünschen entspricht, können Sie sie löschen und erneut erstellen.
Nun muss noch angegeben werden, dass die neue Partition eine Swap-Partition sein soll. Der Unterbefehl t
ermöglicht es Ihnen, den Partitionstyp anzugeben. Geben Sie also t
ein , geben Sie die Partitionsnummer an, und wenn Sie nach dem Hex-Code-Partitionstyp gefragt werden, geben Sie 82 ein, das ist der Linux-Swap-Partitionstyp, und drücken Sie die Eingabetaste.
Wenn Sie mit der erstellten Partition zufrieden sind, verwenden Sie w
Unterbefehl, um die neue Partitionstabelle auf die Festplatte zu schreiben. Die fdisk
Das Programm wird beendet und Sie kehren zur Eingabeaufforderung zurück, nachdem es das Schreiben der überarbeiteten Partitionstabelle abgeschlossen hat. Sie werden wahrscheinlich die folgende Nachricht als fdisk
erhalten schließt das Schreiben der neuen Partitionstabelle ab:
Die Partitionstabelle wurde geändert!
Aufruf von ioctl() zum erneuten Lesen der Partitionstabelle.
WARNUNG:Das erneute Lesen der Partitionstabelle ist mit Fehler 16 fehlgeschlagen:Gerät oder Ressource ausgelastet.
Der Kernel verwendet immer noch die alte Tabelle.
Die neue Tabelle wird beim nächsten Neustart verwendet.
Datenträger werden synchronisiert.
An dieser Stelle verwenden Sie die partprobe
Befehl, um den Kernel zu zwingen, die Partitionstabelle neu zu lesen, sodass kein Neustart erforderlich ist.
$ partprobe
Verwenden Sie nun den Befehl fdisk -l
, um die Partitionen aufzulisten, und die neue Swap-Partition sollte unter den aufgelisteten sein. Stellen Sie sicher, dass der neue Partitionstyp „Linux-Swap“ ist.
Es ist notwendig, die Datei /etc/fstab so zu ändern, dass sie auf die neue Swap-Partition zeigt. Die vorhandene Zeile könnte folgendermaßen aussehen:
LABEL=SWAP-sdaX swap swap defaults 0 0
wobei X
ist die Partitionsnummer. Fügen Sie eine neue Zeile hinzu, die ähnlich aussieht, abhängig vom Speicherort Ihrer neuen Swap-Partition:
/dev/sdaY swap swap defaults 0 0
Achten Sie darauf, die richtige Partitionsnummer zu verwenden. Jetzt können Sie den letzten Schritt zum Erstellen der Swap-Partition ausführen. Verwenden Sie den mkswap
Befehl, um die Partition als Swap-Partition zu definieren.
$ mkswap /dev/sdaY
Der letzte Schritt besteht darin, Swap mit dem folgenden Befehl einzuschalten:
$ swapon -a
Ihre neue Swap-Partition ist jetzt zusammen mit der zuvor vorhandenen Swap-Partition online. Sie können den free
verwenden oder top
Befehle, um dies zu überprüfen.
Auslagerung zu einer LVM-Plattenumgebung hinzufügen
Wenn Ihr Festplatten-Setup LVM verwendet, ist das Ändern des Auslagerungsbereichs ziemlich einfach. Dies setzt wiederum voraus, dass in der Datenträgergruppe, in der sich der aktuelle Auslagerungsdatenträger befindet, Speicherplatz verfügbar ist. Standardmäßig erstellen die Installationsprozeduren für Fedora Linux in einer LVM-Umgebung die Swap-Partition als logisches Volume. Dies macht es einfach, weil Sie einfach die Größe des Swap-Volumes erhöhen können.
Hier sind die Schritte, die erforderlich sind, um die Menge an Auslagerungsspeicher in einer LVM-Umgebung zu erhöhen:
-
Alle Swaps deaktivieren.
-
Erhöhen Sie die Größe des für die Auslagerung vorgesehenen logischen Volumes.
-
Konfigurieren Sie das in der Größe geänderte Volume als Auslagerungsspeicher.
-
Swap einschalten.
Überprüfen Sie zunächst, ob Auslagerung existiert und ein logisches Volume ist, indem Sie lvs
verwenden Befehl (logisches Volumen auflisten).
LVS
LV VG attr lvs Pool Ursprungsdaten% META% Move Protokoll Cpy% Sync-Konvertieren
Home Fedora_StudentVM1 -Wi-AO ---- 2.00G
Pool00 Fedora_studentvm1 Twi-AOTZ - 2.00G 8.17 2.93
root fedora_studentvm1 vwi-aoot-- 2.00g pool00 8.17
swap fedora_studentvm1 -wi-ao ---- 8.00g
tmp fedora_studentvm1 -wi-ao --- - 5.00G
usr fedora_studentvm1 -wi-ao ---- 15.00g
var fedora_studentvm1 -wi-ao ---- 10.00g
Sie können sehen, dass die aktuelle Auslagerungsgröße 8 GB beträgt. In diesem Fall möchten wir diesem Auslagerungsvolumen 2 GB hinzufügen. Stoppen Sie zuerst den vorhandenen Swap. Möglicherweise müssen Sie laufende Programme beenden, wenn Auslagerungsspeicher verwendet wird.
$ swapoff -a
Erhöhen Sie nun die Größe des logischen Volumes.
# lvextend -L +2G /dev/mapper/fedora_studentvm1-swap
Die Größe des logischen Volumes fedora_studentvm1/swap wurde von 8,00 GiB (2048 Extents) auf 10,00 GiB (2560 Extents) geändert.
Logisches Volume fedora_studentvm1/swap wurde erfolgreich verkleinert.
Führen Sie mkswap
aus Befehl, um diese gesamte 10-GB-Partition in einen Auslagerungsbereich zu verwandeln.
# mkswap /dev/mapper/fedora_studentvm1-swap
mkswap:/dev/mapper/fedora_studentvm1-swap:Warnung:Löschen der alten Swap-Signatur.
Einrichten von Swapspace Version 1, Größe =10 GiB ( 10737414144 Bytes)
kein Label, UUID=3cc2bee0-e746-4b66-aa2d-1ea15ef1574a
Swap wieder aktivieren.
# swapon -a
Überprüfen Sie nun mit dem Befehl list block devices, dass der neue Auslagerungsbereich vorhanden ist. Auch hier ist kein Neustart erforderlich.
# lsblk
Name Maj:Min RM-Größe RO-Halterungspunkt
SDA 8:0 0 60G 0 Disk
| -sda1 8:1 0 1g 0 Teil / Boot
`-sda2 8:2 0 59G 0 Teil
|-fedora_studentvm1-pool00_tmeta 253:0 0 4M 0 lvm
| `-fedora_studentvm1-pool00-tpool 253:2 0 2G 0 lvm
| |-fedora_studentvm1-root 253:3 0 2G 0 lvm /
| `-fedora_studentvm1-pool00 253:6 0 2G 0 lvm
|-fedora_studentvm1-pool00_tdata 253:1 0 2G 0 lvm
| `-fedora_studentvm1-pool00-tpool 253:2 0 2G 0 lvm
| |-fedora_studentvm1-root 253:3 0 2G 0 lvm /
| `-fedora_studentvm1-pool00 253:6 0 2G 0 LVM
| -Fedora_studentvm1-Swap 253:4 0 10G 0 LVM [Swap]
| -fedora_studentvm1-usr 253:5 0 15g 0 lvm / usr
lvm /tmp
sr0
Sie können auch den swapon -s
verwenden Befehl oder top
, free
, oder einen von mehreren anderen Befehlen, um dies zu überprüfen.
# Kostenlos
Gesamtgesetze kostenlose freigegebene Buff / Cache verfügbar
MEM:4038808 382404 2754072 4152 902332 3404184
Swap:10485756 0 10485756Beachten Sie, dass die verschiedenen Befehle die spezielle Gerätedatei in unterschiedlichen Formen anzeigen oder als Eingabe erfordern. Es gibt eine Reihe von Möglichkeiten, wie auf bestimmte Geräte im /dev-Verzeichnis zugegriffen wird. Mein Artikel Geräte unter Linux verwalten enthält weitere Informationen über das /dev-Verzeichnis und seinen Inhalt.
Dieser Artikel wurde ursprünglich im September 2018 veröffentlicht und vom Herausgeber mit zusätzlichen Informationen aktualisiert.