2009-07-17 2 views
7

Ich habe viele kleine zufällige Zugriffe auf eine ganze Reihe von Dateien zu tun. Ich habe mehr als genug Hauptspeicher, um alle Daten zu speichern.Linux-Dateisystem automatisch von Festplatte gesichert, aber vollständig im Speicher gehostet?

Wenn ich die Daten in ein temporäres ramfs-Dateisystem übertrage und es dort verarbeite, dauert dies nur einen kleinen Bruchteil der Zeit, die auf den Festplattenzugriff warten würde.

Gibt es ein Linux-Dateisystem, das alle seine Daten im Hauptspeicher enthält, schreibt alle Änderungen an einer Sicherungsdiskette, aber berührt nie die Festplatte für Lesevorgänge?

Wenn nicht, können, sagen wir, ext3-Caches so eingestellt werden, dass sie garantiert 100% der Daten und Metadaten enthalten?

Antwort

1

Warum versuchen Sie nicht, einen RAID-Spiegel zwischen einer Ramdisk und einer physischen Festplatte zu erstellen?

Nicht sicher, ob es effizient ist. Wenn der Spiegel immer synchronisiert werden muss, muss er beim Schreiben auf die Festplatte warten, aber zum Lesen sollten Sie etwas gewinnen. Aber yeah, für mich sieht es sehr kompliziert aus, Rad neu erfundenes IO-Caching :)

Wäre aber ein schönes Experiment.

+0

Dies endete mit der richtigen Antwort, mit mdadm - write-most. – mikaelhg

+0

@mikaelhg: Hast du Benchmarks? –

+0

Eigentlich fahre ich heute nur die Benchmarks. Amazon EC2 ist wirklich unglaublich praktisch, um diese verrückten Ideen zu testen. – mikaelhg

8

Wenn Sie nur Daten lesen, dann können Sie in der Tat stimmen Caching, so dass alle Daten im RAM zwischengespeichert werden - siehe/usr/src/linux/Documentation/sysctl/ fs.txt vm.txt für Details Was können Sie hier optimieren? Das Problem tritt auf, wenn Sie Daten schreiben, insbesondere wenn Sie fsync() oder ähnliches verwenden, um sicherzustellen, dass die Daten an die tatsächliche Festplatte übertragen wurden.

Da das OS hat die Festplatte im Falle eines fsync() zu aktualisieren, gibt es nicht viel können Sie tun, wenn Sie noch Ihre Daten consistant sicherstellen wollen, und nicht in einem Stromausfall verloren gehen würde.

Ein Problem, das möglicherweise auftritt, ist die atime oder Zugriffszeit - standardmäßig wird bei jedem Zugriff auf eine Datei die Zugriffszeit im Inode aktualisiert. Dies führt zu Laufwerkschreibvorgängen, auch wenn Sie glauben, dass Sie gerade Lesevorgänge ausführen. Dies kann ein besonderes Problem in Ihrem Szenario sein, in dem Sie auf viele kleine Dateien zugreifen. Wenn Sie die Zugriffszeit nicht verfolgen möchten, können Sie Ihr Dateisystem mit der noatime mounten, um diese "Funktion" zu deaktivieren.

+0

Sieht nicht fs.txt ist relevant für diese Frage, es sei denn, ich verpasse, was Sie konkret dort gemeint? – mikaelhg

+0

@mikaelhg: Entschuldigung, ich habe einen Fehler gemacht - ich meinte 'sysctl/vm.txt', das verschiedene Knöpfe hat, die du optimieren kannst, wie zB vfs_cache_pressure. Ich werde die Antwort aktualisieren. – DaveR

Verwandte Themen