Warum verwendet Linux eine Swap-Partition anstelle einer Datei?

32

Mir scheint, eine Auslagerungsdatei ist flexibler.

Cheng
quelle
1
Sie können eine Auslagerungsdatei unter Linux verwenden. Ich mache das gerade auf mehreren Rechnern. Ich verwende jedoch nichts Besonderes, nur ext4 oder ext4 auf LVM. Keine Verschlüsselung oder irgendetwas Kompliziertes. Ruhezustand und Ruhezustand haben bei mir auch auf meinem NVMe-Rechner hervorragend funktioniert.
Cory T

Antworten:

32

Eine Auslagerungsdatei ist flexibler, aber auch fehlbarer als eine Auslagerungspartition. Ein Dateisystemfehler könnte die Auslagerungsdatei beschädigen. Eine Auslagerungsdatei kann für den Administrator eine Belastung sein, da die Datei nicht verschoben oder gelöscht werden kann. Eine Auslagerungsdatei kann nicht für den Ruhezustand verwendet werden. Eine Auslagerungsdatei war in der Vergangenheit etwas langsamer, obwohl der Unterschied heutzutage vernachlässigbar ist.

Der Vorteil einer Auslagerungsdatei besteht darin, dass die Größe nicht im Voraus festgelegt werden muss. Unter Linux können Sie die Größe einer Auslagerungsdatei jedoch nicht online ändern: Sie müssen die Registrierung aufheben, die Größe ändern und dann neu registrieren (oder eine andere Datei erstellen und die alte entfernen). Daher hat eine Auslagerungsdatei unter Linux im Vergleich zu einer Auslagerungspartition keinen so großen Vorteil. Dies ist vor allem dann nützlich, wenn Sie vorübergehend mehr virtuellen Speicher benötigen, als als permanente Fixierung.

Gilles 'SO - hör auf böse zu sein'
quelle
4
In der Vergangenheit gab es auch einen Leistungsvorteil. Aber ich denke, das endete mit 2.6.
Xenoterracide
Es scheint, dass dies die Frage nicht wirklich beantwortet. Oder vermisse ich etwas? Die Antwort spricht nur von Auslagerungsdateien und erwähnt überhaupt keine Partitionen. @ Gilles war das absichtlich, oder hast du nur einen Tippfehler gemacht?
gabe.
1
@gabe: Ich habe über Swap-Dateien im Vergleich zu Partitionen gesprochen. Hoffentlich ist das jetzt klarer.
Gilles 'SO - hör auf, böse zu sein'
1
Ich weise hier auf meine Kommentare in Penz hin. Der wahrgenommene durch fs verursachte Leistungsverlust bei Auslagerungsdateien ist umstritten.
ata
2
Nach Ubuntu Community - Hilfe Wiki help.ubuntu.com/community/SwapFaq Eine Swap - Partition ist für den Ruhezustand benötigt. Quote: "Es kann keine Auslagerungsdatei auf einem aktiven Dateisystem verwendet werden." Und in Bezug auf die Leistung scheint es keinen Unterschied zu geben, es sei denn, die Datei ist spärlich. serverfault.com/questions/25653/…
Erik Sjölund
28

Eine Auslagerungspartition kann bevorzugt werden, da sie eine Abhängigkeit vom Dateisystem vermeidet, wenn Sie lediglich einen adressierbaren Speicherpool benötigen.

Nichts hindert Sie jedoch daran, eine Auslagerungsdatei anstelle einer Auslagerungspartition oder zusätzlich zu einer Auslagerungspartition zu verwenden.

  • Erstellen Sie die Datei:

    dd if=/dev/zero of=/extraswap bs=1M count=512
    
  • Dateiinhalte initialisieren:

    mkswap /extraswap
    
  • Benutze es:

    swapon /extraswap
    
  • Sehen Sie, ob es funktioniert hat:

    free -m
    

Um die Swap-Datei immer beim Booten zu benutzen, editieren Sie / etc / fstab und fügen Sie hinzu

/extraswap           swap          swap    defaults    0 0

[1] http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html

Penz
quelle
5
Nützlicher Alias, den ich schon immer verwendet habe, um moreswapein Terminal eintippen zu lassen, wenn ich plötzlich zusätzlichen Swap-Platz benötige:alias moreswap='swapfile=`mktemp /tmp/swapXXXX` && sudo touch $swapfile && sudo dd bs=512 count=1M if=/dev/zero | tee $swapfile | pv -s 512M && sudo mkswap $swapfile && sudo swapon $swapfile'
Michael Mrozek
Das sind gute Informationen, aber sie beantworten die Frage nicht.
Lesmana
6
Außerdem ist der Overhead des Dateisystems nicht korrekt. Entgegen der gängigen Meinung fallen bei der Verwendung von Swap-Dateien keine zusätzlichen Kosten an. Andrew Morton gibt die einfache Erklärung hier . Dies ist einer der Gründe, warum die Verwendung eines dynamischen Swap-Datei-basierten Swap-Managers wie dem Swap- Space-Daemon eine gute Lösung ist, wenn er gut konfiguriert ist.
ata
Fügen wir hinzu, dass der Swap-Dateiansatz Ihre einzige Option sein kann, wenn Sie in der Cloud ausgeführt werden.
Sorin
1

Möglicherweise liegt der Hauptgrund darin, dass die Suspend-to-Disk-Funktion des Hauptkernels nicht mit Auslagerungsdateien funktioniert. Zum Beispiel müssen die Debian-Wiki- Anweisungen installiert werden, uswsuspwenn Sie dies benötigen.

In jüngerer Zeit funktionieren Auslagerungsdateien nicht, wenn das Dateisystem vorhanden ist. Daher ist btrfses für Distributionen am einfachsten, Auslagerungsdateien immer als Partition zu erstellen.

Es wird vage erwähnt, dass die Verwendung einer Swap-Datei möglicherweise eine geringere Leistung als eine Partition vor Kernel-Version 2.6 hatte. https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15

sourcejedi
quelle
1

Der Vollständigkeit halber werde ich meine eigene Antwort hinzufügen:

Wie von @Gilles gesagt, kann eine Auslagerungsdatei nicht für den Ruhezustand verwendet werden. Wenn Sie eine Auslagerungsdatei verwenden, muss das System den Header der Auslagerungsdatei suchen. Dazu muss jedoch das Dateisystem eingehängt werden, das die Auslagerungsdatei enthält, und ein Journal-Dateisystem - z. B. ext3, ext4 und im Grunde alle modernen Dateisysteme, die von Linux verwendet werden - Kann nicht während des Lebenslaufs von der Festplatte gemountet werden. (In Wirklichkeit gibt es Möglichkeiten, dies zu tun, aber dies ist ziemlich umständlich.)

Quelle: https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt

dr01
quelle
0

Ich denke, dass es hauptsächlich daran liegt, dass die Zugriffszeit auf die auf einer Partition befindlichen Daten geringer ist. Der Sinn der Auslagerungsdatei besteht eher darin, dem Systemadministrator zu helfen, wenn er über genügend Arbeitsspeicher verfügt und umfangreiche Vorgänge ausführen muss, die möglicherweise zu einem Absturz seines Systems führen könnten. In diesem Fall erstellt er bei Bedarf sporadisch Auslagerungsdateien.

Aber trotzdem kann man beide haben.


quelle