GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine Einführung in den Auslagerungsbereich auf Linux-Systemen

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:

  1. Deaktivieren Sie den vorhandenen Auslagerungsbereich.

  2. Erstellen Sie eine neue Swap-Partition der gewünschten Größe.

  3. Lesen Sie die Partitionstabelle erneut.

  4. Konfigurieren Sie die Partition als Auslagerungsspeicher.

  5. Fügen Sie die neue Partition /etc/fstab hinzu.

  6. 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:

  1. Alle Swaps deaktivieren.

  2. Erhöhen Sie die Größe des für die Auslagerung vorgesehenen logischen Volumes.

  3. Konfigurieren Sie das in der Größe geänderte Volume als Auslagerungsspeicher.

  4. 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 10485756

Beachten 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.


Linux
  1. Was ist die richtige Menge an Auslagerungsspeicher für ein modernes Linux-System?

  2. So erstellen oder vergrößern Sie Swap Space in Linux

  3. Anfängerleitfaden für die Verwaltung von Auslagerungsspeicher unter Linux

  4. So fügen Sie unter Linux Auslagerungsspeicher hinzu

  5. So vergrößern Sie den Auslagerungsspeicher unter Linux

Eine Einführung in den Vivaldi-Browser unter Linux

Wie viel Swap sollten Sie unter Linux verwenden?

So löschen Sie RAM-Cache, Puffer und Auslagerungsspeicher auf einem Linux-System

5 Befehle zum Überprüfen des Swap-Speicherplatzes in Linux

So löschen Sie den RAM-Speicher-Cache, den Puffer und den Swap-Speicher unter Linux

So überprüfen Sie den Auslagerungsbereich unter Linux