Verschiebe den tmp Ordner von der '/' Partition in die gemountete Partition (/ mnt)

15

Ich habe eine Amazon EC2-Instanz, die mir eine winzige / -Partition und eine große / mnt-Partition gegeben hat. Daher habe ich mein mysql-Datenverzeichnis in die / mnt-Partition verschoben. Allerdings habe ich jetzt Probleme mit dem / tmp-Ordner, der nicht mehr genügend Speicherplatz für meine massiven Join-Abfragen hat, und versuche, / tmp auch nach / mnt / tmp zu verschieben. Ich habe versucht, dies mit einem Symlink zu tun, aber das führt dazu, dass der MySQL-Dienst nicht gestartet werden kann.

Bitte geben Sie an, wie der Speicher von / tmp nach / mnt (/ dev / xvdb) verschoben werden soll.

Programster
quelle

Antworten:

14

Sie können den /tmpEinhängepunkt binden an /mnt/tmp:

sudo mount -B /tmp /mnt/tmp
Braiam
quelle
Fantastisch! Einfach, wenn Sie wissen, wie.
Programster
4
Eine Sache, die Sie sehr beachten müssen, ist, dass die / mnt-Partition ein kurzlebiger Speicher ist. Wenn Sie Ihre Instanz anhalten (oder sie sich verschlechtert und AWS sie verschiebt), gehen die Daten in / mnt verloren. Es wird empfohlen (insbesondere für MySQL), ein EBS-Volume bereitzustellen und dieses für Daten zu verwenden, die persistent sein sollen.
Kevin Willock
@ KevinWillock Ich denke, dass seine /mnt(von der Größe) persistent ist (oder er hat etwas dort eingehängt, das persistent ist), da er tatsächlich Daten dort speichert. Übrigens möchten Sie ihn vielleicht tatsächlich @anpingen (mit ), da ich fast sicher bin, dass er nicht anpingt.
Braiam
@Braiam Ich habe keinen Ping bekommen, aber diesen Thread noch einmal durch Glück überprüft. Kevin hätte Recht, dass dies ein kurzlebiger Speicher ist. Ich weiß, dass dies sehr unsicher ist, aber absichtlich durchgeführt wurde, um die Leistung der Verwendung von lokalem Speicher zu testen. Wenn ich ein solches System verwenden würde, würde ich sicherstellen, dass ich auf ein EBS-Volume oder RDS selbst repliziere und von dort aus ein Backup mache. Ich bin mir der Risiken bewusst.
Programster
1
Muss ich diesen Befehl bei jedem Neustart ausführen?
Hithwen
2

Das Verschieben einer "/ tmp" -Partition erfordert einige zusätzliche, in dieser falschen Antwort nicht vorgeschlagene /ubuntu//a/371628/298086 .

Das Verschieben von Daten impliziert das Löschen von Daten von der ursprünglichen Partition, nachdem diese auf die Zielpartition geklont wurde. Dies wird von einem Bind-Mount absolut nicht ausgeführt.

EMPFEHLUNG : Lesen Sie diesen brillanten Beitrag, wenn Sie wissen möchten , was ein Bind-Mount ist: /unix//a/198591

Wenn Sie die richtige Mount-Option ausprobieren ("MOVE", nicht binden):

mount -M /tmp /mnt/tmp

Ich bin davon überzeugt, dass die Meldung fehlschlagen wird, dass " tmp ein freigegebener Mountpoint ist " (was in der Tat bedeutet, dass " ich einen Mountpoint nicht verschieben kann, wenn er noch von einem Prozess verwendet wird ").

Für die gesuchte "Antwort" müssen Sie möglicherweise die Dienste mit / accessing / tmp stoppen und neu starten, bevor Sie Inhalte verschieben können.

Sie können diese Dienste / Prozesse auflisten, indem Sie Folgendes ausführen:

lsof +D /tmp/

/tmpWenn Sie also einmal aufgelistet haben, worauf tatsächlich zugegriffen wird / was verwendet wird , können Sie wirklich entscheiden, wie Sie vorgehen sollen.

Meiner Meinung nach geht der sicherste Weg vorbei

  1. Beenden aller Dienste, die auf / tmp zugreifen (wenn Sie das können)
  2. Vollständiges Kopieren von / tmp-Inhalten an einen neuen Ort
  3. Bearbeiten von / etc / fstab und Ändern des physischen Speicherorts des / tmp-Mount-Punkts (egal, ob es sich um einen Bind- oder einen Geräte-Mount handelt)
  4. Starten Sie das System neu, um die erneute Bereitstellung durchzuführen

Es gibt aber noch einen anderen Weg, der keinen Neustart des Systems erfordert, aber nicht sicherer als der vorherige ist. Es wird hier beschrieben und besteht darin, /tmpauf eine faule Art und Weise umzuhängen , was Ihnen die Ausführung ermöglichen sollmount -M

Diese beiden Links sind hilfreich für Ihre Anfrage:

xsubira
quelle