Kleines RAM-basiertes /tmp

Kleines RAM-basiertes /tmp

Die Weboberfläche meines VPS-Hosts zur Konfiguration bietet mir ein Dropdown-Feld zum Einstellen meiner /tmp.

Der Standardwert ist „16 MB RAM“ und die Alternative ist „Festplatte“.

Ist es möglich, dass die /tmpVerfügbarkeit von nur 16 MB bei manchen Programmen Probleme verursachen könnte? Oder nicht?

Antwort1

Ist es möglich, dass die Verfügbarkeit von nur 16 MB /tmp für manche Software Probleme verursachen könnte?

Ja, wenn eine Software darauf schreiben möchte /tmpund diese oder eine andere Software die Partition bereits gefüllt hat. Im Allgemeinen deutet dies entweder auf eine schlechte Konfiguration des Systems, eine berechtigte Einschränkung der verfügbaren Ressourcen oder ein Fehlverhalten einer anderen Software hin. In jedem Fall ist es sehr unwahrscheinlich, dass die Software, die darauf schreiben möchte, selbst eine Lösung sucht und einen Fehler ausgibt.

Manche Software geht davon aus, dass sie große Dateien in schreiben kann /tmp, was, um ehrlich zu sein, eine faire Annahme ist. Dieses Problem würde unter die Kategorie „schlechte Konfiguration“ fallen.

Die erste Frage, die Sie sich stellen sollten, ist: „Welche Vorteile habe ich bei der Verwendung von RAM für /tmp?“ Die offensichtlichstePotenzialVorteil ist, dass der Zugriff auf den RAM viel schneller ist als der Zugriff auf eine Festplatte. Dieser scheinbar offensichtliche potenzielle Vorteil ist in der Realität jedoch wahrscheinlich nicht so vorteilhaft, weil:

  • Das System speichert häufig aufgerufene Dateien ohnehin im RAM. Die für diesen Cache verfügbare RAM-Menge zu reduzieren, damit Sie sie /tmpdort ablegen können, ist etwas dumm, da dies bedeutet, dass selten verwendete Dateien /tmphäufig verwendete Dateien im Cache verdrängen.

  • Anwendungen können Dinge bereits im RAM speichern, was im Allgemeinen einfacher ist, als sie in einer Datei zu speichern. Wenn sie also etwas in eine temporäre Datei schreiben, ist es sehr unwahrscheinlich, dass es etwas ist, das von einem RAM-Speicher profitieren würde. Wenn Sie sich ansehen, was sich tatsächlich in Ihrem befindet /tmp, sind es wahrscheinlich hauptsächlich Sockets und FIFOs oder kleine Teile von IPC-Daten. Der Zugriff über ein RAM-basiertes Dateisystem ist konzeptionell etwas übersichtlicher, aber ich bezweifle, dass es einen wirklichen Unterschied macht.

Wenn das der Fall ist, warum sollte es /tmpim RAM implementiert werden?

  1. Es vereinfacht die Implementierung einer bevorzugten Eigenschaft von /tmp, nämlich dass es beim Herunterfahren gelöscht wird.

  2. Dadurch kann der Verschleiß der Hardware etwas reduziert werden. Dies ist in Kontexten, in denen nur billiger Flash-Speicher mit begrenzter Lebensdauer oder überhaupt kein beschreibbarer Speicher zur Verfügung steht (z. B. eingebettete Systeme), wesentlich bedeutsamer.

  3. Sofern /tmpkein Missbrauch stattfindet, wird bei der Verwendung von RAM die üblicherweise enorme Speicherkapazität moderner Hardware ausgenutzt – das heißt, dieses Zeug könnte genauso gut im RAM sein, vorausgesetzt, es ist das Zeug, das es sein soll.

Datenblattkönntegenug sein, aber es ist immer noch nicht so viel, wenn ein Prozess durchdreht – und /tmpmuss von jedem beschreibbar sein. Wenn jedoch ein Prozess durchdreht und Sachen auf schreibt /tmp, ist es dann besser, wenn er irgendwann eine Festplatte füllt oder schneller eine rote Flagge hisst, weil er eine RAM-Partition erschöpft hat?

Wenn Sie Vertrauen in die von Ihnen verwendete Software haben, ist Letzteres sinnvoller. Sie könnten sich also für die RAM-Partition entscheiden. Sie sollten /tmpzuerst Ihre tatsächliche Nutzung ein wenig untersuchen, falls etwas Ungewöhnliches passiert (z. B. du -h /tmp). Sie könnten einen „normalen Schwellenwert“ festlegen und diesen mit einem Cron-Job überprüfen, um jemanden zu warnen und/oder eine Notfallbereinigung durchzuführen, wenn er überschritten wird.

Leider können einige Apps gelegentlich Daten ablegen, /tmpdie nicht entfernt werden, wenn sie plötzlich ausfallen, und auf einem Server – der nicht oft heruntergefahren wird – könnten diese Daten auf unbestimmte Zeit dort verbleiben. Das könnte meiner Meinung nach sehr harmlos passieren, z. B. wenn sich jemand anmeldet und etwas verwendet und die Verbindung dann willkürlich geschlossen oder abgebrochen wird.

Der Nicht-RAM /tmpist also sicherer. Missbrauch könnte länger unbemerkt bleiben, aber nur, weil er nicht so schwerwiegend ist wie bei RAM. Wenn etwas tatsächlich ein Problem verursacht, bleibt außerdem ein eindeutiger Beweis auf der Festplatte, der die Ursache des Problems angibt.

verwandte Informationen