Server wakeup + mount zusammen

  • Hallo,


    Zitat

    Original von jarny
    Leider geht das Skript immer noch nicht ;( Ich werd noch wahnsinnig!

    Bitte nicht durchdrehen. ;) Ich hab den Fehler gefunden, ich war schuld :D
    Ersetze

    Code
    if mount "${MOUNTPOINTS[$i]}" >/dev/null 2>&1; then

    durch

    Code
    if mount ${MOUNTPOINTS[$i]} >/dev/null 2>&1; then

    dann geht's.


    Zitat

    PS: Wenn du keine Lust mehr hast können wir es auch dabei belassen und ich nehm das alte Skript wieder, das läuft ja. Ich will deine Gedult nicht überstrapazieren.

    Nein, wenn ich mir schon solche Mühe mache, will ich auch das es läuft. ;D

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

  • Juhu! Es geht! :tup
    Das war der Fehler mit den Anführungszeichen.


    Die Sache mit dem Ping hab ich noch nicht eingebaut, aber schonmal trocken getestet und es funktioniert auch mit LinVDR Boardmitteln. Da ist ja nur der normale Ping dabei mit 10 Sekunden Timeout. Das ist aber nicht tragisch weil der Server eh länger braucht um hochzufahren.


    Ein erfolgreicher Ping sieht so aus:

    Code
    ping -c 1 -q 192.168.6.78
    PING 192.168.6.78 (192.168.6.78): 56 data bytes
    
    
    --- 192.168.6.78 ping statistics ---
    1 packets transmitted, 1 packets received, 0% packet loss
    round-trip min/avg/max = 0.9/0.9/0.9 ms


    ein erfolgloser so:

    Code
    ping -c 1 -q 192.168.6.79
    PING 192.168.6.79 (192.168.6.79): 56 data bytes
    
    
    --- 192.168.6.79 ping statistics ---
    1 packets transmitted, 0 packets received, 100% packet loss


    Nur noch eine Frage dazu, damit ich nicht dumm sterbe:
    Wieso funktioniert die If-Abfrage: if ! ping -c 1 -q $IP >/dev/null 2>&1; then
    Was wird da genau abgefragt/ausgewertet? Das Ping-Rückgabe- Ergebnis wird in /dev/null vernichtet aber was soll 2>&1 bedeuten?
    Gruß
    Jarny

    MLD 3.0.3 Server. Aufnahmen schaue ich mit einem separaten XBMC (OpenElec Distribution) im Wohnzimmer am 47 Zoll HD Fernseher

  • Also mein ping aus dem Paket iputils-ping kennt die Option -W und hat dann einen 1s Timeout.


    ">/dev/null 2>&1"


    Kurz gesagt: leite die Sandard-Ausgabe auf null, dann leite die Standard-Fehlerausgabe dahin, wohin die Standard-Ausgabe geht.


    "if" wertet hier den Returncode aus. Den kannst Du Dir nach jedem ausgeführten Befehl mit "echo $?" anzeigen lassen. 0 heisst kein Fehler, != 0 heisst igendwas stimmt nicht.

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

  • Zitat

    Original von vejoun
    ">/dev/null 2>&1"
    Kurz gesagt: leite die Sandard-Ausgabe auf null, dann leite die Standard-Fehlerausgabe dahin, wohin die Standard-Ausgabe geht.


    Ok, das ist das Geheimnis! Jetzt weiss ich Bescheid.


    Danke für deine Geduld und Hilfsbereitschaft.
    Gruß
    Jarny

    MLD 3.0.3 Server. Aufnahmen schaue ich mit einem separaten XBMC (OpenElec Distribution) im Wohnzimmer am 47 Zoll HD Fernseher

  • Zitat

    Original von jarny


    Die Sache mit dem Ping hab ich noch nicht eingebaut, aber schonmal trocken getestet und es funktioniert auch mit LinVDR Boardmitteln. Da ist ja nur der normale Ping dabei mit 10 Sekunden Timeout. Das ist aber nicht tragisch weil der Server eh länger braucht um hochzufahren.


    Ping braucht bei ausgeschaltetem Server immer 10 Sekunden, um festzustellen, dass der Server aus (nicht anpingbar) ist. Die 10 Sekunden addieren sich aber nochmal zur Bootzeit dazu. Mir persönlich sind das 10 Sekunden zu viel ;)
    Mit fping geht das ganze in wenigen Millisekunden, da ein Rechner in einem LAN normalerweise eine Latenz < 10ms hat (in meinem Beispiel oben hab ich 200ms, also 1/5s eingestellt, was schon sehr großzügig bemessen ist, aber für mich von der Wartezeit her gerade noch vertretbar :) ).

  • Ich habe das Skript zum Aufwecken und Mounten des Servers in die commands.conf eingetragen. Rufe ich den Befehl mehrmals hintereinander auf, werden die Shares mehrmals "übereinander" gemountet, d.h. zum Unmounten muss ich mehrmals "umount /share" aufrufen.
    Hier müsste/könnte man noch was Basteln, was ein mehrfaches aufrufen des Skripts verhindert. Eine Lock-Datei vielleicht? Dann müsste man aber auch beim VDR die Shutdown-Sequenz noch so anpassen, dass die Lock-Datei gelöscht wird, da sonst das nächste Mount fehlschlägt. Gibt es eine einfachere/bessere Möglichkeit, das mehrfache Mounten zu verhindern?



    Wie sieht es eigentlich mit dem abschalten des Servers per Fernbedienung aus?


    Momentan habe ich einen Eintrag in der commands.conf "ssh user@server halt", was den Server über SSH herunterfährt. SSH ist dabei so konfiguriert, dass eine Authentifizierung über Public Keys ohne zusätzliche Passwortabfrage erfolgt.


    Das funktioniert auch ganz gut, ABER bisher werden die Shares nicht vorher ge-unmounted (argh, schrecklich, dieses denglisch). Sollte man das zwecks Datenintegrität besser tun, oder ist das eigentlich egal, weil der VDR ja nur lesend auf die Shares zugreift?


    Gruß,
    fitzefatze

  • Zitat

    Original von fitzefatze
    Ich habe das Skript zum Aufwecken und Mounten des Servers in die commands.conf eingetragen. Rufe ich den Befehl mehrmals hintereinander auf, werden die Shares mehrmals "übereinander" gemountet, d.h. zum Unmounten muss ich mehrmals "umount /share" aufrufen.
    Hier müsste/könnte man noch was Basteln, was ein mehrfaches aufrufen des Skripts verhindert. Eine Lock-Datei vielleicht? Dann müsste man aber auch beim VDR die Shutdown-Sequenz noch so anpassen, dass die Lock-Datei gelöscht wird, da sonst das nächste Mount fehlschlägt. Gibt es eine einfachere/bessere Möglichkeit, das mehrfache Mounten zu verhindern?

    Ja, das ist mir auch schon aufgefallen. Ich frage mich, warum Linux einen Mehrfach-Mount überhaupt zulässt?
    Kann man vorher irgendwie mit: mount | grep 'gesuchter mountpoint' abfragen ob was zurückkommt oder nichts und dann entsprechend den Mount-Befehl ausführen.


    Zitat


    Wie sieht es eigentlich mit dem abschalten des Servers per Fernbedienung aus?


    Momentan habe ich einen Eintrag in der commands.conf "ssh user@server halt", was den Server über SSH herunterfährt. SSH ist dabei so konfiguriert, dass eine Authentifizierung über Public Keys ohne zusätzliche Passwortabfrage erfolgt.

    Das hab ich auch noch gesucht.


    Zitat


    Das funktioniert auch ganz gut, ABER bisher werden die Shares nicht vorher ge-unmounted (argh, schrecklich, dieses denglisch). Sollte man das zwecks Datenintegrität besser tun, oder ist das eigentlich egal, weil der VDR ja nur lesend auf die Shares zugreift?


    Gruß,
    fitzefatze

    Da soll sich mal ein Linuxexperte äussern. Generell sollte es aber nur bei Schreibzugriffen zu Problemen kommen. Beim lesenden Zugriff kann die Integrität ja nicht kaputt gehen. Trotzdem frag ich mich wie man sowas lösen würde.



    Gruß
    Jarny


    Grad noch gesehen:


    Zitat


    Ping braucht bei ausgeschaltetem Server immer 10 Sekunden, um festzustellen, dass der Server aus (nicht anpingbar) ist. Die 10 Sekunden addieren sich aber nochmal zur Bootzeit dazu. Mir persönlich sind das 10 Sekunden zu viel

    Nicht wenn man auf jeden Fall den wakeup vorher ausführt und dann sofort den Ping ausprobiert. ;)
    Wenn der Rechner schon lief kommt der Ping sofort zurück, falls der Rechner noch nicht lief bootet er sofort und der Ping vertrödelt 10 Sekunden in seinem Timeout während der Bootzeit.
    Ist zugegebenermaßen nicht ganz sauber.

    MLD 3.0.3 Server. Aufnahmen schaue ich mit einem separaten XBMC (OpenElec Distribution) im Wohnzimmer am 47 Zoll HD Fernseher

  • Zitat

    Original von jarny
    Nicht wenn man auf jeden Fall den wakeup vorher ausführt und dann sofort den Ping ausprobiert. ;)
    Wenn der Rechner schon lief kommt der Ping sofort zurück, falls der Rechner noch nicht lief bootet er sofort und der Ping vertrödelt 10 Sekunden in seinem Timeout während der Bootzeit.
    Ist zugegebenermaßen nicht ganz sauber.


    Nicht ganz sauber, aber durchaus raffiniert :D


    Wegen dem mehrfachen Mount habe ich eine Idee: Meine Shares sollen als Unterverzeichnis von /pub/mp3 und /pub/mplayer gemountet werden. Also könnte ich die Mountpoints (also Verzeichnisse) "dynamisch" erstellen vor dem Mount und beim Unmounten (bzw. Hochfahren, falls der VDR mal komplett abgeschmiert war) wieder löschen. Dann kann das Mount-Skript prüfen, ob die Verzeichnisse existieren und im Zweifelsfall einfach nichts tun.

  • Zitat

    Original von fitzefatze
    Wegen dem mehrfachen Mount habe ich eine Idee: Meine Shares sollen als Unterverzeichnis von /pub/mp3 und /pub/mplayer gemountet werden. Also könnte ich die Mountpoints (also Verzeichnisse) "dynamisch" erstellen vor dem Mount und beim Unmounten (bzw. Hochfahren, falls der VDR mal komplett abgeschmiert war) wieder löschen. Dann kann das Mount-Skript prüfen, ob die Verzeichnisse existieren und im Zweifelsfall einfach nichts tun.


    Ist nicht die Prüfung des Rückgabewerts von mount | grep 'gesuchter mountpoint' einfacher? Wenn Leerstring zurückkommt ist nicht gemountet andernfalls ist schon gemountet.
    Dafür wäre aber noch ne Liste mit den reinen Mountpoints (also ohne die ganzen Mountparameter und Freigaben) nötig. Das ist aber kein Problem.
    Ich kann das aber leider nicht in Shell-Skript implementieren.


    Aber wie gesagt, mir entzieht sich der Sinn von Mehrfach-Mounts. Warum lässt Linux sowas zu? Vielleicht gibts ja auch beim Mount-Befehl eine Option um einen Mehrfach-Mount nicht zuzulassen. Ich werd mal schauen.


    Gruß
    Jarny

    MLD 3.0.3 Server. Aufnahmen schaue ich mit einem separaten XBMC (OpenElec Distribution) im Wohnzimmer am 47 Zoll HD Fernseher

  • Ich weiss ja nicht was bei LinVDR so anders ist, normalerweise kann man nichts übereinander mounten:

    Code
    # mount /video1.0/
    mount: herakles.zh.local:/video1.0 already mounted or /video1.0 busy
    mount: according to mtab, herakles.zh.local:/video1.0 is already mounted on /video1.0


    Ich schau morgen mal und bau die Prüfung ins Script ein.

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

  • So, dieses Script erwartet nun aber das die Mounts ganz korrekt in /etc/fstab eingetragen sind. Alles andere macht das Script nur unnötig lang.

    Wenn ein mountpoint noch nicht existiert, wird er angelegt. Wenn bereits gemountet ist, wird das als erfolgreich gemountet gezählt und der nächste mountpoint wird genommen.


    Zu dem Thema Server herunterfahren per SSH, ich würde da einfach auf dem Server ein Script einsetzen, das beim herunterfahren die Clients connected und ihnen den unmount Befehl gibt. Da das aber ziemlich sicher nicht geht da die mounts busy sind, würde ich wenigstens die mounts auf readonly setzen. Dann kann wenigstens nichts mehr kaputtgehen. ;)
    Auf dem Client ausführen

    Code
    mount -o remount,ro /mountpoint

    VDR1: Gigabyte GA-M720-US3 (nVidia Corporation MCP78S [GeForce 8200]), Athlon II X2 240, 2GB RAM, Intel 82574L Gigabit, Debian Squeeze, Kernel 2.6.38.3 mit linux-media.tar.bz2 vom 20.04. 10:04, dvbhddevice fb6b1beedb72, VDR-1.7.22 (extension-Patch, 15 Plugins), epgsearch, extrecmenu, ...
    VDR2: Debian Etch, 2.6.21.3, K6-2 400, 192MB, NFS-Root, 466GiB über NFS, 1xNexus 2.1, 1xNova S, VDR-1.4.7
    Server: Debian Squeeze, 2.6.35.7, AMD X2 240e, 4GB, System: Raid1 2x500GB, Aufnahmen: Raid5 4TB + 1x 500GB, 1000MBit LAN
    Episodenlisten für epgsearch, VDRSeriesTimer

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!