Heim > Betrieb und Instandhaltung > Betrieb und Wartung von Linux > Wozu dient der Linux-Swap-Space?

Wozu dient der Linux-Swap-Space?

藏色散人
Freigeben: 2023-03-25 10:35:25
Original
2066 Leute haben es durchsucht

Die Funktion des Linux-Auslagerungsspeichers besteht darin, den für den Host verfügbaren virtuellen Speicher zu vergrößern. Der Auslagerungsspeicher ist die zweite Art von Speicher in modernen Linux-Systemen. Die Hauptfunktion des Auslagerungsspeichers besteht darin, die Festplatte zu verwenden und mehr Speicher zu verwenden Es wird Platz statt RAM-Speicher benötigt.

Wozu dient der Linux-Swap-Space?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.

Wozu dient der Linux-Swap-Space?

Einführung in den Swap-Speicherplatz auf Linux-Systemen

Erfahren Sie, wie Sie die Kapazität des Swap-Speicherplatzes auf Ihrem System ändern und wie viel Swap-Speicherplatz Sie benötigen.

Egal welches Betriebssystem heute verwendet wird, SwapSpace ist weit verbreitet. Linux verwendet Swap Space, um den für den Host verfügbaren virtuellen Speicher zu vergrößern. Es kann eine oder mehrere dedizierte Swap-Partitionen oder Swap-Dateien auf regulären Dateien oder logischen Volumes verwenden.

In einem typischen Computer gibt es zwei grundlegende Speichertypen. Der erste Typ, der Direktzugriffsspeicher (RAM), wird zum Speichern von Daten und Programmen verwendet, die von Computern verwendet werden. Der Computer kann Programme und Daten nur nutzen, wenn diese im RAM gespeichert sind. Der Direktzugriffsspeicher ist ein flüchtiger Speicher; das heißt, wenn der Computer ausgeschaltet wird, gehen die im RAM gespeicherten Daten verloren.

Festplatte ist ein magnetisches Medium, das zur Langzeitspeicherung von Daten und Programmen verwendet wird. Diese magnetischen Medien können Daten sehr gut bewahren; selbst wenn der Computer ausfällt, bleiben die auf der Festplatte gespeicherten Daten erhalten. Die CPU (Central Processing Unit) kann nicht direkt auf Programme und Daten auf der Festplatte zugreifen; diese müssen zunächst in den RAM kopiert werden, wo die CPU auf Codeanweisungen zugreift und Daten manipuliert. Während des Bootvorgangs kopiert der Computer bestimmte Betriebssystemprogramme (z. B. Kernel, Init oder Systemd) und Daten von der Festplatte in den Arbeitsspeicher, wo der Prozessor des Computers, die CPU, direkt auf die Daten zugreifen kann.

Swap Space

Swap Space ist die zweite Art von Speicher in modernen Linux-Systemen. Die Hauptfunktion des Swap Space besteht darin, den RAM-Speicher durch Festplattenspeicher zu ersetzen, wenn der gesamte RAM belegt ist und mehr Speicher benötigt wird.

Angenommen, Sie haben einen Computer mit 8 GB RAM. Wenn das von Ihnen gestartete Programm den Arbeitsspeicher nicht füllt, ist alles in Ordnung und es ist kein Austausch erforderlich. Angenommen, Sie arbeiten an einer Tabellenkalkulation, wenn Sie weitere Zeilen hinzufügen, und wenn alle Programme ausgeführt werden, nimmt sie den gesamten Arbeitsspeicher in Anspruch. Wenn zu diesem Zeitpunkt kein Swap-Speicherplatz verfügbar ist, müssen Sie die Arbeit an der Tabelle unterbrechen, bis Sie einige andere Programme schließen, um etwas RAM freizugeben.

Der Kernel verwendet einen Speichermanager, um Speicherblöcke (Speicherseiten) zu erkennen, die in letzter Zeit nicht verwendet wurden. Der Speichermanager lagert diese relativ selten genutzten Speicherseiten in spezielle Partitionen auf der Festplatte aus, die zum „Paging“ oder Auslagern vorgesehen sind. Dadurch wird RAM freigegeben und es entsteht Platz für die Eingabe weiterer Daten in die Tabelle. Diese auf die Festplatte ausgelagerten Speicherseiten werden vom Speicherverwaltungscode des Kernels verfolgt und können bei Bedarf wieder in den RAM ausgelagert werden.

Die Gesamtspeichermenge in einem Linux-Computer besteht aus RAM + Swap-Partition, und die Swap-Partition wird als virtueller Speicher bezeichnet.

Linux-Swap-Partitionstypen

Linux bietet zwei Arten von Swap-Speicherplatz. Standardmäßig erstellen die meisten Linux-Installationen eine Swap-Partition, es ist jedoch auch möglich, eine speziell konfigurierte Datei als Swap-Datei zu verwenden. Wie der Name schon sagt, handelt es sich bei der Swap-Partition um eine Standard-Festplattenpartition, und der Swap-Bereich wird durch den Befehl mkswap angegeben. mkswap 命令指定交换空间。

如果没有可用磁盘空间来创建新的交换分区,或者卷组中没有空间为交换空间创建逻辑卷,则可以使用交换文件。这只是一个创建好并预分配指定大小的常规文件。然后运行 mkswap 命令将其配置为交换空间。除非绝对必要,否则我不建议使用文件来做交换空间。(LCTT 译注:Ubuntu 近来的版本采用了交换文件而非交换空间,所以我对于这种说法保留看法)

频繁交换

当总虚拟内存(RAM 和交换空间)变得快满时,可能会发生频繁交换。系统花了太多时间在交换空间和 RAM 之间做内存块的页面切换,以至于几乎没有时间用于实际工作。这种情况的典型症状是:系统变得缓慢或完全无反应,硬盘指示灯几乎持续亮起。

使用 free

Eine Auslagerungsdatei kann verwendet werden, wenn kein freier Speicherplatz zum Erstellen einer neuen Auslagerungspartition vorhanden ist oder in der Volume-Gruppe kein Platz zum Erstellen eines logischen Volumens für den Auslagerungsspeicher vorhanden ist. Dabei handelt es sich lediglich um eine normale Datei, die erstellt und einer bestimmten Größe vorab zugewiesen wird. Führen Sie dann den Befehl mkswap aus, um ihn als Auslagerungsbereich zu konfigurieren. Ich empfehle nicht, Dateien als Auslagerungsspeicher zu verwenden, es sei denn, dies ist unbedingt erforderlich. (LCTT-Übersetzung: Neuere Versionen von Ubuntu verwenden Auslagerungsdateien anstelle von Auslagerungsspeicher, daher behalte ich mir meine Meinung zu dieser Aussage vor)

Häufiges Austauschen🎜🎜

Wenn der gesamte virtuelle Speicher (RAM und Wenn der Swap-Speicherplatz fast voll ist, kann es zu häufigem Austauschen kommen. Das System verbringt so viel Zeit damit, Speicherblöcke zwischen Swap Space und RAM auszulagern, dass kaum Zeit für die eigentliche Arbeit bleibt. Typische Symptome dieser Erkrankung sind: Das System wird träge oder reagiert überhaupt nicht mehr und die Festplattenanzeige leuchtet fast ständig. 🎜

Verwenden Sie den Befehl free, um die CPU-Auslastung und Speicherauslastung anzuzeigen. Sie werden feststellen, dass die CPU-Auslastung sehr hoch ist und möglicherweise 30 bis 40 % erreicht Anzahl der CPU-Kerne im System. Eine andere Situation liegt vor, wenn RAM und Auslagerungsspeicher fast vollständig zugewiesen sind. 🎜🎜Tatsächlich kann ein Blick auf die SAR-Daten (System Activity Report) diese Dinge ebenfalls aufdecken. Installieren Sie SAR auf jedem meiner Systeme und nutzen Sie diese zur Datenanalyse. 🎜

Was ist die richtige Größe des Swap Space?

Vor vielen Jahren war der für den Swap reservierte Speicherplatz auf der Festplatte doppelt so groß wie der Arbeitsspeicher des Computers (das war natürlich damals, als der Arbeitsspeicher der meisten Computer in KB oder MB gemessen wurde). Wenn ein Computer über 64 KB RAM verfügt, sollte daher eine 128 KB große Swap-Partition zugewiesen werden. Diese Regel berücksichtigte die Tatsache, dass die RAM-Größe zu diesem Zeitpunkt sehr klein war und die Zuweisung von mehr als dem Doppelten des RAM für den Auslagerungsspeicher keine Leistungsverbesserung zur Folge hatte. Die meisten Systeme verbringen mehr Zeit damit, mehr als das Doppelte des RAM für den Austausch zu verwenden, als tatsächlich nützliche Arbeit zu leisten.

RAM ist mittlerweile so günstig, dass die meisten Computer heutzutage über Gigabyte RAM verfügen. Die meisten meiner neuen Computer verfügen über mindestens 8 GB RAM, einer über 32 GB RAM und meine Hauptarbeitsstation über 64 GB RAM. Mein alter Computer hatte 4 bis 8 GB RAM.

Beim Betrieb eines Computers mit viel RAM hat der Swap-Speicher einen begrenzenden Leistungsfaktor von deutlich unter 2x. Das Fedora 28 Online-Installationshandbuch definiert den aktuellen Ansatz zur Swap-Space-Zuweisung. Was folgt, sind meine Vorschläge.

Die folgende Tabelle gibt die empfohlene Größe für die Swap-Partition an, basierend auf der RAM-Größe im System und darauf, ob genügend Speicher für den Ruhezustand des Systems vorhanden ist. Die empfohlene Swap-Partitionsgröße wird während der Installation automatisch festgelegt. Um jedoch den Ruhezustand des Systems zu gewährleisten, müssen Sie den Auslagerungsbereich während der Phase der benutzerdefinierten Partition bearbeiten.

Tabelle 1: Empfohlener System-Swap-Speicherplatz in der Fedora 28-Dokumentation

Systemspeichergröße Empfohlener Swap-Speicherplatz Empfohlene Swap-Speicherplatzgröße (unterstützt den Ruhezustand) Weniger als 2 GB 2-mal RAM 3-mal RAM 2 GB – 8 GB entspricht RAM-Größe 2x RAM 8 GB - 64 GB 0,5x RAM 1,5x RAM > 64 GB Arbeitslastbedingter Ruhezustand nicht empfohlen

Grenze zwischen den einzelnen oben aufgeführten Bereichen (z. B. mit 2 GB, 8 GB oder 64 GB System-RAM), bitte verwenden Sie diese entsprechend mit Vorsicht auf den ausgewählten Swap-Space und die unterstützte Ruhezustandsfunktion. Wenn Ihre Systemressourcen dies zulassen, kann das Hinzufügen von Swap-Speicherplatz zu einer besseren Leistung führen.

Natürlich haben die meisten Linux-Administratoren ihre eigenen Vorstellungen darüber, wie viel Swap-Space genutzt werden soll. Tabelle 2 unten enthält Empfehlungen, die auf meinen persönlichen Erfahrungen in verschiedenen Situationen basieren. Diese treffen möglicherweise nicht auf Sie zu, können aber wie Tabelle 1 hilfreich sein.

Tabelle 2: Vom Autor empfohlener System-Swap-Speicherplatz

RAM-Größe Empfohlener Swap-Speicherplatz ≤ 2 GB 2 Das Hinzufügen von mehr Swap-Speicherplatz führt nur zu häufigem Austausch, bevor der Swap-Speicherplatz fast vollständig genutzt ist. Basierend auf den oben genannten Empfehlungen sollten Sie nach Möglichkeit mehr RAM hinzufügen, anstatt mehr Swap-Speicherplatz hinzuzufügen. Wie in ähnlichen Situationen, die sich auf die Systemleistung auswirken, verwenden Sie bitte die Empfehlungen, die für Sie am besten geeignet sind. Das Testen und Vornehmen von Änderungen basierend auf den Bedingungen in einer Linux-Umgebung erfordert Zeit und Mühe.

Fügen Sie mehr Swap-Speicherplatz zu Nicht-LVM-Festplattenumgebungen hinzu.

Angesichts der unter Linux installierten Hosts und der sich ändernden Anforderungen an Swap-Speicherplatz ist es manchmal erforderlich, die Größe des systemdefinierten Swap-Speicherplatzes zu ändern. Dieses Verfahren kann in jeder Situation verwendet werden, in der Sie die Größe des Auslagerungsraums erhöhen müssen. Es wird vorausgesetzt, dass ausreichend freier Speicherplatz vorhanden ist. Bei diesem Verfahren wird außerdem davon ausgegangen, dass es sich bei den Festplattenpartitionen um „rohe“ EXT4- und Swap-Partitionen handelt und nicht um die Verwendung von Logical Volume Management (LVM).

Die grundlegenden Schritte sind einfach:

Schließen Sie den vorhandenen Swap-Space.
  1. Erstellen Sie eine neue Swap-Partition mit der gewünschten Größe.
  2. Lesen Sie die Partitionstabelle erneut.
  3. Konfigurieren Sie die Partition als Swap-Space.
  4. Neue Partition zu /etc/fstab hinzufügen.
  5. Öffnen Sie den Swap-Bereich.

Es sollte keine Notwendigkeit bestehen, die Maschine neu zu starten. /etc/fstab

  • 打开交换空间。
  • 应该不需要重新启动机器。

    为了安全起见,在关闭交换空间前,至少你应该确保没有应用程序在运行,也没有交换空间在使用。freetop 命令可以告诉你交换空间是否在使用中。为了更安全,您可以恢复到运行级别 1 或单用户模式。

    使用关闭所有交换空间的命令关闭交换分区:

    swapoff -a
    Nach dem Login kopieren
    Nach dem Login kopieren

    现在查看硬盘上的现有分区。

    fdisk -l
    Nach dem Login kopieren

    这将显示每个驱动器上的分区表。按编号标识当前的交换分区。

    使用以下命令在交互模式下启动 fdisk

    Aus Sicherheitsgründen sollten Sie vor dem Schließen des Swap-Space zumindest sicherstellen, dass keine Anwendungen laufen und kein Swap-Space belegt ist. Der Befehl free oder top kann Ihnen sagen, ob Swap-Speicherplatz verwendet wird. Für mehr Sicherheit können Sie auf Runlevel 1 oder den Einzelbenutzermodus zurückgreifen.

    Schließen Sie die Swap-Partition mit dem Befehl zum Schließen des gesamten Swap-Bereichs:

    fdisk /dev/<device name>
    Nach dem Login kopieren

    Sehen Sie sich nun die vorhandenen Partitionen auf der Festplatte an.

    fdisk /dev/sda
    Nach dem Login kopieren

    Dadurch wird die Partitionstabelle auf jedem Laufwerk angezeigt. Identifiziert die aktuelle Swap-Partition anhand ihrer Nummer. 🎜

    Starten Sie fdisk im interaktiven Modus mit dem folgenden Befehl: 🎜🎜

    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table.
    The new table will be used at the next reboot.
    Syncing disks.
    Nach dem Login kopieren
    Nach dem Login kopieren
    🎜🎜Zum Beispiel: 🎜🎜
    partprobe
    Nach dem Login kopieren
    Nach dem Login kopieren
    🎜

    此时,fdisk 是交互方式的,只在指定的磁盘驱动器上进行操作。

    使用 fdiskp 子命令验证磁盘上是否有足够的可用空间来创建新的交换分区。硬盘上的空间以 512 字节的块以及起始和结束柱面编号的形式显示,因此您可能需要做一些计算来确定分配分区之间和末尾的可用空间。

    使用 n 子命令创建新的交换分区。fdisk 会问你开始柱面。默认情况下,它选择编号最低的可用柱面。如果你想改变这一点,输入开始柱面的编号。

    fdisk 命令允许你以多种格式输入分区的大小,包括最后一个柱面号或字节、KB 或 MB 的大小。例如,键入 4000M ,这将在新分区上提供大约 4GB 的空间,然后按回车键。

    使用 p 子命令来验证分区是否按照指定的方式创建的。请注意,除非使用结束柱面编号,否则分区可能与你指定的不完全相同。fdisk 命令只能在整个柱面上增量的分配磁盘空间,因此你的分区可能比你指定的稍小或稍大。如果分区不是您想要的,你可以删除它并重新创建它。

    现在指定新分区是交换分区了 。子命令 t 允许你指定定分区的类型。所以输入 t,指定分区号,当它要求十六进制分区类型时,输入 82,这是 Linux 交换分区类型,然后按回车键。

    当你对创建的分区感到满意时,使用 w 子命令将新的分区表写入磁盘。fdisk 程序将退出,并在完成修改后的分区表的编写后返回命令提示符。当 fdisk 完成写入新分区表时,会收到以下消息:

    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table.
    The new table will be used at the next reboot.
    Syncing disks.
    Nach dem Login kopieren
    Nach dem Login kopieren

    此时,你使用 partprobe 命令强制内核重新读取分区表,这样就不需要执行重新启动机器。

    partprobe
    Nach dem Login kopieren
    Nach dem Login kopieren

    使用命令 fdisk -l 列出分区,新交换分区应该在列出的分区中。确保新的分区类型是 “Linux swap”。

    修改 /etc/fstab 文件以指向新的交换分区。如下所示:

    LABEL=SWAP-sdaX   swap        swap    defaults        0 0
    Nach dem Login kopieren

    其中 X 是分区号。根据新交换分区的位置,添加以下内容:

    /dev/sdaY         swap        swap    defaults        0 0
    Nach dem Login kopieren

    请确保使用正确的分区号。现在,可以执行创建交换分区的最后一步。使用 mkswap 命令将分区定义为交换分区。

    mkswap /dev/sdaY
    Nach dem Login kopieren

    最后一步是使用以下命令启用交换空间:

    swapon -a
    Nach dem Login kopieren

    你的新交换分区现在与以前存在的交换分区一起在线。您可以使用 freetop 命令来验证这一点。

    在 LVM 磁盘环境中添加交换空间

    如果你的磁盘使用 LVM ,更改交换空间将相当容易。同样,假设当前交换卷所在的卷组中有可用空间。默认情况下,LVM 环境中的 Fedora Linux 在安装过程将交换分区创建为逻辑卷。您可以非常简单地增加交换卷的大小。

    以下是在 LVM 环境中增加交换空间大小的步骤:

    1. 关闭所有交换空间。
    2. 增加指定用于交换空间的逻辑卷的大小。
    3. 为交换空间调整大小的卷配置。
    4. 启用交换空间。

    首先,让我们使用 lvs 命令(列出逻辑卷)来验证交换空间是否存在以及交换空间是否是逻辑卷。

    [root@studentvm1 ~]# lvs
      LV     VG                Attr       LSize  Pool   Origin Data%  Meta%  Move Log Cpy%Sync Convert
      home   fedora_studentvm1 -wi-ao----  2.00g                                                      
      pool00 fedora_studentvm1 twi-aotz--  2.00g               8.17   2.93                            
      root   fedora_studentvm1 Vwi-aotz--  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                                                      
    [root@studentvm1 ~]#
    Nach dem Login kopieren

    你可以看到当前的交换空间大小为 8GB。在这种情况下,我们希望将 2GB 添加到此交换卷中。首先,停止现有的交换空间。如果交换空间正在使用,终止正在运行的程序。

    swapoff -a
    Nach dem Login kopieren
    Nach dem Login kopieren

    现在增加逻辑卷的大小。

    [root@studentvm1 ~]# lvextend -L +2G /dev/mapper/fedora_studentvm1-swap
      Size of logical volume fedora_studentvm1/swap changed from 8.00 GiB (2048 extents) to 10.00 GiB (2560 extents).
      Logical volume fedora_studentvm1/swap successfully resized.
    [root@studentvm1 ~]#
    Nach dem Login kopieren

    运行 mkswap 命令将整个 10GB 分区变成交换空间。

    [root@studentvm1 ~]# mkswap /dev/mapper/fedora_studentvm1-swap
    mkswap: /dev/mapper/fedora_studentvm1-swap: warning: wiping old swap signature.
    Setting up swapspace version 1, size = 10 GiB (10737414144 bytes)
    no label, UUID=3cc2bee0-e746-4b66-aa2d-1ea15ef1574a
    [root@studentvm1 ~]#
    Nach dem Login kopieren

    重新启用交换空间。

    [root@studentvm1 ~]# swapon -a
    [root@studentvm1 ~]#
    Nach dem Login kopieren

    现在,使用 lsblk 命令验证新交换空间是否存在。同样,不需要重新启动机器。

    [root@studentvm1 ~]# lsblk
    NAME                                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                                    8:0    0   60G  0 disk
    |-sda1                                 8:1    0    1G  0 part /boot
    `-sda2                                 8:2    0   59G  0 part
      |-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
      |-fedora_studentvm1-home           253:7    0    2G  0 lvm  /home
      |-fedora_studentvm1-var            253:8    0   10G  0 lvm  /var
      `-fedora_studentvm1-tmp            253:9    0    5G  0 lvm  /tmp
    sr0                                   11:0    1 1024M  0 rom  
    [root@studentvm1 ~]#
    Nach dem Login kopieren

    您也可以使用 swapon -s 命令或 topfree 或其他几个命令来验证这一点。

    [root@studentvm1 ~]# free
                  total        used        free      shared  buff/cache   available
    Mem:        4038808      382404     2754072        4152      902332     3404184
    Swap:      10485756           0    10485756
    [root@studentvm1 ~]#
    Nach dem Login kopieren

    请注意,不同的命令以不同的形式显示或要求输入设备文件。在 /dev 目录中访问特定设备有多种方式。

    推荐学习:《linux视频教程

    Das obige ist der detaillierte Inhalt vonWozu dient der Linux-Swap-Space?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage