easyVDR

Normale Version: Abschaltung von Festplatten fehlerhaft
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Wie schon erwähnt, lege ich Wert auf Stromeinsparungen. Dabei ist mir aufgefallen, dass die Festplattenabschaltung nicht richtig funktioniert.

Bei den Festplatten-Einstellungen im EasyPortal kann man die Abschaltzeiten angeben ("nicht abschalten", "5 Minuten", etc.). Der angegebene Wert in Minuten wird aber nicht richtig umgesetzt, er wird nämlich als Sekunden interpretiert. Statt nach 5 Minuten geht die Festplatte nach 5 Sekunden in den Standby. Wenn es dumm läuft, kann das nachteilige Auswirkungen auf die Lebensdauer der Festplatte haben. Insbesondere, wenn mal als Systemplatte eine SSD hat, und die Videodaten auf einer Festplatte.

Der Fehler liegt in einer inkonsistenten Verwendung der Variablen HDDSPINDOWNTIME. Nebenbemerkung: Eine weitere Inkonsistenz habe ich im Post Inkonsistente Variablennamen für Wakeup/Poweroff-Einstellungen beschrieben.

/var/lib/vdr/sysconfig
Code:
HDDSPINDOWNTIME="5 Minuten"
HDDSPINDOWNDISKS="/dev/sdb"

/etc/vdr/easyvdr-power-save.conf
Code:
# Festplatten abschalten
#Geräte Namen /dev/sdx /dev/sdy
HDDSPINDOWNDISK="/dev/sda /dev/sdb"
#0 Platte läuft immer oder Sekunden bis zu Standby der Platte
HDDSPINDOWNTIME=900

/usr/lib/vdr/easyvdr-power-save
Code:
###############################################
#Festplatten parken
################### Easyvdr Systemconf einlesen ?
if [ -e /usr/lib/vdr/easyvdr-config-loader ];then
. /usr/lib/vdr/easyvdr-config-loader                ## Easyvdr conf einlesen
if [ "$HDDSPINDOWNTIME" != "nicht abschalten" ];then
 HDDSPINDOWNTIME=$(echo $HDDSPINDOWNTIME | cut -d" " -f1)
 for DISK in $HDDSPINDOWNDISK
  do
   $LOGGER "set DISK: $DISK sleep timer $HDDSPINDOWNTIME s"
   hdparm -S $(($HDDSPINDOWNTIME/5)) $DISK
  done
fi
fi
Für die Abschaltung wird ein Wert in Sekunden erwartet. Die Konfigurationsdatei easyvdr-power-save.conf wird gar nicht benutzt, sondern sysconfig.

Das Setzen der Werte geschieht in /var/www/systemeinstellungen.php (zuständig für Web-Frontend)  oder über das VDR Menü definiert in /var/lib/vdr/plugins/setup/vdr-setup.xml.

So wie es ausschaut, passt man wohl am besten das Skript an und interpretiert den Wert der Variablen als Minuten. Also sowas wie:
Code:
HDDSPINDOWNTIME=$(echo $HDDSPINDOWNTIME | cut -d" " -f1)
HDDSPINDOWNSEC=$((HDDSPINDOWNSEC*12))
for DISK in $HDDSPINDOWNDISK
do
 $LOGGER "set DISK: $DISK sleep timer $HDDSPINDOWNSEC s"
 hdparm -S $HDDSPINDOWNSEC $DISK
done
Bliebe noch das Zusammenspiel mit easyvdr-power-save.conf.
Hi,

mir scheinen die Rückmeldungen auf den ersten Blick plausibel. Ich schaue mir diese am Wochenende genauer an und paketiere vermutlich dann zum Test.

Danke erst Mal !
Martin, vielen Dank schon mal.

Der Korrekturvorschlag stimmt so nicht, da haben sich Tippfehler eingeschlichen. Muss so heißen:
Code:
HDDSPINDOWNTIME=$(echo $HDDSPINDOWNTIME | cut -d" " -f1)
HDDSPINDOWNPAR=$((HDDSPINDOWNTIME*12))
for DISK in $HDDSPINDOWNDISK
do
$LOGGER "set DISK: $DISK sleep timer $HDDSPINDOWNTIME min"
hdparm -S $HDDSPINDOWNPAR $DISK
done
Danke für den Input!

Kannst Du bitte das mal kurz gegenlesen und aus Base-Testing PPA testen ?
Hi,

Danke für das Fehler finden!!!! K+!



@Martin: evtl. auch default aktivieren? War doch früher auch...

MfG,
Stefan
Hier kommt das Testresultat.

Zusammenfassung: Liste der abzuschaltenden Platten ist falsch, Abschaltung funktioniert.
Fehlerursache: Verwechslung zweier Variablen HDDSPINDOWNDISK un HDDSPINDOWNDISKS.

Der Testverlauf im Einzelnen...

Upgrade von Stable nach Test: cat /var/log/apt/history.log
Code:
Start-Date: 2017-01-14  14:16:03
Commandline: apt-get upgrade
Upgrade: bind9-host:amd64 (9.9.5.dfsg-3ubuntu0.10, 9.9.5.dfsg-3ubuntu0.11), liblwres90:amd64 (9.9.5.dfsg-3ubuntu0.10, 9.9.5.dfsg-3ubuntu0.11), vainfo:amd64 (1.7.4~git20161229-0easyVDR0~trusty, 1.7.4~git20170111-0easyVDR0~trusty), initramfs-tools-bin:amd64 (0.103ubuntu4.5, 0.103ubuntu4.6), libdns100:amd64 (9.9.5.dfsg-3ubuntu0.10, 9.9.5.dfsg-3ubuntu0.11), libisccfg90:amd64 (9.9.5.dfsg-3ubuntu0.10, 9.9.5.dfsg-3ubuntu0.11), libbind9-90:amd64 (9.9.5.dfsg-3ubuntu0.10, 9.9.5.dfsg-3ubuntu0.11), easyvdr-addon-program-changer:amd64 (0.6.0-10easyVDR18~trusty, 0.6.0-10easyVDR19~trusty), easyvdr:amd64 (3.0.11-0easyVDR6~trusty, 3.0.12-1easyVDR0~trusty), dnsutils:amd64 (9.9.5.dfsg-3ubuntu0.10, 9.9.5.dfsg-3ubuntu0.11), libva1:amd64 (1.7.4~git20161229-0easyVDR0~trusty, 1.7.4~git20170111-0easyVDR0~trusty), initramfs-tools:amd64 (0.103ubuntu4.5, 0.103ubuntu4.6), libvncserver0:amd64 (0.9.9+dfsg-1ubuntu1.1, 0.9.9+dfsg-1ubuntu1.2), va-driver-all:amd64 (1.7.4~git20161229-0easyVDR0~trusty, 1.7.4~git20170111-0easyVDR0~trusty), easyvdr-setup:amd64 (3.0.14-0easyVDR2~trusty, 3.0.14-0easyVDR7~trusty), libva-wayland1:amd64 (1.7.4~git20161229-0easyVDR0~trusty, 1.7.4~git20170111-0easyVDR0~trusty), libva-x11-1:amd64 (1.7.4~git20161229-0easyVDR0~trusty, 1.7.4~git20170111-0easyVDR0~trusty), easyvdr-addon-acpi-wakeup:amd64 (0.2.0-4easyVDR4~trusty, 0.4.0-0easyVDR0~trusty), libva-intel-vaapi-driver:amd64 (1.7.4~git20170101-0easyVDR0~trusty, 1.8.0.pre1~git20170111-0easyVDR0~trusty), libva-drm1:amd64 (1.7.4~git20161229-0easyVDR0~trusty, 1.7.4~git20170111-0easyVDR0~trusty), linux-libc-dev:amd64 (3.13.0-106.153, 3.13.0-107.154), libva-glx1:amd64 (1.7.4~git20161229-0easyVDR0~trusty, 1.7.4~git20170111-0easyVDR0~trusty), libisccc90:amd64 (9.9.5.dfsg-3ubuntu0.10, 9.9.5.dfsg-3ubuntu0.11), libisc95:amd64 (9.9.5.dfsg-3ubuntu0.10, 9.9.5.dfsg-3ubuntu0.11)
End-Date: 2017-01-14  14:17:33

Im EasyPortal eingestellt: /dev/sdb nach 5 Minuten.
Code:
[email protected]:~$ grep HDDSPINDOWN /var/lib/vdr/sysconfig
HDDSPINDOWNTIME="5 Minuten"
HDDSPINDOWNDISKS="/dev/sdb"

Nach dem Booten:
Code:
[email protected]:~$ grep "easyvdr-power-save: set DISK:" /var/log/syslog
Jan 14 14:28:17 easyVDR easyvdr-power-save: set DISK: /dev/sda sleep timer 5 min
Jan 14 14:28:17 easyVDR easyvdr-power-save: set DISK: /dev/sdb sleep timer 5 min
Hoppla, zwei Festplatten. Das ist das Resultat der Variableninkonsistenz.

Die Abschaltung klappt:
Code:
[email protected]:~$ mount | grep /dev/sdb; sudo touch /media/easyvdr01/video0/.update; sync; sudo hdparm -C /dev/sdb; sleep 4m; sudo hdparm -C /dev/sdb; sleep 3m; sudo hdparm -C /dev/sdb
/dev/sdb1 on /media/easyvdr01 type xfs (rw,noatime)

/dev/sdb:
drive state is:  active/idle

/dev/sdb:
drive state is:  active/idle

/dev/sdb:
drive state is:  standby

Änderungsvorschlag:
  • Nur HDDSPINDOWNDISKS verwenden.
  • Die Variablenbelegung für HDDSPINDOWNDISK und HDDSPINDOWNTIME aus /etc/vdr/easyvdr-power-save.conf und /usr/lib/vdr/easyvdr-power-save (echo ...) löschen. Achtung: Da gibt es noch was mit echo "WAIT=\$((\$HDDSPINDOWNTIME-30))" >>$POWER_SAVE_CONF.
Noch ein Feedback: 

Zitat:Hallo Martin

Ich denke das passt so nicht ...

Values from 1
to 240 specify multiples of 5 seconds

Da fehlt ein :5, und hast du geprüft ob man im OSD auch Min eingibt?

Gruß
Peter
> Da fehlt ein :5
Hoffe nicht. Statt dessen wird mal 12 multipliziert (5*12 sollte 60 geben...:-))

>hast du geprüft ob man im OSD auch Min eingibt?

das ist so !
Zitat:Die Variablenbelegung für HDDSPINDOWNDISK und HDDSPINDOWNTIME aus /etc/vdr/easyvdr-power-save.conf und /usr/lib/vdr/easyvdr-power-save (echo ...) löschen. Achtung: Da gibt es noch was mit echo "WAIT=\$((\$HDDSPINDOWNTIME-30))" >>$POWER_SAVE_CONF.
Nein nichts löschen wenn dann anpassen, das Skript verwende ich auf allen meinen Linux/FreeNas PC's
Wenn es keine Sysconf gibt wird ja die Powersave.conf verwendet.
Wobei ich die Festplatten nicht abschalte, dann ist es mir eigentlich doch egal, kann man auch löschen.
Gruß
Bleifuss
Zusammengefasst:
-jeder easyVDR Rechner hat eine sysconfig Datei
-auch Peter stört die Änderung nicht

Ich habe mal die *DISK durch *DISKS ersetzt. Die Einträge in die Powersave.conf geschehen nicht mehr.

Das ganze hätte man schöner machen können, da das geänderte Script von 2014 ist und man ansonsten wesentlich mehr Pakete anpacken müsste habe ich mich für diesen Weg entschieden. Natürlich ist auch der umgekehrte Weg möglich, dann aber bevorzugt bei der nächsten easyVDR Version.

PS: Was ich gelernt habe: So ein Thema wäre in einem "eigenen Branch im GIT bis zum erfolgreichen Test" besser aufgehoben gewesen...


PPS: Bitte nochmals um Test so ca. in 30 Minuten frühestens. http://www.easy-vdr.de/git/?p=trusty-ng/...042c477a86
So siehts aus...

Änderungen zu 3.0 Stable, cat /var/log/apt/history.log:
Code:
Start-Date: 2017-01-18  22:23:30
Commandline: synaptic
Upgrade: easyvdr-addon-program-changer:amd64 (0.6.0-10easyVDR18~trusty, 0.6.0-10easyVDR19~trusty), easyvdr:amd64 (3.0.11-0easyVDR6~trusty, 3.0.13-0easyVDR0~trusty), easyvdr-setup:amd64 (3.0.14-0easyVDR2~trusty, 3.0.14-0easyVDR7~trusty), easyvdr-addon-acpi-wakeup:amd64 (0.2.0-4easyVDR4~trusty, 0.4.0-0easyVDR0~trusty)
End-Date: 2017-01-18  22:24:13

Dann die Änderungen aus http://www.easy-vdr.de/git/?p=trusty-ng/...042c477a86 genommen.

Wie oben 5 Minuten für /dev/sdb eingestellt. Aber: Hierfür musste ich in /var/www/systemeinstellungen.php die Zeile exec("sudo $SH_EASYPORTAL setsysconfig HDDSPINDOWNDISKS '$HDDSPINDOWNDISKS'"); einfügen, sonst wurde die Änderung nicht übernommen. Das hat mich ziemlich verblüfft, weil das immer geklappt hat, und ich kann mir nicht erklären, warum das so war und sich jetzt anders verhält. Aber sonst funktionieren die Änderungen.

Verifikation:
Code:
[email protected]:~$ grep HDDSPINDOWN /var/lib/vdr/sysconfig
HDDSPINDOWNDISKS="/dev/sdb"
HDDSPINDOWNTIME="5 Minuten"
[email protected]:~$ grep "easyvdr-power-save: set DISK:" /var/log/syslog
Jan 18 22:55:28 easyVDR easyvdr-power-save: set DISK: /dev/sdb sleep timer 5 min
[email protected]:~$ mount | grep /dev/sdb; sudo touch /media/easyvdr01/video0/.update; sync; sudo hdparm -C /dev/sdb; sleep 4m; sudo hdparm -C /dev/sdb; sleep 3m; sudo hdparm -C /dev/sdb
/dev/sdb on /media/easyvdr01 type xfs (rw)

/dev/sdb:
drive state is:  active/idle

/dev/sdb:
drive state is:  active/idle

/dev/sdb:
drive state is:  standby
easyPortal baut gerade neu. (Der Änderungsvorschlag scheint mir plausibel)

Somit hoffe ich dass das letzte Test wird:
-Änderung per Portal
-Änderung per OSD
Code:
[email protected]:~$ cat /var/log/apt/history.log
Start-Date: 2017-01-20  22:54:38
Commandline: synaptic
Upgrade: easyvdr-addon-program-changer:amd64 (0.6.0-10easyVDR19~trusty, 0.6.0-10easyVDR20~trusty), easyvdr:amd64 (3.0.13-0easyVDR0~trusty, 3.0.13-0easyVDR1~trusty), easyportal:amd64 (0.5.36-2easyVDR1~trusty, 0.5.37-0easyVDR0~trusty)
End-Date: 2017-01-20  22:54:59

Per OSD und Portal getestet. Änderungen wurden in sysconfig übernommen (mit erwarteter Variablen), und auch später wieder in OSD und Portal angezeigt.

Funktionert also. Besten Dank! 

Das hatte ich mir auch nicht gedacht, was ich hier an Aktionen lostrete. Confused
Pardon.
Danke fürs Melden, Lösungsvorschläge und Testen!