Patty92 Posted August 2, 2022 Share Posted August 2, 2022 (edited) Grüße in die Runde. Folgende Idee kam mir heut in den Sinn: Ist es möglich wie im Titel beschrieben den Spindown für einen bestimmten Zeitraum zu deaktivieren? Gedanke ist, wenn das Array / eine bestimmte Platte genutzt wird, diese Tagsüber (z.B. von 10 - 22 Uhr) aktiv zu lassen. Nach 22 Uhr soll dann ganz normal der Spindown wieder funktionieren. An sich denke ich mal könnte man das ganze vielleicht über User Script lösen. Z.B. prüfe ob eine Platte aktiv ist, wenn ja, setzte Spindown für die Platte auf "Nie", nach 22 Uhr zurück auf 30 Minuten. Eine andere Idee wäre zu prüfen ob eine Platte aktiv ist, wenn ja, löse z.B. aller 25 Minuten einen "Lesebefehl" auf der Platte aus um die Spindown-Zeit zurückzusetzen, nach 22 Uhr kein Lesen mehr über das User Script. Ich hoffe man versteht die Idee / den Gedanken. Grüße Patty Edited August 2, 2022 by Patty92 Quote Link to comment
Revan335 Posted August 5, 2022 Share Posted August 5, 2022 Es gibt die Spindown Verzögerung in den Disk Einstellungen. Aber das wird vermutlich nicht so filigran sein, wie du es gerne hättest. Quote Link to comment
Patty92 Posted August 5, 2022 Author Share Posted August 5, 2022 4 hours ago, Revan335 said: Es gibt die Spindown Verzögerung in den Disk Einstellungen. Diese nutze ich derzeit auch, mit der Einstellung 60 Minuten. Folgendes Beispiel, wieso ich auf diese Idee komme: - Eltern gucken einen Film von 10.00 - 12.00 - Ruhezeit - Ich gucke von 16.00 - 18.00 Serie - Ruhezeit - Ich gucke erneut Serie von 20.00 - 22.00 Nun könnte man ja sagen, man erhöht den Spindown auf 3h, dann würde die Platte aber noch bis 1.00 Uhr laufen. Für das Szenario würden ja auch verschiedene Sachen funktionieren, Tagsüber Spindown ausschalten, Abends wieder auf 1h.. oder Tagsüber auf 3h, nach 22 Uhr wieder auf 1h. Interessant wäre hier, ob und wie man über Script die Spindown Zeit einer Platte anpassen kann. So wirklich habe ich dazu im Forum leider nichts gefunden. Quote Link to comment
jj1987 Posted August 5, 2022 Share Posted August 5, 2022 Wozu überhaupt das ganze? Hast du Angst wegen der Spinup-Cycles? Da sind seitens der Hersteller 50000 garantiert. Das muss man erstmal schaffen, bei 5 Jahren Garantiezeitraum wären das 10000 pro Jahr, das macht ca 27 pro Tag! Quote Link to comment
hawihoney Posted August 5, 2022 Share Posted August 5, 2022 (edited) 1 hour ago, Patty92 said: - Eltern gucken einen Film von 10.00 - 12.00 - Ruhezeit - Ich gucke von 16.00 - 18.00 Serie - Ruhezeit - Ich gucke erneut Serie von 20.00 - 22.00 Dein/Euer Sehverhalten lässt sich in ein solcher Raster pressen? Und wofür dann der ganze Zinober? Für ein paar Watt? Womit streamst Du? Mit Plex? Plex Streams lassen sich mit ein paar Zeilen Python Skript analysieren. Wie viele Streams? Lokales oder remote Playback? Ist es ein Film, eine Episode, ein Musiktitel? Welche Datei (Disk)? Da würde ich ansetzen. Kannst Dich benachrichtigen lassen um manuell runterzufahren oder -raufzufahren oder Spinup-/-down automatisiert durchzuführen. Letzteres habe ich noch nie gemacht, ich weiß auch nicht wie oder ob es geht. Ich tippe aber mal, dass man das hinbekommen könnte. Edited August 5, 2022 by hawihoney Quote Link to comment
mgutt Posted August 6, 2022 Share Posted August 6, 2022 On 8/3/2022 at 1:24 AM, Patty92 said: vielleicht über User Script lösen. Würde ich vermutlich so machen. Passende Cronzeit wählen und einen Sektor von der Disk lesen: dd if=/dev/sde of=/dev/null bs=512 count=1 iflag=direct Das "sde" steht im Dashboard bei der entsprechenden Disk. Kann zb auch "sdc" sein, je nachdem welche Disk anfahren soll. On 8/3/2022 at 1:24 AM, Patty92 said: Eine andere Idee wäre zu prüfen ob eine Platte aktiv ist, wenn ja, löse z.B. aller 25 Minuten einen "Lesebefehl" auf der Platte aus Das macht keinen Sinn. Aktiv heißt ja jemand liest Alternativ könnte man auch auf dem Client den regelmäßigen Lesezugriff auslösen. Kommt aber darauf an was für ein Client das ist. Zb Windows könnte über SMB alle 15 Minuten eine leere Datei überschreiben. Letzte Lösung: Größere SSD kaufen? Quote Link to comment
Patty92 Posted August 6, 2022 Author Share Posted August 6, 2022 Danke euch zunächst für euer Feedback. 22 hours ago, jj1987 said: Wozu überhaupt das ganze? Hast du Angst wegen der Spinup-Cycles? Da sind seitens der Hersteller 50000 garantiert. Das muss man erstmal schaffen, bei 5 Jahren Garantiezeitraum wären das 10000 pro Jahr, das macht ca 27 pro Tag! So hätte ich das natürlich auch sehen können, dann sind die 3-4 Spinups, die es bei mir werden könnten natürlich ein Witz. 21 hours ago, hawihoney said: Dein/Euer Sehverhalten lässt sich in ein solcher Raster pressen? Und wofür dann der ganze Zinober? Für ein paar Watt? Nein, an sich nicht, das war jetzt wirklich nur ein Beispiel wie es aussehen könnte. Mir ging es hier wirklich um den Spinup Count, aber durch die Erläuterung von @jj1987 sollte ich hier vielleicht einfach mal einen Gang runter schalten. ^^ 2 hours ago, mgutt said: dd if=/dev/sde of=/dev/null bs=512 count=1 Das geht in die Richtung, wie ich es mir vorgestellt hatte 😀 Im Netz habe ich noch „hdparm“ gefunden, sodass ich im Vorfeld prüfen kann, ob die Platte aktiv ist oder nicht. … naja wie oben schon gesagt, habe ich das aber wohl auch etwas zu verbissen gesehen. Die 3 - 4 Spindowns die am Tag zu Stande kommen könnten werde ich erstmal so hinnehmen. Aus Neugier werde ich es demnächst mal mit dem Ansatz von @mgutt probieren. Nochmals großen Dank an euch und ein schönen Wochenende, wünscht Patty Quote Link to comment
mgutt Posted August 6, 2022 Share Posted August 6, 2022 15 minutes ago, Patty92 said: Im Netz habe ich noch „hdparm“ gefunden, sodass ich im Vorfeld prüfen kann, ob die Platte aktiv ist oder nicht. Was soll das bringen? "Active" heißt, dass der Kopf in Bewegung ist. Also gerade Dateien gelesen oder geschrieben werden. In dem Zustand wird die Disk von Unraid ja eh nicht in den Spindown versetzt. Wenn der Kopf dagegen parkt und in "Idle" geht, fängt quasi der Countdown von Unraid an. Aber auch das zu wissen bringt dir nichts, weil der ja bei Aktivität ständig zwischen Active und Idle wechselt. Je nach HDD Modell parkt der Kopf bei Inaktivität nach 1 bis 10 Minuten. Bei Seagate zB nach 2 Minuten: Also einfach einen Sektor lesen ist schon ausreichend um den Countdown von Unraid zurückzusetzen. So viel ich weiß nutzt Unraid den Read/Write Zähler der HDD als Trigger und nicht den Active/Idle Zustand: Ich glaube der Wert kommt aus Unraids fuse.sshfs, bin ich aber nicht sicher. Quote Link to comment
Patty92 Posted August 8, 2022 Author Share Posted August 8, 2022 (edited) Ich habe mal eine "kleine / alte" Platte zum probieren per UD angeschlossen. dd if=/dev/sdd of=/dev/null bs=512 count=1 Weckt zwar die Platte auf, setzt aber nicht den Countdown zurück und die Platte geht wieder in den Spindown. In einem anderen Beitrag habe ich doch noch eine ähnliche Konstellation gefunden und es wurde folgender Vorschlag erwähnt: smartctl -a /dev/sdd > /dev/null Leider hier das gleiche, ist die Platte im Standby wird diese durch den Befehl zwar geweckt und ist aktiv, führe ich den Befehl dann aber ein paar Minuten später erneut aus setzt das nicht den Countdown zurück. Ich dachte mir noch, man könnte ja versuchen eine Datei zu lesen: cat "/mnt/disks/xxxxxxxx/Dokumente/Beispiel.txt" ..leider brachte das aber auch nicht den gewünschten Erfolg. Hier noch kurz eine Zusammenfassung, wie das ganze ungefähr aussah: # Standard Datentäger Ruhezustandsverzögerung: 15 Minuten # Beispiel 1 14.45 : SpinUp HDD (sdd) - manuell 14:51 : dd if=/dev/sdd of=/dev/null bs=512 count=1 15.00 : SpinDown HDD (sdd) # Beispiel 2 15.03 : SpinUp HDD (sdd) - manuell 15:07 : smartctl -a /dev/sdd > /dev/null 15.18 : SpinDown HDD (sdd) # Beispiel 3 15.25 : SpinUp HDD (sdd) - manuell 15:29 : cat "/mnt/disks/xxxxxxxx/Dokumente/Beispiel.txt" 15.40 : SpinDown HDD (sdd) # Beispiel 4 15.45 : SpinUp HDD (sdd) - mit Befehl (dd if=/dev/sdd of=/dev/null bs=512 count=1) 15:49 : dd if=/dev/sdd of=/dev/null bs=512 count=1 16.00 : SpinDown HDD (sdd) # Beispiel 5 16.05 : SpinUp HDD (sdd) - mit Befehl (smartctl -a /dev/sdd > /dev/null) 16:07 : smartctl -a /dev/sdd > /dev/null 16.20 : SpinDown HDD (sdd) Vielleicht ist es noch von Relevanz, das sich der Read / Write Zähler nicht verändert hat und die Werte bei bei allen 3 Befehlen nicht "hochgezählt" haben. Edited August 8, 2022 by Patty92 Quote Link to comment
mgutt Posted August 16, 2022 Share Posted August 16, 2022 Ich habe das Kommando angepasst: dd if=/dev/sde of=/dev/null bs=512 count=1 oflag=direct Durch oflag=direct wird RAM Caching umgangen. 1 Quote Link to comment
Patty92 Posted August 16, 2022 Author Share Posted August 16, 2022 Sehr geil, Riesen Dank @mgutt werde ich morgen mal testen. Quote Link to comment
Patty92 Posted August 17, 2022 Author Share Posted August 17, 2022 16 hours ago, mgutt said: dd if=/dev/sde of=/dev/null bs=512 count=1 oflag=direct Bei diesem Befehl kommt es leider zum Fehler: "dd: failed to open '/dev/null': Invalid argument" Quote Link to comment
Crovaxon Posted August 17, 2022 Share Posted August 17, 2022 (edited) 11 minutes ago, Patty92 said: Bei diesem Befehl kommt es leider zum Fehler: "dd: failed to open '/dev/null': Invalid argument" Statt oflag=direct sollte es wahrscheinlich iflag=direct heißen, oflag betrifft den output, iflag den input und es ist ja der input der nicht aus dem cache kommen soll, sondern direkt von der Festplatte. Edited August 17, 2022 by Crovaxon typo 1 Quote Link to comment
Patty92 Posted August 17, 2022 Author Share Posted August 17, 2022 Hey, danke für den Hinweis. 🙂 Der Befehl hat als solches funktioniert, aber leider das gleiche Ergebnis. 1x funktioniert es, danach nicht mehr. Quote Link to comment
mgutt Posted August 17, 2022 Share Posted August 17, 2022 Ok, dann versuch mal so: dd if="$(find /mnt/disk1 -type f 2>/dev/null | head -n 1)" of=/dev/null count=1 iflag=direct In dem Fall sucht "find" nach einer Datei und genau aus dieser werden die ersten 512 Bytes gelesen. Und iflag erzwingt wie gehabt, dass der RAM genutzt wird und da wir /mnt/disk1 als Quelle nutzen, hoffe ich, dass das diesmal den Counter hochsetzt. Quote Link to comment
Patty92 Posted August 17, 2022 Author Share Posted August 17, 2022 38 minutes ago, mgutt said: dd if="$(find /mnt/disk1 -type f 2>/dev/null | head -n 1)" of=/dev/null count=1 iflag=direct .. auch hier kam es wieder zum Standby. Quote Link to comment
Patty92 Posted November 29, 2022 Author Share Posted November 29, 2022 Ich habe jetzt aus Neugier nochmal nachgesehen / gesucht und habe unter /boot/config/disk.cfg in meinem Fall den Wert diskSpindownDelay.1="1" gefunden. Wäre es möglich, über Script den Wert auf "0" zu setzen für "Nie" und später dann zurück auf "1" für "1 Stunde" ? Danke euch im Voraus. Grüße Patty Quote Link to comment
mgutt Posted November 29, 2022 Share Posted November 29, 2022 So sollte es gehen: sed -i 's/diskSpindownDelay.1="1"/diskSpindownDelay.1="0"/g' /boot/config/disk.cfg Alternativ könnten wir einen zufälligen Sektor von der Platte auslesen. Quote Link to comment
Patty92 Posted December 4, 2022 Author Share Posted December 4, 2022 On 11/29/2022 at 9:57 PM, mgutt said: sed -i 's/diskSpindownDelay.1="1"/diskSpindownDelay.1="0"/g' /boot/config/disk.cfg Der Befehl als solches hat wunderbar funktioniert. Der aktualisierte Wert steht zwar dann in der .cfg - an der HDD selber steht aber noch der ursprüngliche Wert. Unabhängig von dem Befehl und dem Vorhaben: Ändert man den Wert über die WebGui, sieht man folgende Einträge: On 11/29/2022 at 9:57 PM, mgutt said: Alternativ könnten wir einen zufälligen Sektor von der Platte auslesen. Wenn ich mich nicht irre, haben wir das doch "weiter oben" schon einmal versucht oder? 😊 Quote Link to comment
mgutt Posted December 4, 2022 Share Posted December 4, 2022 1 hour ago, Patty92 said: Wenn ich mich nicht irre, haben wir das doch "weiter oben" schon einmal versucht oder? 😊 Ne, bisher nur 512 Bytes von einer bestimmten Stelle. Wir müssen zählen wie viele Bytes die Platte hat und dann mit der skip Option ab einer zufälligen Stelle was auslesen: https://superuser.com/a/721011/129262 1 hour ago, Patty92 said: Der aktualisierte Wert steht zwar dann in der .cfg - an der HDD selber steht aber noch der ursprüngliche Wert. Ich denke der Index 1 bezieht sich auf Disk2 😉 Quote Link to comment
Patty92 Posted December 4, 2022 Author Share Posted December 4, 2022 1 hour ago, mgutt said: Ne, bisher nur 512 Bytes von einer bestimmten Stelle. Wir müssen zählen wie viele Bytes die Platte hat und dann mit der skip Option ab einer zufälligen Stelle was auslesen: https://superuser.com/a/721011/129262 OK, da muss ich mal gucken, das verstehe ich noch nicht so ganz 1 hour ago, mgutt said: Ich denke der Index 1 bezieht sich auf Disk2 😉 Das hatte ich im Vorfeld geprüft, hab jetzt aber nochmal geprüft Habe die Parity auf 8 Stunden eingestellt über die WebGui und den Datenträger 1 auf 7 Stunden, dann sieht man folgende Werte: diskSpindownDelay.0="8" diskSpindownDelay.1="7" Quote Link to comment
mgutt Posted December 4, 2022 Share Posted December 4, 2022 Ah ok. Also 0 ist Parity. Ok. Vermutlich lädt er die Configdatei wirklich nur 1x ein. Ich mein macht ja auch Sinn. Sonst würde Unraid ja ständig vom USB-Stick lesen. Mal sehen ob ich herausfinde, ob man das erneute Einlesen triggern kann... Quote Link to comment
mgutt Posted December 4, 2022 Share Posted December 4, 2022 Ich habe etwas gefunden: /var/local/emhttp/disks.ini Das ist die Stelle: Ich habe es dann so versucht: line_number=$(grep -nF -A40 '["disk1"]' /var/local/emhttp/disks.ini | grep -m1 spindownDelay | cut -d '-' -f 1) sed -i $line_number's/.*/spindownDelay="0"/' /var/local/emhttp/disks.ini Allerdings korrigiert Unraid die Datei innerhalb von Sekunden wieder 🤪 Dann habe ich den Wert über die GUI geändert und gesehen, dass er einen Request an tower/update.htm mit folgendem Inhalt sendet: diskComment.1=&diskSpindownDelay.1=2&diskWarning.1=&diskCritical.1=&changeDisk=Apply&csrf_token=898F9474254D4809 Die /usr/local/emhttp/update.php scheint das zu sein. Da werde ich allerdings nicht schlau draus, wie es ab da weitergeht. Also zurück zu der Idee einen zufälligen Block von der HDD zu lesen: block_count=$(blockdev --getsize /dev/sdd) block_random=$(shuf -i 0-$block_count -n 1) dd if=/dev/sdd of=/dev/null skip=$block_random count=1 2>/dev/null Natürlich vorausgesetzt sdd ist deine Disk 1. Quote Link to comment
Patty92 Posted December 5, 2022 Author Share Posted December 5, 2022 12 hours ago, mgutt said: Ich habe etwas gefunden: Ich habe es dann so versucht: Ich danke dir zunächst riesig für die Mühe. Dann war die Idee, den Wert mal "fix" zu ändern nichts. 12 hours ago, mgutt said: Also zurück zu der Idee einen zufälligen Block von der HDD zu lesen: block_count=$(blockdev --getsize /dev/sdd) block_random=$(shuf -i 0-$block_count -n 1) dd if=/dev/sdd of=/dev/null skip=$block_random count=1 2>/dev/null Ich habe eine UD-Platte angehangen (für Test) und das Script für diese Platte eingestellt: Platte nach Standard in SpinDown (15 Minuten) CronJob für Script, aller 14 Minuten Dec 5 10:19:24 HOMESERVER emhttpd: spinning up /dev/sdd Dec 5 10:19:26 HOMESERVER emhttpd: read SMART /dev/sdd Dec 5 10:28:54 HOMESERVER emhttpd: cmd: /usr/local/emhttp/plugins/user.scripts/showLog.php _HDD_aktivitaet Dec 5 10:34:25 HOMESERVER emhttpd: spinning down /dev/sdd Leider auch kein Erfolg. Quote Link to comment
mgutt Posted December 5, 2022 Share Posted December 5, 2022 Check ich nicht. Erhöht sich durch das zufällige Lesen denn nicht der Lesezähler? Stell mal auf minütlich und prüfe mal den Counter im Dashboard, ob der Wert ansteigt. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.