Ich möchte das System so einrichten, dass der Großteil des Arbeitsspeichers für das Zwischenspeichern von Metadaten im Dateisystem verwendet wird, aber nur eine relativ kleine Menge für das Lesen / Schreiben von Zwischenspeichern und das Vorabrufen von Dateien. Im Idealfall möchte ich das Dateisystem durchsuchen können (soweit es in den Arbeitsspeicher passt), ohne die Festplatten hochzufahren, bis ich tatsächlich eine Datei öffne.
Hier sind die Details:
Ich habe einen selbstgemachten Dateiserver. Es hat fünf Festplatten in einem LVM-Volume um 9 TB, aber nur 4 GB RAM. Da der Server nicht viel anderes tut, als Dateien bereitzustellen, wird der größte Teil des Arbeitsspeichers für das Caching verwendet. ("Kostenlos" meldet 3,4 G von 3,9 G, die für den Cache verwendet werden.)
Der Server befindet sich in meinem Schlafzimmer, und wenn sich alle Festplatten drehen, macht er genug Lärm, um im Ruhezustand störend zu wirken. (Ich meine nicht Suchgeräusche, sondern nur Drehgeräusche. Die Festplatten sind von verschiedenen Herstellern und Modellen, und ich denke, dass geringfügige Unterschiede in der Drehzahl Störungen verursachen. Keine Festplatte ist für sich allein laut, aber wenn sich einige zusammen drehen, gibt es diese ein leises Geräusch mit einer Sub-Hertz-Periode.) Also habe ich den Server so konfiguriert, dass er die meiste Zeit die Festplatten herunterfährt.
Wenn die Datenträger heruntergefahren werden, wenn ich einen Ordner in meinem Dateimanager öffne, tritt natürlich eine Verzögerung auf, während der Ordner, auf dem sich der Datenträger befindet, hochgefahren wird. Nur das ist keine große Sache. Aber je nachdem, wo ich hinschaue, kann es mehrmals hintereinander vorkommen, dass LVM die Metadaten für jeden Unterordner auf die verschiedenen Datenträger verteilt.
Ich vermute, dass Linux seinen Cache hauptsächlich mit Dateiinhalten und möglicherweise vorab abgerufenen Daten füllt. Das Zwischenspeichern ist über ein paar MB hinaus nicht sehr nützlich, um eine reibungslose Wiedergabe zu gewährleisten. Wenn ich gerade einen Film geschaut habe, werde ich ihn mir wahrscheinlich nicht so schnell wieder ansehen. Das Prefetching ist in meinem Fall nach mehr als ein paar MB ebenfalls völlig nutzlos .
4 GB sollten jedoch ausreichen, um die meisten Metadaten des Dateisystems zwischenzuspeichern, zumindest die Teile, die bereits besucht wurden, damit ich die Dateien durchsuchen kann, ohne die Festplatten hochfahren zu müssen, wenn sich herausstellt, dass sie vorhanden sind Schlafen.
Es würde immer noch eine Verzögerung beim Öffnen der Datei geben, aber das ist in Ordnung. Vergleiche “click; warte ; klicken; warte ; klicken; warte ; abspielen; Anschauen "mit" Klick; klicken; klicken; abspielen; warte ; Uhr". Ersteres ist unglaublich frustrierend; Letzteres wird fast erwartet.
Anmerkungen:
Wenn es darauf ankommt, ist der Kernel 3.2, das Betriebssystem ist Debian, das Volume ist lvm2 und der FS ist ext4.
Der einzige Grund für das Herunterfahren ist Geräusch während der Nacht; der Server läuft sonst ununterbrochen. (Ich habe es so stromsparend wie möglich gemacht.) Die Auslaufverzögerung variiert je nach Tageszeit.
Die Festplatten sind nur für Medien. Das Betriebssystem befindet sich auf einem separaten (kleinen) Flash-Laufwerk. (Das bedeutet, dass alle Verzögerungen beim Hochfahren auf die Daten zurückzuführen sind, nicht nur, weil dafür etwas erforderlich ist
/usr
oder was auch immer. Ich könnte ein paar GB dafür sparen, wenn dies irgendwie bei meinem Problem helfen würde.Ein angemessener Einfluss auf die Leistung ist keine große Sache. Die Festplatten sind sowieso schneller als mein Netzwerk.
quelle
find / -ls > /dev/null
, dann die Festplatten herunterfahre und dannfind
alle Dateien erneut, werden die Festplatten nicht hochfährt.free
zeigt dabei Puffer, die auf ca. 202MB ansteigen. Aber, wenn ich dasfind
, danncat /file/bigger/than/ram > /dev/null
, dannfree
zeigtcached
steigenden den leeren Raum zu füllen, und aus irgendeinem Grundebuffers
geht bis etwa 195MB nach unten. Dann, wenn ich die Scheibenfind
runterdrehe und das nochmal mache, drehen sich die Scheiben immer noch hoch :-(swappiness
: Es ist auf den Standardwert von festgelegt60
, aber der Computer verfügt über keine Swap-Partition. Daher bin ich mir nicht sicher, ob er viel bewirkt. Ich schätze, ich könnte eine Auslagerungsdatei auf dem Flash-Laufwerk ablegen, aber ich habe keine Ahnung, wie es helfen würde oder wie man die Größe ändert.