Wie kann ich konsistente Momentaufnahmen von tmpfs erstellen?

2167
netvope

Wie kann ich konsistente Momentaufnahmen von tmpfs oder RAM-Festplatten erstellen?

4
Unter welchem ​​Betriebssystem? Zumindest Solaris, Linux und NetBSD haben ein Dateisystem namens `tmpfs '. Gilles vor 13 Jahren 0
@ Gilles Ich habe über Linux nachgedacht. Vielen Dank für die Klärung der Frage :) netvope vor 13 Jahren 0

4 Antworten auf die Frage

3
Randolf Richardson

Auf NetBSD gibt es etwas namens "fss", das mit dem Dienstprogramm "fssconfig" gesteuert werden kann. Ich bin mir nicht sicher, ob dies unter Linux verfügbar ist oder vielleicht doch unter einem anderen Namen? Ich bin mir sicher, dass jemand im IRC so schnell antworten kann (ich hatte wirklich guten Erfolg auf irc.freenode.net).

Folgende Manpages sind für Sie wahrscheinlich interessant:

man fssconfig man fss

Dieses Tool erstellt einen Snapshot eines Dateisystems an einem von Ihnen gewünschten Mount-Punkt. Anschließend werden alle Änderungen vom Snapshot isoliert. Ich habe es nicht ausprobiert, aber ich gehe davon aus, dass es mit einer RAM-Disk gut funktionieren wird, da dies ein Festplatten-Dienstprogramm ist.

Ich hoffe, das hilft, oder bringt dich wenigstens in die richtige Richtung.

1
mkomitee

Nun, ich habe das nicht getan, aber es ist möglicherweise möglich, ein Lvm-Volume in einer Datei zu erstellen, die sich auf Ihrem TMPFS-Verzeichnis befindet, und es an einer anderen Stelle mittels Loopback zu mounten. Sie werden mit einigen Performance-Strafen konfrontiert und müssen sie bei jedem Neustart neu erstellen.

1
Holger Just

Wenn der Inhalt Ihres tmpfs so wichtig ist, dass Snapshoting und sogar Sicherungen erforderlich sind, möchte ich tmpfs lieber nicht verwenden, sondern es auf die Festplatte schreiben. Dort können Sie die traditionellen Snapshoting-Funktionen (lvm, btrfs, ...) nutzen.

Wenn Sie nicht viel synchron schreiben (was bei einem tmpfs sowieso nicht sinnvoll wäre) und genügend freien RAM für den Cache haben (was Sie für einen tmpfs sowieso benötigen), sehe ich wenig Vorteile darin, auf der RAM-Disk zu bleiben . Verwenden Sie einfach ein herkömmliches, festplattenbasiertes Dateisystem mit warmen Caches.

Soweit ich weiß, gibt es keinen brauchbaren Weg, um den RAM-Inhalt auf x86-Hardware tatsächlich zu schnappen. Es gibt einige SPARC (?) - Prozessoren, die Transaktionsspeicher unterstützen, aber ich denke, das trifft hier nicht zu ...

Sie haben zwar Recht, aber es wäre nützlich, wenn ein Programm (das Sie keinen Zugriff auf die Quelle haben) sehr oft synchron schreibt oder die Schreibvorgänge löscht. Vielleicht können wir LD_PRELOAD verwenden, um die Bibliotheksaufrufe zu hijacken und das Programm zu zwingen, asynchrone Schreibvorgänge auszuführen. netvope vor 13 Jahren 0
Normalerweise hat ein Programm, wenn es synchron schreibt, einen sehr guten Grund (wie eine Datenbank). Sie sollten sehr vorsichtig sein, wenn Sie versuchen, dies zu deaktivieren (z. B. indem Sie in einen flüchtigen Speicher schreiben oder Syscalls verwenden). Sie sollten wirklich über Datensicherheit nachdenken. Meistens ist dies ein Vielfaches mehr als das letzte Stück Leistung. Und wenn Sie Daten in den RAM schreiben, werden Sie Ihre Daten töten. Holger Just vor 13 Jahren 0
-1
oernii

Erstellen Sie eine Image-Datei auf tmpfs, loop ip, erstellen Sie sie. Erstellen Sie ein LV und dann können Sie einen Schnappschuss erstellen.

nicht getestet