SSD-Cache zur Minimierung der HDD-Hochlaufzeit?

2115
sirprize

Kurze Version zuerst : Ich suche nach Linux-kompatibler Software, die HDD-Schreibvorgänge mithilfe einer SSD transparent zwischenspeichern kann. Ich möchte die Festplatte jedoch nur ein- oder zweimal täglich hochfahren (um die zwischengespeicherten Daten auf die Festplatte zu schreiben). In der restlichen Zeit sollte sich die Festplatte aufgrund von Lärmproblemen nicht drehen.

Nun zur längeren Version : Ich habe einen komplett geräuschlosen Computer mit Xubuntu gebaut. Es verfügt über eine A10-6700T APU, einen großen lüfterlosen Kühler, ein lüfterloses Netzteil und eine SSD. Das Problem ist: Es hat (und braucht) auch eine lautere Festplatte und ich möchte das Hochdrehen während der Nacht verbieten. Alle Schreibvorgänge sollten auf der SSD zwischengespeichert werden, Lesevorgänge sind nachts nicht erforderlich.

Täglich lädt dieser Computer automatisch etwa 5 GB an Daten herunter, die für etwa ein Jahr aufbewahrt werden, was insgesamt eine erforderliche Festplattenkapazität von etwas weniger als 2 TB ergibt. Diese Daten werden derzeit auf einem lauten 3-TB-Festplattenlaufwerk gespeichert, das sich Tag und Nacht dreht. Manchmal muss ich auf einige Daten von vor einigen Monaten zugreifen. Meistens benötige ich jedoch nur Daten der letzten 14 Tage, die auf die SSD passen würden. Im Idealfall möchte ich eine transparente Lösung (alle Daten in einem Dateisystem), die alle Schreibvorgänge auf der SSD zwischenspeichert und nur einmal täglich auf die Festplatte schreibt. Lesevorgänge würden vom Cache bereitgestellt, wenn sie sich noch auf der SDD befinden würden, andernfalls müsste die Festplatte hochgefahren werden.

Ich habe versucht, BCACHE ohne viel Erfolg (cache_mode = writeback verwenden, writeback_running = 0, writeback_delay = 86400, sequential_cutoff = 0, congested_write_threshold_us = 0 - alles fehlt) und ich lese über ZFS ZIL / L2ARC aber ich bin nicht sicher, ob ich erreichen kann, Mein Ziel mit ZFS. Irgendwelche Hinweise?

Wenn alles andere fehlschlägt, werde ich einfach einige Skripts verwenden, um Dateien automatisch auf das große Laufwerk zu kopieren, während die ältesten Dateien von der SSD gelöscht werden.

Edit : Cache ist wirklich der falsche Begriff für das, was ich wollte. Es scheint, dass die ursprünglich beabsichtigte Lösung derzeit nicht möglich ist. Vielen Dank an alle, die dazu beigetragen haben!

8
Warum behalten Sie nicht einfach 14 Tage (oder so viele Anpassungen) Daten auf der SSD und schreiben ein Skript, das einmal am Tag ausgeführt wird und alles, was älter ist, auf die Festplatte verschiebt? Wenn Sie also weniger als 14 Tage alt sind, verwenden Sie die SSD und die Festplatte schreibt nur einmal pro Tag. Wenn Sie etwas älteres benötigen, müssen Sie auf die Festplatte zugreifen. Richard Powell vor 10 Jahren 1
Das ist genau das, was ich tun werde, wie ich im letzten Satz der Frage vorgeschlagen habe. Einer der Gründe, warum ich die Frage stellte, war, den (zugegebenermaßen kleinen) Ärger zu vermeiden, der erforderlich ist, das Laufwerk hochzufahren und das Laufwerk manuell einzubauen, statt nur ein transparentes Dateisystem haben. sirprize vor 10 Jahren 0

5 Antworten auf die Frage

3
Journeyman Geek

Das ist nicht wirklich wie oder warum Caching funktioniert - Caching soll die schnellere Geschwindigkeit und den besseren Direktzugriff auf die SSD oder anderen Speicher nutzen, anstatt das Schreiben auf die Festplatte zu minimieren. Durch das Zwischenspeichern wird die Geschwindigkeit maximiert und der Schreibvorgang nicht reduziert, indem ein kleinerer, schnellerer Puffer für ein großes, langsames Speichergerät verwendet wird.

In der Tat wird bcache, der Teil des Linux-Kernels ist, einfach sequentielle Schreibvorgänge an die Festplatte weiterleiten, anstatt sie über die SSD zu übergeben, da es keinen Leistungsvorteil gibt.

ZIL / L2Arc verwendet die SSD zum Speichern von Protokollen (bei ZIL) und häufig verwendeten Dateiclustern (mit L2Arc). ZIL beschleunigt synchrones Schreiben, indem es gespeichert wird, bis alle zum Schreiben bereit sind. L2Arc speichert Dateien, auf die häufig zugegriffen wird, auf schnellerem Speicher. Keines von ihnen lässt Sie tun, was Sie brauchen.

Fusion Laufwerk auch verwendet eine SSD und eine HDD transparent häufig verwendete Dateien auf der SSD für schneller liest, und HDDs für Massenspeicher von weniger häufig verwendeten Dateien setzen. Außerdem können Sie die SSD nicht als Arbeitsspeicher verwenden und Dateien immer wieder auf dem Hauptlaufwerk sichern

Was Sie sich gerade anschauen, ist kein Zwischenspeichern, sondern periodische Sicherungen des Systems auf der Festplatte. Ich vermute, Sie könnten etwas zusammen mit Aufs fälschen - der erste Zweig auf der Festplatte mit größeren Dateien (also es erfordert Vorurteile) und einen Zweig auf der SSD, und dann ein Skript ausführen, das Dateien von der SSD auf die Festplatte regelmäßig, während sie von demselben Standort aus erreichbar ist. Ich habe dies noch nicht getestet, aber im Gegensatz zum Zwischenspeichern werden das periodische Verschieben von Dateien und das Verwenden von aufs wahrscheinlich genau das sein, was Sie wollen.

Die einfachste Art, Dateien nach Alter zu sortieren, ist ls -tr - t sortiert nach Zeit (neueste bis älteste) und r kehrt die Reihenfolge um. (Wenn Sie einen bestimmten Bereich vor Augen haben, find . -mtime nfunktioniert er hervorragend, da eine bestimmte Anzahl Dateien vor n Tagen geändert hat, mit -n Dateien, die in den letzten n Tagen geändert wurden, und + n Dateien, die vor n Tagen geändert wurden.) Sie können einige Ideen finden, wie es zu benutzen hier

Da Ruhe Ihr eigentliches Ziel ist, können Sie überprüfen, ob Ihr Laufwerk mit Silent - Modus unterstützt hdparm -M /dev/sda- diese ausgeben sollte so etwas wie acoustic = 254 (128=quiet ... 254=fast), in welchem Fall Sie Ihre Festplatte leiser mit dem Befehl machen können hdparm -M 128 /dev/sda. Führen Sie den entgegengesetzten Befehl aus, hdparm -M 1254 /dev/sdawenn Sie mehr Geschwindigkeit benötigen.

Danke für die Eingabe, das ist meine Lieblingsantwort noch nicht. Ich wusste nicht über aufs und werde mich darum kümmern. sirprize vor 10 Jahren 0
Transparenz ist für einen gestapelten Prozess wie den Ihren eigentlich nicht möglich. Ich kann mir viele Möglichkeiten vorstellen, einen Backup-Auftrag auszulösen, aber Sie suchen wirklich nach Skripten, einigen Sed / Awk-Dateien, um die benötigten Dateien auszuwählen, und verschieben die dateien vielleicht mit cron. Ich vermute nur, dass hdparm alleine das Problem der Lautstärke mit Ihrer Festplatte erheblich lösen kann. Wenn Sie es nicht verwenden, können Sie das Laufwerk herunterfahren, was ebenfalls nützlich sein kann. Journeyman Geek vor 10 Jahren 0
Nochmals vielen Dank, ich werde einige bash-fu, cron, hdparm, mount und rsync verwenden, wie im letzten Satz der Frage vorgeschlagen. hdparm -M hat dazu beigetragen, dass das Laufwerk etwas leiser wurde, aber ich bevorzuge, dass sich die Festplatte in der Nacht überhaupt nicht dreht. sirprize vor 10 Jahren 0
3
harrymc

Da die anderen Antworten das Problem aus Sicht der Software behandelt haben, dachte ich daran, einige Informationen zu Hardwarelösungen aufzunehmen.

Im Artikel Sound Proof Your Hard Drive werden die folgenden Optionen aufgeführt:

  • Defragmentieren Sie Ihre Festplatte
  • Wickeln Sie die Festplatte in Gummibänder ein, um die Vibrationen zu dämpfen
  • Setzen Sie auf eine neue Festplatte: Die meisten Festplatten der heutigen Zeit sind mit fluiddynamischen Lagern ausgestattet, sodass die Platten selbst bei sehr hohen Drehzahlen nahezu geräuschlos bleiben.

Ich kann aus eigener Erfahrung bezeugen, dass ich meine neue 4-TB-Festplatte niemals hören kann, selbst wenn sehr große Dateien kopiert werden.

Bei einigen Recherchen kann man auch akustische Dämpfungsmaterialien für Festplatten finden, beispielsweise das SilentDrive HD Enclosure & Acoustic Materials oder das NoiseMagic NoVibes III Silent-Festplattenlaufwerk-Montagesystem . Ich weiß nicht, wo diese verkauft werden, und die Gummibänder oben erscheinen mir fast genauso effizient.

Man kann den gesamten Computer auch schalldicht machen. Einige Beispiel-Websites, auf denen Schallschutzmaterialien verkauft werden, sind Quiet PC USA, AcousticPC oder Dynamat . Es gibt jedoch viele solche Websites .

Einige Computergehäuse sind bereits für den geräuschlosen Betrieb konzipiert. Siehe beispielsweise
Sechs geräuscharme, leistungsorientierte Fälle, getestet .

Als letzte Bemerkung kann eine laute Festplatte, auf die ein Klickgeräusch, ein Klicken oder ein Kreischen zu hören ist, ein Anzeichen dafür sein, dass Ihre Festplatte ausfällt, also seien Sie vorsichtig.

Vielen Dank für Ihr Feedback, haben Sie eine positive Bewertung. Ich verwende bereits spezielle Hardware - in diesem Fall komplett geräuscharme Hardware, außer für das Laufwerk. Mit "Geräusch" beziehe ich mich auf den normalen Klang einer gesunden Festplatte. Ich muss einfach cron verwenden, um das Laufwerk hochzufahren, zu mounten, eine Sicherungskopie zu erstellen, es abzuhängen und dann wieder herunterzufahren. sirprize vor 10 Jahren 0
2
DocSalvager

Verschiedene Varianten von Puppy Linux basieren auf Ubuntu, verwenden jedoch Aufs .

Welpe läuft vollständig vom RAM, im normalen Betrieb gibt es keine Festplattenzugriffe.

Wenn Sie Puppy mitteilen, dass es sich bei Ihrer Festplatte um ein Flash-Laufwerk handelt, wird das RAM-Dateisystem regelmäßig und nicht kontinuierlich auf die Festplatte geschrieben. Dies wurde entwickelt, um die Abnutzung häufiger Schreibvorgänge auf Flash-Laufwerke zu reduzieren, funktioniert jedoch auch auf Festplattenlaufwerken.

Wie bei fast allem in Puppy können Sie über eine GUI festlegen, wie oft das RAM-Dateisystem gespeichert werden soll. Normalerweise ist dies etwa alle 10 Minuten, aber es gibt nichts zu verhindern, dass beispielsweise alle 720 Minuten (12 Stunden) ein Speicherauszug erstellt wird.

Welpen-Linux-Event-Manager

Dieser Auszug aus meiner Grub4DOS-Bootloader- menu.lstDatei zeigt die Einstellung für die pmediaKernel-Option, die besagt, dass Flashdrive anstelle einer Festplatte verwendet wird.

# menu.lst produced by grub4dosconfig-v1.7.1 # # 'kernel ... pmedia=ideflash' # Treat the HDD as a flashdrive: infrequent writes of filesystem to savefile  title Puppy Lupu 5.2.8 (sda3/puppy528lu) Cached\nUse SWAP; changes to RAM; flush to disk every 10min (fastest) find --set-root --ignore-floppies --ignore-cd /puppy528lu/initrd.gz kernel /puppy528lu/vmlinuz psubdir=puppy528lu pmedia=ideflash pfix=copy,fsck initrd /puppy528lu/initrd.gz 

Ein Hinweis zu Puppy Linux "Variationen" ...
Ich verwende Puppy Linux 5.2.8 "Lupu", das auf Ubuntu 10.04 Lucid Lynx basiert. Diese Version wird aufgrund ihrer Herkunft auch oft "Lucid" anstelle von "Lupu" genannt. Es gibt auch Versionen, die auf Slackware und einigen anderen Distributionen basieren. Da Sie Xubuntu bereits verwenden, ist Puppy Linux Lupu der bekannteste. Es wäre auch viel schneller. Ich habe Xubuntu ungefähr ein Jahr lang benutzt, bevor ich Puppy gefunden habe.

Es gibt auch eine viel neuere Version, die auf "Ubuntu Precise Pangolin" basiert und "Puppy Linux Precise" heißt. Der in der neueren Version verwendete Kernel hat wesentliche Änderungen vorgenommen, die möglicherweise mit älterer Hardware nicht funktionieren. Wenn Ihre Maschine weniger als 5 Jahre alt ist, sind Sie mit Precise möglicherweise zufriedener. Ich glaube, dass die oben beschriebene Technik immer noch mit Precise funktionieren wird, obwohl die genauen Optionen usw. unterschiedlich sein können, sie aber nicht testen können.

0
nass

Kurze Lösung und schnell umsetzbar (aber nicht genau auf das, was Sie wollen): Übertragen Sie die Speicherfestplatte an einen anderen Ort. Es kann sich dabei um einen netowrk-Dateiserver (wie die WD world edition) oder einen USB3-Datenträger handeln. Sie können ihn im selben Raum wie der ruhige PC oder in einem anderen Raum haben, um das vollständige Abhören zu vermeiden.

Dies ist meiner Meinung nach besser, da Sie das Laufwerk sicherlich nur dann verwenden, wenn Sie Daten über das Netzwerk übertragen möchten. Das Betriebssystem führt möglicherweise eine andere Neuordnung des Dateisystembaums durch, die Sie nicht vermeiden können und die Sie stören würde . So ist ein anderes Zimmer ein großes Plus.

Caching sollte einfach genug sein - sichern Sie einfach die Tagesdaten auf der externen Festplatte, was Sie mit Lösungen wie rsyncoder erreichen können unison.

Die längere Lösung ist wiederum nicht ideal (dh keine Einzelanwendung), aber Sie erhalten das Laufwerk in derselben Box wie die SSD und erreichen höhere Geschwindigkeiten (benötigen Sie jedoch wirklich eine höhere Geschwindigkeit als Netzwerk für nur 5 GB / Tag?):

Sie können smartctldie Abschaltzeit Ihres Laufwerks einstellen und das Laufwerk in einem nicht gemounteten Zustand halten, um zu vermeiden, dass das Betriebssystem auf dem Laufwerk vorhanden ist. Dann schreiben Sie einfach ein Skript mountund sichern (wie oben) die Daten, die Sie benötigen.

Leider waren das alles Dinge, die ich vermeiden wollte. Vielen Dank für deine Zeit! sirprize vor 10 Jahren 0
0
Serra South

Sie mögen meine Antwort nicht, aber Sie missbrauchen tatsächlich den Begriff-Cache. Sie beschreiben tatsächlich eine Backup-Lösung. Schauen Sie sich rsync an oder suchen Sie nach anderen Backup-Lösungen, wenn Sie etwas Vollständigeres wünschen.

Das ist absolut wahr und habe ich in meiner Antwort ausführlich behandelt :) Journeyman Geek vor 10 Jahren 0