Wie sicher ist es, tmpfs auf mehr als physischen Speicher zu erhöhen?


11

Mein Server verfügt über 2 GB RAM und 120 GB SSD sowie einige RAID-Arrays zur Speicherung. Betriebssystem ist Debian 8 (Linux 3.16).

Ich habe eine MySQL-intensive Anwendung mit tmpdir= /run/mysqld, die tmpfsvon Debian konfiguriert wird durch /etc/default/tmpfs:

# Size limits.  Please see tmpfs(5) for details on how to configure
# tmpfs size limits.
TMPFS_SIZE=40%VM

Dies war früher 20%VMetwa 384 Millionen. Ich bin gegen mehrere gelaufen no space left on device, also habe ich es auf erhöht 40%VM, aber selbst mit ungefähr 763M ist es immer noch zu klein.

Jetzt sollte ich jetzt mehr RAM hinzufügen, aber aus Neugier möchte ich die Grenzen hier kennen.

  • /dev/sdd1ist montiert /hat ca. 50GB frei und ist ziemlich schnell (Samsung 850 EVO SSD)
  • /dev/sdd5 ist meine Swap-Partition, es ist 3.7G (fdisk Typ ID ist 82)
  • TMPFS_SIZEgesetzt ist 40%VM, was bedeutet , /runist 763m

Jetzt weiß ich, dass tmpfs tauschen können, was für mich in Ordnung ist. Ich möchte, dass MySQL wann immer möglich in den RAM schreibt, aber wenn es mehr Speicher benötigt, kann ich dem System erlauben, ihn auf der SSD auszutauschen.

Kann ich mit meinem Setup darauf drängen /run, Folgendes zu sein:

  • 300M groß? Ja. Das war die Standardeinstellung.
  • 1,5 GB groß? Ja, versucht, MySQL hat bis zu 1,3 GB verwendet und das System hat wie ein Zauber funktioniert. Aber das ist immer noch weniger als die Hälfte des physischen Speichers + der Swap-Partition.
  • 2,5 GB groß? Dies ist mehr als physischer Speicher, aber weniger als die Hälfte des physischen Speichers + meiner Swap-Partition.
  • 4 GB groß? Dies würde eng in die Hälfte physischer + Tausch passen
  • Mehr? wie 10 GB? Kann es freien Speicherplatz nutzen /, um mehr auszutauschen?

Ich vermute, die Faustregel für die Sicherheit ist, TMPFS_SIZEnicht größer als Swap + halbes physisches Gedächtnis zu haben. Kann ich darüber hinausgehen, ohne die Swap-Partition zu erhöhen?

Auch ist es möglich , setzen 200%VMin /etc/default/tmpfs? Ich habe gelesen, tmpfs(5)ohne zu wissen, ob ich> 100% darauf setzen kann.

Zuletzt sollte ich es /etc/fstabstattdessen tun und nicht anfassen /etc/default/tmpfs?

(Um zu wissen, dass ich es nur mit gemacht habe mount -o remount, habe ich den Server noch nicht neu gestartet)

Bearbeiten: Für die letzte Frage weiß ich, dass sie geändert werden kann / kann /etc/fstab(siehe Zitat unten auf der Manpage), aber ich wollte die beste Vorgehensweise kennen, da ich bisher noch nie etwas berührt habe /etc/default.

Komplexere Mount-Optionen können verwendet werden, indem ein geeigneter Eintrag in / etc / fstab erstellt wird.


Interessante Frage. Ich denke, dies hängt möglicherweise auch stark mit der Einstellung für Speicherüberlastungen zusammen.
Phk

Es scheint, dass die maximale tmpfs-Größe physisch + Swap wäre. Ich habe dies in den Kernel-Dokumenten gesehen .
Benoit Duffez

Antworten:


8

Ich dachte, ich könnte es einfach testen, also rannte ich:

sudo mount -o remount,size=2800M /run

Lief wie am Schnürchen:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G   45M  2.7G   2% /run

Also habe ich es ein bisschen gefüllt:

fallocate -l 1G /run/test.img
fallocate -l 1G /run/test2.img
fallocate -l 500M /run/test3.img

Ergebnis:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G  2.6G  208M  93% /run

Das System ist noch in Betrieb. Die Swap-Verfügbarkeit ist gesunken, was beweist, dass sie verwendet wurde:

Swap Verfügbarkeit sinken

  • 17:10: Erstellen Sie 2,5 GB Dateien in /run
  • 17:20: Entfernen Sie die 500M-Datei

Der gesamte Swap wird um den Betrag reduziert, der von genommen wird /run.

Ich würde 10 GB auf einer VM testen, da ich nicht weiß, ob der Kernel die erneute Bereitstellung ablehnt oder nur ein unerwartetes Verhalten aufweist.

Ich suche immer noch nach einer tatsächlichen Antwort, aber die pragmatische Art hat gezeigt, dass sie funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.