PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Automatisches ausschalten



Payn
24.07.2009, 17:43
Hi,

es gibt ja die Funktion automatisches ausschalten in den Einstellungen.
Wenn ich aber jetzt z.B. mit Twonky gerade etwas streame oder irgendwas kopiere und dann die Zeit zum ausschalten kommt, dann geht die DS einfach aus und alles bricht ab.

Kann man es nicht irgendwie so machen, dass die DS erst wenn kein Traffic mehr ist aus geht, oder wenn kein Teilnehmer mehr verbunden ist oder so??

jahlives
24.07.2009, 18:01
Es kommt ein bisschen drauf an wie Synology das Herunterfahren geregelt hat. Nachdem das System den Befehl zum shutdown erhalten hat wird es mal ein kill Signal an die Prozesse schicken. Je nach verwendetem Signal Typ gibt das System den Diensten noch die Chance auf das Signal zu reagieren und ggf Daten zu speichern (TERM Signal). Oder das System sendet einen harten kill, worauf der Dienst nicht mehr reagieren kann und damit sofort abgeschossen wird. Das kennt man ja beim Herunterfahren von Windows auch: Erst gibt das System dem Prozess die Chance noch zu reagieren und erst nach einer gewissen Zeit kommt das Fenster wo du den Prozess gnadenlos abschiessen kannst.
Dein Wunsch nach Warten bis kein Traffic mehr wird sich kaum umsetzen lassen. Denn in einem LAN hast du eigentlich immer Traffic. Gerade wenn neben der DS noch Clients laufen. Jedes Datenpaket würde ja dann das Herunterfahren verhindern und die DS müsste u.U. sehr lange warten bis sie runterfahren könnte.

itari
24.07.2009, 18:11
Kann man es nicht irgendwie so machen, dass die DS erst wenn kein Traffic mehr ist aus geht, oder wenn kein Teilnehmer mehr verbunden ist oder so??

Es ist leider nicht immer ganz einfach, herauszubekommen, ob noch ein Teilnehmer verbunden ist, oder nicht. Auch ist es nicht immer einfach für einen Server festzustellen, dass gleich eine Pause ist ...

Die Frage ist, wie man das Problem intelligent lösen kann. Im Moment werden eigentlich alle Dienste gefragt, hast du was dagegen ausgemacht zu werden ... sie können also noch ihre Puffer leeren und sich dann verabschieden ... das kann natürlich mitten in einer Übertragung sein ... aber das ist halt das Schicksal eines Servers, dass eine Übertragung auch hinüber sein kann, er kann sich nie sicher sein, dass es noch weiter geht und er wartet halt blöd ... ohne eine Aussage darüber machen zu können, ob es nun vorbei ist oder nicht.

Im Grunde ist es ein Gedanken-Fehler, einen Server (und die DS hat ja eigentlich nur diese Aufgabe, eine Plattform für Server-Programme zu sein) überhaupt auszuschalten. Ein Server ist eigentlich so gestrickt, dass er immer läuft ...

Ich verstehe aber durchaus den Wunsch, eine DS abzuschalten und dabei nicht irgendwas zu unterbrechen. Ich will damit sagen, dass es mir sehr schwer fallen würde, die Bedingungen zu formulieren, unter denen das gut geht. Aber vielleicht können wir ja mal solche Ideen sammeln, wann eine DS gefahrlos ausgeschaltet werden kann ...

Warum so eine Sammlung? Wir können natürlich selbst das Herunterfahren initiieren und zeitlich steuern. Das Kommando zum Stoppen des Systems auf der Kommandozeile ist 'poweroff' . Der zeitlichen Teil kann über einen Cronjob laufen, z.B. täglich um 23 Uhr. Die Frage ist jetzt, was müsste man alles abprüfen, damit dann um 23 Uhr auch das Kommande 'poweroff' durchschlagend abgesetzt werden darf. Bedingungen müsste man nun formulieren ...

Itari

Payn
24.07.2009, 19:26
hm...das hört sich ja alles nicht so einfach an.

Also ich könnte mir vorstellen, das über den Traffic zu überwachen. Mir ist klar, das in einem Lan immer ein wenig Traffic herscht, aber weitaus weniger als wenn man z.B. irgendwas stream, downloaded..ect. z.B. könnte man schreiben:

Fällt der traffic unter z.B. 20 KB/s für 2 Minuten nach 23 Uhr, dann dass System ausschalten.


Oder:

Ist die twonkymediaserver Prozessorauslastung für 1 min nach 23 Uhr unter 1 %, dann das System ausschalten.


Oder wenn es irgendwie möglich ist:

Ist kein Client nach 23 Uhr für 1 min mehr verbunden, dann das System ausschalten.


irgendwie sowas in der Richte muss doch möglich sein

mfg Simon

itari
24.07.2009, 21:05
hm...das hört sich ja alles nicht so einfach an.

Also ich könnte mir vorstellen, das über den Traffic zu überwachen. Mir ist klar, das in einem Lan immer ein wenig Traffic herscht, aber weitaus weniger als wenn man z.B. irgendwas stream, downloaded..ect. z.B. könnte man schreiben:

Fällt der traffic unter z.B. 20 KB/s für 2 Minuten nach 23 Uhr, dann dass System ausschalten.

Das könnte gehen


Oder:

Ist die twonkymediaserver Prozessorauslastung für 1 min nach 23 Uhr unter 1 %, dann das System ausschalten.

Das geht bestimmt


Oder wenn es irgendwie möglich ist:

Ist kein Client nach 23 Uhr für 1 min mehr verbunden, dann das System ausschalten.

das ist schwierig, weil sich die Clients ja nicht bei jedem Protokoll anmelden (FTP wäre sowas). Bei Samba und bei NFS würde es gehen ... da kannst abfragen wer noch im Netz noch eine Share gemountet hat. Allerdings selbst wenn du auf dem PC nichts mehr mit der Share machen würdest, würde die DS dann nicht herunterfahren.

irgendwie sowas in der Richte muss doch möglich sein

mfg Simon

Ja super erstmal. An solche Bedingungen hatte ich gedacht. Mehr davon und noch feiner (im Sinne von mikroskopisch) gedacht. Ich werde mir mal dazu was am WoEnde überlegen.

Itari

jahlives
24.07.2009, 22:32
Die Frage ist jetzt, was müsste man alles abprüfen, damit dann um 23 Uhr auch das Kommande 'poweroff' durchschlagend abgesetzt werden darf. Bedingungen müsste man nun formulieren ...
Das ist ne gute Idee. Man könnte z.B. auch den Status des Prozesses auslesen. Wenn er schläft dann weiter mit shutdown.
Aber wie du halte ich es für sehr schwierig griffige Bedingungen zu finden. Könnte je nachdem dazu führen, dass das script dann endlos läuft. Was passiert z.B. wenn während dem das script mit dem shutdown wartet ein weiterer längerer cronjob anläuft (z.B. ein Backup)? Eventuell fährt dann das Teil gar nicht mehr runter...
Irgendwann muss der shutdown erzwungen werden und spätestens dann wird der Prozess eh abgeschossen
Gerade noch was bei ipkg gefunden. Das folgende Paket kann Daten von iptables aufzeichnen (setzt allerding z.Z. noch die Beta Firmware von Synology voraus)


ipac-ng (http://martybugs.net/linux/ipac.cgi) - 1.31-3 - iptables/ipchains based IP accounting package for Linux.
Das Teil wertet die Daten von iptables aus. Man könnte also das Teil nach sagen wir 23 Uhr regelmässig aufrufen (cron) und daraus die Datenmenge/s berechnen. Wenn die während 2min tiefer als 20 KB/s liegt, dann shutdown
Mittels


ipacsum (http://pwet.fr/man/linux/administration_systeme/ipacsum) -x
bekommt man die genauen Daten in Bytes und nicht formatiert in MB oder GB (bei GB würde es schwierig werden KBytes zu "sehen" ;) )
Das Teil hat auch eine Schnittstelle die Daten grafisch als Bildchen auszugeben

itari
25.07.2009, 08:58
Grundsätzlich halte ich es nicht für ein Problem, die DS anzulassen, wenn noch genügend Arbeit vorliegt ... das ist sicherlich für die meisten auch eine vernünftige Option. Man könnte das ja auch protokollieren, so dass man am nächsten Morgen feststellen kann, wer die Nachteule war und in der Disk-o mit dem Platten rumgemacht hat :D

Itari

Payn
25.07.2009, 09:42
also es gibt ja schon in de DS die funktion, das die Festplatten bei inaktivität, nach z.B. 1 Stunde, abgeschaltet werden. Das wär doch auch ein Anhaltspunkt für eine Bedingung.

z.B.

Automatisches ausschalten ist auf 23 Uhr. Danach muss die Festplatte sich in den Ruhezustand begeben. Und dann erst abschalten.

itari
25.07.2009, 10:20
also es gibt ja schon in de DS die funktion, das die Festplatten bei inaktivität, nach z.B. 1 Stunde, abgeschaltet werden. Das wär doch auch ein Anhaltspunkt für eine Bedingung.

z.B.

Automatisches ausschalten ist auf 23 Uhr. Danach muss die Festplatte sich in den Ruhezustand begeben. Und dann erst abschalten.

Ja nur leider kann man diese Funktion (spin-down) nicht abfragen, ohne die Platte wieder aufzuwecken ... ist eine Eigenschaft des Disks-Controllers. Es kommt einem so vor, als würde dem Disk-Controller gesagt werden: 'Hey schalte dich ab, wenn du nach 15 Minuten nichts Neues mehr in deinem Buffer findest, und denk dran, der letzte macht das Licht (die LED) aus und lass mich bloß in Ruhe mit dem Kram ...' :D

Also das mit dem Spin-down krieg ich leider nicht hin (zumindest hab ich mir mal die Zähne dran ausgebissen) ... aber vielleicht kennt sich da jemand besser aus ....

Itari

coolhot
25.07.2009, 14:26
Ich finde die Diskussion und schon geäußerten Ideen spannend und möchte auch gern dazu beitragen. Besonders interessieren würde mich das automatische Ausschalten bei Ende des Backups. Dann könnte ich die DS zeitgesteuert aufwachen lassen. Passend zur geplanten Backupzeit. 2 Minuten nach Backupstartzeit dann den cronjob für poweroff starten.

Der könnte wohl auch über die Prozessauslastung arbeiten also z.B.


If Backupprozess < 2% für mind. 5 Minuten then poweroff
(Das ist natürlich kein Programmcode, ich kann leider nicht programieren).

Welche Parameter stehen denn aus der DS-Umgebung zur Abfrage/Vergleich bereit?

- Systemzeit
- Systemdatum/Wochentag
- Systemlaufzeit
- Plattentemperatur
- Systemtemperatur (nicht alle Modelle?)
- Prozessorauslastung
- Samba/NFS-Connections


Gibt es so etwas wie CPU-Verbrauchszeit eines Prozess? Also z.B. smbd 01:20. Dann könnte man schauen ob sich die Zeit noch erhöht oder stagniert.

das http(s)-Protokoll ist meines Wissens stateless, d.h. eine Datenübertragung findet nur paketweise pro Request statt. Zwischendurch kann der Server den Status des Clients nicht feststellen.

Ein ereignisgesteuertes poweroff wäre auch für die Downloadstation hilfreich. Fahre herunter wenn alle Downloads fertig.

itari
25.07.2009, 15:16
Du kannst in einem PHP-Skript mindestens auf alle (nicht-interaktiven) Linux-Tools und Shell-Commands zurückgreifen (exec ()). Allerdings gibt es kaum Ereignisse (zumindest habe ich die Event-Steuerung bislang noch nicht verstanden, wenn es denn eine gibt) zum Abfragen. Deswegen kann man auch nicht feststellen, ob die Download-Station noch in Arbeit ist und noch etwas tun muss. Das muss irgendwie anders hinbekommen ... vielleicht so, dass man alle 2 Minuten abfragt, ob das tmp-Verzeichnis noch einen Inhalt hat oder sowas.

Leider kann man auch nicht sonderlich tief-schürfend auf den Verbrauch von Serverprozessen schauen, weil die auch wenn sie nichts ordentliches zu tun haben, halt ein wenig 'aktiv' sind.

Schaut euch an, was man mit 'top' alles sehen kann, sehr viel mehr wird es dann auch nicht sein. Die Prozessen an sich lassen sich gut im /proc-Verzeichnis studieren. Das kann man auch einbeziehen.

Itari

jahlives
25.07.2009, 15:22
@coolhot
Du könntest z.B. den Status des smbd auslesen. Dabei steht R für running und S für sleeping


ps | grep mbd
2155 root 1852 S /opt/sbin/nmbd -D --configfile=/opt/etc/samba/smb.con
2156 root 1440 S /opt/sbin/nmbd -D --configfile=/opt/etc/samba/smb.con
2171 root 2676 S /opt/sbin/smbd -D --configfile=/opt/etc/samba/smb.con
2197 root 1116 S /opt/sbin/smbd -D --configfile=/opt/etc/samba/smb.con
6666 root 220 S grep mbd


Welche Parameter stehen denn aus der DS-Umgebung zur Abfrage/Vergleich bereit?

- Systemzeit
- Systemdatum/Wochentag
- Systemlaufzeit
- Plattentemperatur
- Systemtemperatur (nicht alle Modelle?)
- Prozessorauslastung
- Samba/NFS-Connections
- date
- ebenfalls date
- uptime (leider ist dieser Command auf der DS nicht dabei, aber der Befehl htop kann die Uptime auch irgendwie auslesen und htop gibt es als ipkg)
- das liesse sich mit smartctl umsetzen
- die Systemtemp kann sicher auch irgendwie ausgelesen werden, wobei ch ned genau weiss wie
- zumindest die Prozessorzeiten kannst du mit times bekommen
- itari hat mal eine 3rd Party Application geschrieben wo man die aktiven Samba-Verbindungen anschauen kann (such mal im Forum)

Gruss

tobi

itari
25.07.2009, 15:33
itari hat mal eine 3rd Party Application geschrieben wo man die aktiven Samba-Verbindungen anschauen kann (such mal im Forum

ja, ich habe aber nichts weiter als net status share und net status sessions ausgewertet ... das würde doch sowieso jeder Windows-Admin so machen ... gut das Samba das Kommando net kennt ;)

Itari

jahlives
25.07.2009, 15:40
ja, ich habe aber nichts weiter als net status share und net status sessions ausgewertet ... das würde doch sowieso jeder Windows-Admin so machen ... gut das Samba das Kommando net kennt ;)

Itari
Das würde aber doch schon reichen. Bei net kriegst du doch jeweils die PID ebenfalls geliefert. Ich nehme mal an das ist die PID die man mit ps auch kriegen kann. Ob noch eine Samba Übertragung läuft könnte man doch so testen, indem man die PIDs von net abfragt und schaut ob die Prozesse noch Status R haben...
Meinst du das würde nicht gehen?

Gruss

tobi

itari
25.07.2009, 16:09
Meinst du das würde nicht gehen?

Keine Ahnung ;)

Der Prozess-Status sagt nur etwas darüber aus, wie das Process-Scheduling gerade verlaufen ist, nicht ob ein Prozess noch aktiv ist oder nicht. Schau dir noch mal genau in 'top' an, wie da der Status ist und wie trotzdem Prozesse aktiv sind. Es wäre also nicht sonderlich sinnvoll, diesen Status zu verwenden. Sinnvoller (aber auch nicht 100%tig zufriedenstellend) wäre die durchschnittliche Prozessaktivität (%CPU) , wie sie 'top' zur Verfügung stellt, auszuwerten.

Itari

coolhot
25.07.2009, 20:19
- uptime (leider ist dieser Command auf der DS nicht dabei, aber der Befehl htop kann die Uptime auch irgendwie auslesen und htop gibt es als ipkg)
tobi

Also bei mir klappt das:


DS> uptime
20:51:23 up 31 min, load average: 0.00, 0.00, 0.00Das liegt an den coreutils (ipkg). Die bringen viele nette Spielereien für die Kommandozeile mit. Mit stat ist die letzte Zugriffs-/Änderungszeit einer Datei ermittelbar.

Phil88
06.10.2009, 20:14
Hi,

Vielleicht könnte es man ja auch so regeln das man über das GUI IPs (IP = User) aus dem LAN eingeben kann, die die DS durch einen Ping abcheckt, wenn keine Antwort kommt dann kann die DS herunterfahren.

Phil

coolhot
08.10.2009, 13:18
Die Idee gefällt mir.

Es bräuchte also ein Script ungefähr so

ping xxx.xxx.xxx.xxx
if antwort = 100% packet loss then
shutdown

Kriegt das jemand hin?

itari
08.10.2009, 14:03
while TRUE ; do
RET1=$(ping -c 1 10.0.0.1 | tail -1 | awk '{print $7}')
RET2=$(ping -c 1 10.0.0.2 | tail -1 | awk '{print $7}')
if [ "$RET1" = "100%" -a "$RET1" = "100%" ] ; then shutdown ; fi
done

Möglicherweise sieht es so aus ...

Itari

coolhot
08.10.2009, 14:57
Wow, das war zügig. Ich hatte vergessen zu erwähnen das es wohl Sinn macht das Skript per crond z.B. alle 10 Minuten einzuplanen dann muss es nicht dauernd laufen. Als Signal für Shutdown würde ich 100% packet loss bei 4 Versuchen pro Host nehmen.

Kannst du deinen Vorschlag etwas erklären? Können Host1 und Host2 in Kombination (UND-Verknüpfung) abgefragt werden?

itari
09.10.2009, 10:00
Oh mein Tippfehler:

while TRUE ; do
RET1=$(ping -c 1 10.0.0.1 | tail -1 | awk '{print $7}')
RET2=$(ping -c 1 10.0.0.2 | tail -1 | awk '{print $7}')
if [ "$RET1" = "100%" -a "$RET2" = "100%" ] ; then shutdown ; fi
sleep 600 #600 Sekunden
done

Das ganze könnten man als /usr/syno/etc/rc.d/S99zzz.sh laufen lassen - sozusagen als Server ;)

Itari

5n00py
02.01.2010, 19:21
Ich finde das ein Interessantes Thema. Ich habe das geplante ausschalten aktiviert um 01 Uhr. Jedoch möchte ich so wie beschrieben das der Server checkt ob er niemand mehr den Medienserver Nutzt. Falls doch soll er alle 10 Minuten erneut fragen und wenn er nicht mehr benützt wird abschalten.

Reicht es nun eine solche Datei wie beschrieben im letzten Post anzulegen oder muss man da noch was einstellen?

greetz

coolhot
02.01.2010, 20:53
Du musst das Script natürlich auf deine IP-Adressen anpassen und entweder als Script per startup dauerernd laufen lassen (/usr/syno/etc/rc.d/S99zzz.sh) oder per crond zur gewünschten Zeit (z.B. 1 Uhr) einplanen.

Wenn du es einplanst können nach meinem Verständnis die Zeile 1, 5, 6 entfallen.

shutdown habe ich bei meiner DS nicht gefunden. Ich nehme auf der Kommandozeile immer poweroff.

Das geplante Ausschalten im DSM muss dann wohl aktiviert werden.

5n00py
02.01.2010, 23:40
Naja es soll eigentlich vor dem ersten ausschaltzeitpunkt den check machen, falls der Server da noch Benutzt werden würde halt alle 10 Minuten bis er letztendlich ausgeschaltet werden kann.

Kenne mich leider nicht so super aus, wüsste gerade wie man ein script über ssh einfügen kann, wäre nett wenn mir da jemand noch ein wenig mehr helfen kann, liegt bestimmt nicht nur in meinem Interesse :)

thedude
03.01.2010, 01:04
Im Forum (http://www.synology-forum.de/showpost.html?p=70884&postcount=2) hatte letztens einer 6W gemessen bei einer DS107 mit Platte in hibernation. Das würde bei 24/7 Betrieb und 20cent pro KWh ca. 10,5 EUR im Jahr kosten. Plus das was die DS mehr verbraucht wenn sie normal Läuft. Aber das täte sie ja auch ohne rauf und runter fahren. Dafür könnte mn den Kasten ja fast laufen lassen oder wie seht ihr das?

gruss
dude

itari
03.01.2010, 11:19
shutdown habe ich bei meiner DS nicht gefunden. Ich nehme auf der Kommandozeile immer poweroff.

'shutdown' wäre jetzt ein von dir erstelltes Skript, welches alle deine Server herunterfährt (z. B. /usr/syno/bin/syno_poweroff_task und viele sync's) und eventuell auch Dinge aufräumt ... Mit poweroff würde man dann die Sequenz tatsächlich beenden.

Itari

coolhot
03.01.2010, 22:05
Im Forum (http://www.synology-forum.de/showpost.html?p=70884&postcount=2) hatte letztens einer 6W gemessen bei einer DS107 mit Platte in hibernation. Das würde bei 24/7 Betrieb und 20cent pro KWh ca. 10,5 EUR im Jahr kosten. Plus das was die DS mehr verbraucht wenn sie normal Läuft. Aber das täte sie ja auch ohne rauf und runter fahren. Dafür könnte mn den Kasten ja fast laufen lassen oder wie seht ihr das?


Meine DS109 braucht so ~10-11W ohne HDD. Dazu kommt der GB-Switch mit 5,5W. Das muss ich nicht dauernd laufen haben. Neben Stromverbrauch auch auch Gründen der Sicherheit und Abnutzung.

Myrddin
07.09.2010, 20:50
So ich bin nun auch seit wenigen Tagen stolzer Besitzer einer DS210+ und jetzt will ich mich erstmal um die Verfügbarkeit im Netz kümmern. Ich schliesse mich coolhot mit "Neben Stromverbrauch auch auch Gründen der Sicherheit und Abnutzung." an. Ich möchte das die DS möglich bedarfsweise läuft. Und zwar ohne das ich mich um viel kümmern muß. Das WOL-Signal nach dem Ruhezustand beschäftigt mich bereits, das soll aber als Windows-Problem Andernorts diskutiert werden.

Ich möchte diesen Thread mal wieder beleben und fragen ob mir jemand (vieleicht itari :) ) helfen würde das Script ein wenig zu optimieren? Ich bin mit der Scriptsprache so garnicht vertraut und für den ein oder anderen ist das evtl. nur ein Handgriff oder zwei.

Den Ansatz per Ping die Geräte im Netz abzufragen finde ich genial. Jedoch ist mein Ansatz eher das bei längerer Inkativität die Abschaltung erfolgt. Vor allem möchte ich vermeiden das die Kiste ständig sinnlos hoch und runter fährt, nur weil mal 15 Minuten zufällig kein Gerät auf den Ping antwortet.

Also meine Idee wie folgt:

Es sinnvoll eher eine gewisse Zeitspanne der Inaktivität als Trigger zu nutzen, statt nur einer Momentaufnahme. Ich dachte mir das so dass zum Beispiel alle 15 Minuten die Pings abgesetzt werden. Sollte keine Aktivität bestehen wird ein Zähler erhöht. Gibt es eine Antwort auf einen Ping wird der Zähler zurückgesetzt. Erreicht der Zähler einen gewissen Wert ist das der Auslöser für den Shutdown.

Damit könnte man zum einen für die Intervalle die allgemeine Empfindlichkeit und in Kombination mit der Zählerschwelle die Zeitdauer der Inaktivität einstellen die zum Abschalten führt.

Das wäre jetzt für mich so ne echte Highlight-Lösung. :)

Ach und kann man die If-Abfrage einfach durch weiteres a- erweitern?

Hilf mir jemand? :)

Gruß
Myrddin

coolhot
07.09.2010, 21:31
@Myrddin: Kennst du den Thread (http://www.synology-forum.de/showthread.html?t=8769)?

Ist natürlich nicht genau das was du willst, aber da sind aktuell fähige Coder unterwegs.