Video Directory Scanner meldet Eingabe-/Ausgaberfehler für über NFS eingebundene Aufnahmen

  • Mittlerweile habe ich noch einen ganz anderen Verdacht: Kann es sein, dass der alte Server (Intel Pentium 4 541 3.20 GHz) für das Testsystem (Xeon E3-1226 v3 3.30 GHz) schlicht zu langsam liefert? Denn der Server wird nicht nur durch das Software-RAID belastet. Mehr Rechenleistung erfordert sicherlich mein selbstgeschriebenes vdrffs, das mittels FUSE die Partitionen des historischen verteilten VDR-Dateisystems zu einem zusammenfasst, das leicht per NFS exportiert werden kann. Für die RPi-2 MLD-Clients erfüllt vdrfffs seinen Zweck, aber die sind ja auch selbst hübsch langsam.

  • Hi,

    Du kennst das distributedvideodir Plugin?

    Gab gerade neue Version.

    MfG Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Du kennst das distributedvideodir Plugin?

    Ja, das Plugin ist auf dem Server auch im Einsatz.


    Im Unterschied zum distributesvideodir-Plugin ist vdrffs ein virtuelles Dateisystem. Damit kann ich ein in sich geschlosses Dateisytem exportieren, das die Partitionen des alten VDR-Dateisystems zusammenfasst. Es ist mir nämlich nie so recht gelungen, die einzelnen Partitionen so per NFS zu exportieren, dass die Links zwischen den Partitionen auf Client-Seite wieder funktioniert hätten. Außerdem erspart vdrffs die Rekonfiguration auf Server und Client, wenn eine Partition hinzukommt oder wegfällt. Und das distributedvideodir-Plugin gab es - zumindest damals - unter MLD nicht.


    Wenn ich wüsste, wie ich die einzelnen Video-Partitionen des Servers exportieren und auf dem Testsystem so importieren kann, dass die Links funktioneren, könnte ich auf dem Testsystem das distributedvideodir-Plugin benutzen und müsste nicht das vdrffs-Dateisystem des Servers benutzen.

  • Kann es sein, dass der alte Server (Intel Pentium 4 541 3.20 GHz) für das Testsystem (Xeon E3-1226 v3 3.30 GHz) schlicht zu langsam liefert?

    Eine ähnliche Vermutung hatte ich auch, die anderen Clients sind ja nicht besonders schnell.


    Es könnte durch das Setup sein, dass einfach zu viele Dateien auf einmal geöffnet sind.

    Durch das FUSE-Dateisystem wird es sicher eine gewisse Verzögerung geben, bis das Schliessen der Datei beim Kernel ankommt.

    Da es ja meist geht, sollte die Leistung eigentlich reichen, deshalb könnte ein erhöhen des Limits was bringen.

    How to Fix the ‘Too Many Open Files’ Error in Linux


    Wenn ich wüsste, wie ich die einzelnen Video-Partitionen des Servers exportieren und auf dem Testsystem so importieren kann, dass die Links funktioneren, könnte ich auf dem Testsystem das distributedvideodir-Plugin benutzen und müsste nicht das vdrffs-Dateisystem des Servers benutzen.

    In so einem Fall hätte ich aber auch eher auf das vdrffs-Dateisystem gesetzt.

    Einen Haufen NFS-Shares einbinden zu müssen finde ich nicht so begeisternd.

    Gruss
    SHF


  • Es könnte durch das Setup sein, dass einfach zu viele Dateien auf einmal geöffnet sind.

    Sehr gute Idee! In der Tat meldet nfsd auf dem Server den Fehler 24 ('Too many open files'), wenn auf dem Testsystem die Eingabe-/Ausgabefehler anfangen. Dass ich da nicht schon viel früher hingeschaut habe ...


    Ich habe daraufhin testweise das Soft-Limit für den vdrffs-Prozess von 1024 auf 4096 erhöht:

    Code
    root@spiro:~# prlimit --nofile --pid $(pidof /sbin/mount.vdrffs)
    RESOURCE DESCRIPTION              SOFT HARD UNITS
    NOFILE   max number of open files 1024 4096 files
    root@spiro:~# prlimit --nofile=4096 --pid $(pidof /sbin/mount.vdrffs)
    root@spiro:~# prlimit --nofile --pid $(pidof /sbin/mount.vdrffs)
    RESOURCE DESCRIPTION              SOFT HARD UNITS
    NOFILE   max number of open files 4096 4096 files

    Und beim nächsten Start des Testsystem gab es keine Fehler mehr, hurra!


    Leider weiß ich noch nicht, wie ich die Änderung am besten über den Neustart rette. Die von SHF verlinkte Anleitung und andere, die ich gefunden habe, beschreiben - soweit ich sie richtig verstanden habe -, wie man Begrenzungen für einen Benutzer oder einen Dienst dauerhaft ändern kann. Ich würde sie ja gerne für ein Programm ändern. Sicherlich könnte ich ein Skript schreiben, das nach mount läuft und letztlich obigen Befehl ausführt. Besser wäre wohl eine zusätzliche mount-Option, die das Limit mittels setrlimit(2) ändert. Aber vielleicht gibt es noch einen eleganteren Weg?

  • Ich würde sie ja gerne für ein Programm ändern.

    Das scheint generell etwas schwierig zu sein.

    Bei den Paketfiltern klappt das leider auch nicht (mehr) zuverlässig.


    Seinerzeit hatte ich das Limit für NoAD in dem Skript gesetzt, mit dem der VDR den Prozess startet.


    Wenn mount.vdrffs ein Skript ist, wird man die Änderung am zweckmässigsten wohl dort unterbringen.

    Oder man bastelt ein neues Skript mit gleichem Namen, was die Limits setzt und dann das eigentliche, umbenannte mount.vdrffs aufruft.

    Gruss
    SHF


  • Ich habe vdrffs um eine zusätzliche Mount-Option nofile (in Anlehung an prlimit(1) bzw. prlimit(2)) ergänzt. Seit ich die auf 4096 (statt des Standwerts 1024) gesetzt habe, tritt der Fehler nicht mehr auf.


    /sbin/mount.vdrffs ist ist ein Verweis auf das eigentliche Programm /bin/vdrffs. Diesen Eintrag benutzt mount, wenn /etc/fstab einen Eintrag enthält, der als Typ des Dateisystems vdrffs angibt.

Jetzt mitmachen!

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