SSD-Cache zur Minimierung der Hochlaufzeit der Festplatte?

8

Kurzversion 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 am Tag hochfahren (um die zwischengespeicherten Daten auf die Festplatte zu schreiben). In der restlichen Zeit sollte sich die Festplatte aufgrund von Rauschproblemen nicht drehen.

Jetzt die längere Version : Ich habe einen völlig leisen Computer mit Xubuntu gebaut. Es hat eine A10-6700T APU, einen riesigen lüfterlosen Kühler, ein lüfterloses Netzteil und eine SSD. Das Problem ist: Es hat (und braucht) auch eine laute Festplatte und ich möchte verbieten, sie während der Nacht hochzufahren. Alle Schreibvorgänge sollten auf der SSD zwischengespeichert werden. Nachts sind keine Lesevorgänge erforderlich.

Im Laufe des Tages lädt dieser Computer automatisch etwa 5 GB Daten herunter, die etwa ein Jahr lang aufbewahrt werden, was einer insgesamt benötigten Festplattenkapazität von etwas weniger als 2 TB entspricht. Diese Daten werden derzeit auf einem verrauschten 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. Idealerweise möchte ich eine transparente Lösung (alle Daten in einem Dateisystem), die alle Schreibvorgänge auf der SSD zwischenspeichert und nur einmal am Tag auf die Festplatte schreibt. Lesevorgänge würden vom Cache bereitgestellt, wenn sie sich noch auf der SSD befänden, andernfalls müsste die Festplatte hochgefahren werden.

Ich habe bcache ohne großen Erfolg ausprobiert (mit cache_mode = writeback, writeback_running = 0, writeback_delay = 86400, sequential_cutoff = 0, congested_write_threshold_us = 0 - fehlt etwas?) Und ich habe über ZFS ZIL / L2ARC gelesen , bin mir aber nicht sicher, ob ich es erreichen kann mein Ziel mit ZFS. Irgendwelche Hinweise?

Wenn alles andere fehlschlägt, verwende ich einfach einige Skripte, um Dateien automatisch auf das große Laufwerk zu kopieren und gleichzeitig die ältesten Dateien von der SSD zu löschen.

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

Sirprize
quelle
1
Warum speichern Sie nicht einfach Daten im Wert von 14 Tagen (oder wie viel passt) auf der SSD und schreiben ein Skript, das einmal am Tag ausgeführt wird und alles Ältere auf die Festplatte verschiebt? Auf diese Weise verwenden Sie die SSD, wenn Sie weniger als 14 Tage alt verwenden, und die Festplatte schreibt nur einmal am Tag. Wenn Sie etwas Älteres benötigen, müssen Sie auf die Festplatte zugreifen.
Richard Powell
Genau das werde ich tun, wie ich im letzten Satz der Frage vorgeschlagen habe :) Einer der Gründe, warum ich die Frage gestellt habe, war, den (zugegebenermaßen geringen) Aufwand zu vermeiden, das Laufwerk manuell hochfahren und montieren zu müssen, anstatt nur ein transparentes Dateisystem haben.
Sirprize

Antworten:

3

Das ist nicht wirklich, wie oder warum das Caching funktioniert - das Caching soll die schnellere Geschwindigkeit und den besseren Direktzugriff auf die SSD oder einen anderen Speicher nutzen, anstatt die Schreibvorgänge auf die Festplatte zu minimieren. Das Caching wurde entwickelt, um die Geschwindigkeit zu maximieren und nicht das Schreiben zu reduzieren, indem ein kleinerer, schnellerer Puffer ein großes, langsames Speichergerät unterstützt.

Tatsächlich leitet bcache, das Teil des Mainline-Linux-Kernels ist, einfach sequentielle Schreibvorgänge an die Festplatte weiter, anstatt sie über die SSD weiterzuleiten, da es keinen Leistungsvorteil gibt.

ZIL / L2Arc verwendet die SSD zum Speichern von Protokollen (im Fall von ZIL) und häufig verwendeten Dateiclustern (mit L2Arc). ZIL beschleunigt synchrone Schreibvorgänge, indem es sie speichert, bis sie alle zum Schreiben bereit sind. L2Arc speichert Dateien, auf die häufig zugegriffen wird, schneller. Keiner von beiden 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 Arbeitsbereich verwenden und von Zeit zu Zeit Dateien auf dem Hauptlaufwerk sichern

Was Sie sehen, ist überhaupt kein Caching, sondern regelmäßige Sicherungen des Systems auf der Festplatte. Ich vermute, Sie könnten in der Lage sein, etwas zusammen mit Aufs zu fummeln - dem ersten Zweig auf der Festplatte mit größeren Dateien (es ist also wichtig) und einem Zweig auf der SSD - und dann ein Skript auszuführen, das Dateien von der SSD auf die SSD verschiebt Festplatte in regelmäßigen Abständen, während Sie vom selben Standort aus darauf zugreifen können. Ich habe dies noch nicht getestet, aber im Gegensatz zum Caching ist das regelmäßige Verschieben von Dateien und die Verwendung von aufs wahrscheinlich genau das, was Sie wollen.

Der einfachste Weg, Dateien nach Alter zu sortieren, ist ls -tr - t nach Zeit sortieren (neueste bis älteste) und r kehrt die Reihenfolge um. (Wenn Sie einen bestimmten Bereich im Auge haben, find . -mtime nfunktioniert n hervorragend, da eine bestimmte Anzahl Dateien enthält, die vor n Tagen geändert wurden, -n gibt Ihnen Dateien an, die in den letzten n Tagen geändert wurden, und + n gibt Ihnen Dateien an, 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 den unbeaufsichtigten Modus mit unterstützt. hdparm -M /dev/sdaDies sollte etwa Folgendes ausgeben acoustic = 254 (128=quiet ... 254=fast). In diesem Fall können Sie Ihre Festplatte mit dem Befehl leiser machen hdparm -M 128 /dev/sda. Führen Sie den entgegengesetzten Befehl aus, hdparm -M 1254 /dev/sdawenn Sie mehr Geschwindigkeit benötigen.

Gesellenfreak
quelle
Vielen Dank für die Eingabe, dies ist meine Lieblingsantwort noch. Ich wusste nichts über aufs und werde mich darum kümmern.
Sirprize
Transparenz ist für einen gestapelten Prozess wie Ihren nicht wirklich möglich - ich kann mir viele Möglichkeiten vorstellen, um einen Backup-Job auszulösen, aber Sie suchen wirklich nach Skripten, etwas sed / awk, um die benötigten Dateien auszuwählen und zu verschieben die Dateien, vielleicht mit Cron. Ich vermute halbwegs, dass hdparm allein das Problem mit der Lautstärke Ihrer Festplatte erheblich lösen kann, und Sie können das Laufwerk ausschalten, wenn es nicht verwendet wird, was ebenfalls nützlich sein kann.
Geselle Geek
Nochmals vielen Dank, ich werde etwas Bash-Fu, Cron, HDParm, Mount und Rsync verwenden, wie im letzten Satz der Frage vorgeschlagen. hdparm -M hat geholfen, das Laufwerk etwas leiser zu machen, aber ich bevorzuge, dass sich die Festplatte nachts überhaupt nicht dreht.
Sirprize
3

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

Der Artikel Sound Proof your Hard Drive listet die folgenden Optionen auf:

  • Defragmentieren Sie Ihre Festplatte
  • Wickeln Sie die Festplatte in Gummibänder, um Vibrationen zu dämpfen
  • Entscheiden Sie sich für eine neue Festplatte: Die meisten Festplatten der heutigen Zeit sind mit fluiddynamischen Lagern ausgestattet, die es den Platten ermöglichen, auch bei sehr hoher Drehung nahezu geräuschlos zu bleiben.

Ich kann aus eigener Erfahrung bezeugen, dass ich meine neue 4-TB-Festplatte selbst beim Kopieren sehr großer Dateien nie hören kann.

Mit etwas Forschung kann man auch akustische Dämpfungsmaterialien für Festplatten finden, wie das SilentDrive HD Enclosure & Acoustic Materials oder das NoiseMagic NoVibes III Silent Hard Drive-Montagesystem . Ich weiß nicht, wo diese verkauft werden, und die Gummibänder oben scheinen mir fast genauso effizient zu sein.

Man kann auch den gesamten Computer schallisolieren. Einige Beispielwebsites, die Schallschutzmaterialien verkaufen, sind Quiet PC USA , AcousticPC oder Dynamat , aber es gibt viele solcher.

Einige Computergehäuse sind bereits für den geräuschlosen Betrieb ausgelegt. Siehe zum Beispiel
sechs geräuscharme, leistungsorientierte Fälle, getestet .

Als letzte Bemerkung kann eine laute Festplatte, die klirrt, klickt oder kreischt, ein Zeichen dafür sein, dass Ihre Festplatte ausfällt. Seien Sie also vorsichtig.

harrymc
quelle
Vielen Dank für Ihr Feedback, haben Sie eine positive Bewertung. Ich verwende bereits spezielle Hardware - in diesem Fall völlig geräuschlose Hardware mit Ausnahme des Laufwerks. Mit "Rauschen" meine ich den normalen Klang einer gesunden Festplatte. Ich muss einfach cron verwenden, um das Laufwerk hochzudrehen, zu mounten, ein Backup zu erstellen, es zu demontieren und es dann wieder runterzudrehen.
Sirprize
2

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

Puppy läuft komplett aus dem 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 der Festplatte gespeichert. Dies wurde entwickelt, um den Verschleiß häufiger Schreibvorgänge auf Flash-Laufwerken zu verringern, funktioniert aber auch auf Festplatten.

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 nichts hindert Sie daran, die Einstellung beispielsweise alle 720 Minuten (12 Stunden) festzulegen.

Welpe 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 "Variationen" von Puppy Linux ...
Ich verwende Puppy Linux 5.2.8 "Lupu", das auf Ubuntu 10.04 Lucid Lynx basiert. Diese Version wird aufgrund ihrer Herkunft auch oft als "Lucid" anstelle von "Lupu" bezeichnet. Es gibt auch Versionen, die auf Slackware und einigen anderen Distributionen basieren. Da Sie bereits Xubuntu verwenden, ist Puppy Linux Lupu am bekanntesten. 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. Es gibt wichtige Änderungen am Kernel, die in der neueren Version verwendet werden und mit älterer Hardware möglicherweise nicht gut funktionieren. Wenn Ihre Maschine weniger als 5 Jahre alt ist, sind Sie möglicherweise mit Precise zufriedener. Ich glaube, dass die oben beschriebene Technik weiterhin mit Precise funktioniert, obwohl die genauen Optionen usw. unterschiedlich sein können, ich sie jedoch nicht testen kann.

DocSalvager
quelle
0

Kurze Lösung und schnell implementierbar (aber nicht genau das, was Sie wollen) ist: Übertragen Sie die Speicherplatte an eine andere Stelle. Es kann sich um einen Netowrk-Dateiserver-Chassi (wie die WD World Edition) oder eine USB3-Festplatte handeln, die Sie im selben Raum wie der leise PC oder in einem anderen Raum haben können, um ein vollständiges Anhören zu vermeiden.

Dies ist meiner Meinung nach besser, da Sie das Laufwerk sicherlich nur verwenden, wenn Sie Daten über das Netzwerk übertragen möchten. Das Betriebssystem führt möglicherweise andere Aufräum- oder Dateisystembaum-Neuausrichtungen durch, die Sie nicht vermeiden können und die Sie stören würden . Ein anderes Zimmer ist also ein großes Plus.

Das Caching sollte einfach genug sein - sichern Sie einfach die Daten des Tages 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 einzelne Anwendung), aber Sie erhalten das Laufwerk in derselben Box wie die SSD und erzielen höhere Geschwindigkeiten (aber benötigen Sie wirklich eine höhere Geschwindigkeit als das Netzwerk für nur 5 GB / Tag?):

Sie können smartctldie Durchlaufzeit Ihres Laufwerks festlegen und dieses Laufwerk in einem nicht gemounteten Zustand halten, um zu vermeiden, dass das Betriebssystem Dinge auf dem Laufwerk ausführt. Dann schreiben Sie einfach ein Skript mountund sichern (wie oben) die Daten, die Sie benötigen.

nass
quelle
Leider sind das alles Dinge, die ich vermeiden wollte. Vielen Dank für Ihre Zeit!
Sirprize
0

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

Dim
quelle
Dies ist absolut wahr und das habe ich in meiner Antwort ausführlich behandelt :)
Journeyman Geek