Wie kann man die Swapgröße erhöhen?

17

Kürzlich habe ich mehr RAM in meinen Server gesteckt und jetzt habe ich insgesamt 24 GB RAM. Ursprünglich habe ich das Betriebssystem so eingerichtet, dass es eine Swap-Größe von 2 GB hat.

/dev/sdc1               1         281     2257101   82  Linux swap / Solaris
/dev/sdc2   *         282       60801   486126900   83  Linux

Derzeit sind 2 GB für Swap reserviert, aber es scheint nicht viel zu sein, herumzulesen. Für ein System mit 24 GB denke ich, mindestens 10 GB Swap zuzuweisen.

Meine Fragen sind: Kann ich das tun, während das Betriebssystem ausgeführt wird? Muss ich neu installieren Ich benutze OpenSuse 11.3

X Mann
quelle

Antworten:

23

Sie haben beschlossen, bei der Installation eine separate Swap-Partition zu erstellen. Sie können die Größe nicht online ändern - selbst eine Offline-Größenänderung wird viel Zeit in Anspruch nehmen und das potenzielle Risiko einer Beschädigung Ihres nachfolgenden Dateisystems auf / dev / sdc2 tragen.

Die einfachste Möglichkeit, dies zu umgehen, besteht darin, entweder eine neue Auslagerungspartition auf einer anderen Festplatte zu erstellen, die Sie derzeit nicht verwenden (oder es sich leisten können, für eine erneute Partitionierung offline zu gehen), oder einfach eine Auslagerungsdatei in einem vorhandenen Dateisystem zu verwenden (das im Lieferumfang enthalten ist) einige geringfügige Leistungseinbußen aufgrund des Overheads des Dateisystems ).

Das allgemeine Verfahren zum Hinzufügen einer Swap-Partition / -Datei:

  • Erstellen Sie entweder eine neue Partition vom Typ 82h oder eine neue 8-GB-Datei mit dd if=/dev/zero of=/swapfile bs=1M count=8192
  • initialisiere es mit mkswap /swapfileodermkswap /dev/sdXX
  • Verwenden Sie swapon /swapfilebzw.swapon /dev/sdXX , um Ihren neuen Swap-Bereich sofort zu aktivieren
  • Fügen Sie einen Eintrag zu / etc / fstab hinzu, um sicherzustellen, dass Ihr neuer Auslagerungsspeicher beim Neustart aktiviert wird

Ihre aktuelle Swap-Partition wird weiterhin verwendet. Möglicherweise möchten Sie sie aus Gründen der Komplexitätsreduzierung entfernen. Verwenden Sie einfach swapoff /dev/sdc1, um die Verwendung für den Moment zu deaktivieren und den Verweis in zu entfernen/etc/fstab

das-wabbit
quelle
@ synticon-dj danke. Die Daten auf der Festplatte, auf der der Swap stattfindet, sind von entscheidender Bedeutung, und ich habe eine andere Festplatte, die ich verwenden kann. Denken Sie, dass die Einstellung einer anderen Festplatte als Swap die Leistung beeinträchtigt? Muss ich / dev / sdc1 tauschen?
X-Man
Dies wirkt sich auf die eine oder andere Weise aus. Wenn / dev / sdc2 häufig verwendet wird, konkurriert dieses I / O mit Swap-I / O. Wenn Sie die Partition eines anderen Laufwerks als Swap hinzufügen, fügen Sie einfach die Swap-E / A-Last zu diesem Laufwerk hinzu. Was für die Auslagerungsleistung von Vorteil ist, wirkt sich zwangsläufig nachteilig auf Ihre anderen E / A-Vorgänge auf der betroffenen Festplatte aus. Davon abgesehen ist nichts für die Leistung Ihres Systems so schlecht wie eine hohe Anzahl von Pageout / Pagein-Anforderungen. Wenn dies angezeigt wird, beheben Sie es, indem Sie Speicher hinzufügen oder den Speicherbedarf Ihres Systems verringern.
the-wabbit
Wenn Sie zwei Swap-Geräte auf verschiedenen Spindeln haben, wird die Swap-Leistung verbessert (da zwei Festplatten gleichzeitig adressiert werden können, anstatt nur eine zum Lesen und Schreiben). Da Sie jedoch aufgrund des Austauschs ohnehin keine hohe E / A-Aktivität feststellen sollten, ziehen Sie es möglicherweise vor, nur ein einziges Gerät / eine einzige Partition / Datei zu verwenden, um die Verwaltung zu vereinfachen
the-wabbit
1
Beachten Sie, dass eine Auslagerungsdatei nicht funktioniert, wenn Sie sich in einem BtrFS befinden. Zwei Workarounds sind: (1) ein Loopback-Gerät erstellen oder (2) btrfs-swapon verwenden .
Diagon
@ the-wabbit Wie erstellt man eigentlich den /etc/fstabEintrag, um sicherzustellen, dass der neue Swap beim Neustart aktiviert wird?
SIGSTACKFAULT
3

Benötigen Sie in diesem Fall einen Tausch? Ich weiß nicht, was auf Ihrem System ausgeführt wird, aber ich versuche, auf meinen Servern genügend Arbeitsspeicher zu haben, um ein Auslagern vollständig zu vermeiden Mehr Speicherplatz...)

AnalyticaL
quelle
Ich bin hier auf Ihrer Seite, Swap wird hauptsächlich verwendet, um Abstürze im Falle einer (flüchtigen) Speichererschöpfung zu verhindern. Sobald Sie auf Platten treffen, wird Ihr Server mit E / A- und / oder Bandbreitentests belastet, obwohl SSDs Abhilfe schaffen können Sie sind mindestens 10-mal langsamer als RAM, was heutzutage wirklich billig ist. Die Preise für DDR3 ECC 1333MHz betragen ca. 1000 US-Dollar für 64 GB (8 x 8 GB)
Shadok
2

Sie müssen die Festplatte neu partitionieren. Wenn ich mich gut erinnere, wird das Verschieben der Linux-Partition am Anfang von parted nicht unterstützt, aber Sie können auch Ihr Linux-Dateisystem und Ihre Linux-Partition verkleinern und am Ende Ihrer Festplatte einen weiteren Swap durchführen. Sie können dies nicht tun, während das System online ist.

Eine alternative Lösung besteht darin, eine große Datei als Auslagerungsdatei zu verwenden. (Weiß nicht, ob es heutzutage eine gute Idee ist.)

Stein
quelle
Nicht jedes Dateisystem kann verkleinert werden, auch nicht offline. Leider hat dies Auswirkungen auf beliebte Optionen wie XFS ( xfs.org/index.php/Shrinking_Support ).
Sven
@Stone heißt das, das Betriebssystem neu zu installieren?
X-Man
Nein. Es bedeutet, Backups zu erstellen :), eine Live-CD zu booten, das Linux-Dateisystem und dann die sdc2-Partition zu verkleinern, am Ende der Festplatte einen neuen Swap durchzuführen und das System neu zu starten.
Stone
0

1 Schalten Sie alle Swap-Prozesse aus

sudo swapoff -a

2 Ändern Sie die Größe des Swap

sudo dd if=/dev/zero of=/swapfile bs=1G count=8

if = input file
of = output file
bs = block size
count = multiplier of blocks

3 Machen Sie die Datei als Swap nutzbar

sudo mkswap /swapfile

4 Aktivieren Sie die Auslagerungsdatei

sudo swapon /swapfile

5 Überprüfen Sie die verfügbare Swap-Menge

grep SwapTotal /proc/meminfo
Ryabchenko Alexander
quelle