zunehmende Größe von / tmp auf EC2-Instanzen


8

Ich verwende einen Ubuntu-Server auf EC2 ebs und meine Anwendung benötigt viel temporären Speicherplatz, der in / tmp zugewiesen ist. Auf ec2 ist das Root-Laufwerk, das auch / tmp enthält, jedoch mit etwa 10 GB ziemlich klein. Der gesamte verbleibende Speicherplatz wird unter / mnt bereitgestellt. Infolgedessen gibt meine Anwendung Fehler "Nicht genügend Speicherplatz" zurück, da / tmp voll zu sein scheint.

Was ist der beste Weg, um dieses Problem zu lösen? Eine Sache, an die ich denken kann, ist create / mnt / tmp und eine symbolische Verknüpfung herzustellen

/tmp --> /mnt/tmp

Ich zögere jedoch ein bisschen, mit etwas herumzuspielen, das von so vielen Linux-Programmen und -Tools verwendet wird. Ich bin nicht sicher, ob jedes Programm die symbolische Verknüpfung korrekt auflöst, und nicht sicher, wie es zur Leistung führen würde.


2
Bindemontagen bedeuten, dass kein Symlink erstellt werden muss.
Ignacio Vazquez-Abrams

Antworten:


5

Bei EBS-gestützten Images ist der kurzlebige Speicher weiterhin verfügbar. Er wird standardmäßig nicht als Blockgerät zugeordnet (wie bei Bildern im Instanzspeicher).

Die amazon doc ist hier , und es gibt eine nützliche Blog - Post, hier

Zusammenfassend: Sie können diese Zuordnung in der Befehlszeile angeben, wenn Sie das Image starten, und es dann als normales Volume einbinden /dev/sd[x]. Wenn Sie Ihr eigenes AMI rollen, können Sie das Mapping in dieses AMI backen, sodass alle von dort gestarteten Bilder von Anfang an darauf zugreifen können.

Symlinking /tmpfunktioniert, aber ich würde es in diesem Fall nicht empfehlen, wenn Sie eine große Menge an temporärem Speicher verwenden. Sobald Sie die Gerätezuordnung verfügbar haben, können Sie das Gerät wie /tmpin gemountet haben /etc/fstab.

Bei einer kleinen Instanz sollten 150 GB Instanzspeicher kostenlos verfügbar sein. Es versteht sich von selbst, dass dieser Speicher beim Neustart der Instanz stirbt. Wenn Ihre Nutzung nicht so vorübergehend ist, müssen Sie Ihr eigenes neues EBS-Volume erstellen und auf diese Weise bereitstellen.


1
Warum wird Symlinking nicht empfohlen? Wenn ich beispielsweise sowohl / var / tmp als auch / var / log in meinen kurzlebigen Speicher einfügen möchte, kann ich den Speicher als / mnt bereitstellen und dort beide Verzeichnisse symlinken.
11.

Guter Punkt. Ich habe über diesen speziellen Fall nachgedacht, basierend auf der Annahme, dass das OP eine Verknüpfung mit der Hauptpartition in Betracht zieht. Ich werde meine Antwort klarstellen.
SmallClanger

1

Sie können den / tmp-Mountpunkt an / mnt / tmp binden:

sudo mount -B / tmp / mnt / tmp


2
Diese Befehle schauen rückwärts zu mir. Ich denke, Sie haben die beiden Verzeichnisnamen getauscht.
Kasperd

0

Die in der Frage vorgeschlagene symbolische Verknüpfung ist keine so schlechte Lösung. Dabei ist jedoch besondere Vorsicht geboten. Um die genauen Schritte zum Mounten des Volumes zu konsolidieren, sind:

1) Erstellen Sie ein neues Volume in der AWS-Konsole. Hängen Sie es an die Instanz an.

2) Formatieren Sie es und hängen Sie es unter say ein /mnt/vol1

3) Reinigen Sie so /tmpweit wie möglich.

4) mkdir /mnt/vol1/tmp && mv /tmp/* /mnt/ && rmdir /tmp && ln -s /mnt/vol1/tmp /tmp


Durch das Verschieben der Dateien in das neue Verzeichnis wird nicht das gewünschte Ergebnis für eine aktuell geöffnete Datei erzielt. Ich würde stattdessen neu starten, da Programme nicht erwarten können, dass Dateien /tmpeinen Neustart überleben.
Kasperd
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.