Heim > Artikel > Betrieb und Instandhaltung > Wozu dient der Linux-Swap-Space?
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.
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 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 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)
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. 🎜
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.Die grundlegenden Schritte sind einfach:
Schließen Sie den vorhandenen Swap-Space./etc/fstab
hinzufügen. Es sollte keine Notwendigkeit bestehen, die Maschine neu zu starten. /etc/fstab
。
应该不需要重新启动机器。
为了安全起见,在关闭交换空间前,至少你应该确保没有应用程序在运行,也没有交换空间在使用。free
或 top
命令可以告诉你交换空间是否在使用中。为了更安全,您可以恢复到运行级别 1 或单用户模式。
使用关闭所有交换空间的命令关闭交换分区:
swapoff -a
现在查看硬盘上的现有分区。
fdisk -l
这将显示每个驱动器上的分区表。按编号标识当前的交换分区。
使用以下命令在交互模式下启动 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>
Sehen Sie sich nun die vorhandenen Partitionen auf der Festplatte an.
fdisk /dev/sda
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.🎜🎜Zum Beispiel: 🎜🎜
partprobe🎜
此时,fdisk
是交互方式的,只在指定的磁盘驱动器上进行操作。
使用 fdisk
的 p
子命令验证磁盘上是否有足够的可用空间来创建新的交换分区。硬盘上的空间以 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.
此时,你使用 partprobe
命令强制内核重新读取分区表,这样就不需要执行重新启动机器。
partprobe
使用命令 fdisk -l
列出分区,新交换分区应该在列出的分区中。确保新的分区类型是 “Linux swap”。
修改 /etc/fstab
文件以指向新的交换分区。如下所示:
LABEL=SWAP-sdaX swap swap defaults 0 0
其中 X
是分区号。根据新交换分区的位置,添加以下内容:
/dev/sdaY swap swap defaults 0 0
请确保使用正确的分区号。现在,可以执行创建交换分区的最后一步。使用 mkswap
命令将分区定义为交换分区。
mkswap /dev/sdaY
最后一步是使用以下命令启用交换空间:
swapon -a
你的新交换分区现在与以前存在的交换分区一起在线。您可以使用 free
或top
命令来验证这一点。
在 LVM 磁盘环境中添加交换空间
如果你的磁盘使用 LVM ,更改交换空间将相当容易。同样,假设当前交换卷所在的卷组中有可用空间。默认情况下,LVM 环境中的 Fedora Linux 在安装过程将交换分区创建为逻辑卷。您可以非常简单地增加交换卷的大小。
以下是在 LVM 环境中增加交换空间大小的步骤:
首先,让我们使用 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 ~]#
你可以看到当前的交换空间大小为 8GB。在这种情况下,我们希望将 2GB 添加到此交换卷中。首先,停止现有的交换空间。如果交换空间正在使用,终止正在运行的程序。
swapoff -a
现在增加逻辑卷的大小。
[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 ~]#
运行 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 ~]#
重新启用交换空间。
[root@studentvm1 ~]# swapon -a
[root@studentvm1 ~]#
现在,使用 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 ~]#
您也可以使用 swapon -s
命令或 top
、free
或其他几个命令来验证这一点。
[root@studentvm1 ~]# free
total used free shared buff/cache available
Mem: 4038808 382404 2754072 4152 902332 3404184
Swap: 10485756 0 10485756
[root@studentvm1 ~]#
请注意,不同的命令以不同的形式显示或要求输入设备文件。在 /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!