DistributedVideoDirectory für VDR 2.2.0 und neuer

  • Geht das evtl abschaltbar?

    Plugin nicht installieren bzw. deaktivieren :mua


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Das Verteilen auf verschiedene Platten ist nicht mehr zeitgemäß, da kann ich Klaus verstehen, dass er es entfernt hat.

    Es ist wohl primär raus geflogen, weil es mit der neuen Verschiebefunktion kollidiert ist.

    Das Verschieben funktionierte anscheinend immer nur dank Workarounds an anderer Stelle und das auch nie wirklich korrekt, was die Dateinamen angeht.


    Dank SSDs ist die Funktion aber noch immer extrem interessant, finde ich und möchte sie nicht missen:

    Bei mir liegt video0 auf einer kleinen SSD-Partition (nur ein paar GB) und video1 auf der HDD.

    Da die video1 viel grösser als video0 ist, landen die Videos auf der HDD und Metadaten auf der SSD.

    Das ist sehr praktisch, da HDD nur gestartet wird, wenn wirklich auf eine Aufnahme läuft oder wiedergegeben wird und nicht schon beim öffnen der Liste. Das aktualisieren der umfangreichen Aufnahmenliste geht dank SSD natürlich auch in Sekunden.

    Geht das evtl abschaltbar?

    Das ist unnötig, da es (genau wie der VDR vor der Änderung) auch mit nur einen Video-Verzeichnis funktioniert.

    Die Routine, die die Verteilung der Aufnahmen regelt, habe ich übrigens nahezu 1:1 aus der videodir.c von VDR 2.1.1 übernommen, von mir stammt eigentlich nur der Teil, der die Links beim Verschieben korrigiert.

    Wenn es mit VDR 2.1.1 ging, sollte es jetzt auch mit dem Plugin gehen. Trotzdem empfehle ich das Plugin nur zu installieren, wenn man es benötigt. Anderenfalls ist es schlicht unnötig (sollte aber nicht schaden).



    Die API könnte man auch z.B. zum Cachen auf einer SSD bei der Aufnahme verwenden und die Videos dann im Block auf die HDD schreiben.

    Auch könnte man den Video-Verzeichnissen Prioritäten zuordnen, was es mal als Patch gab.

    Die Verteilungsfunktion ist auch nicht ideal, da Aufnahmen, die in mehrere Videos gesplittet werden, unter Umständen auf mehrere HDDs verstreut werden.


    Ich habe mich aber entschieden das alles in diesem Plugin nicht anzugehen, sondern mich auf das Wesentliche zu konzentrieren und mit so wenig Aufwand und Fehlerquellen wie möglich den alten Zustand wieder herzustellen.

    Gruss
    SHF


  • Hi,

    Genau das Aufnahmen nicht auf einer HDD liegen sondern Teil 1 auf Platte 1,Teil 2 auf Platte 2 und Teil 3 wieder auf Platte 1( bei 2 HDD s) meinte ich abschaltbar.

    Weil das nervt echt nur, Heutige Platten sind schnell genug dass das unnötig ist...

    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

  • Genau das Aufnahmen nicht auf einer HDD liegen sondern Teil 1 auf Platte 1,Teil 2 auf Platte 2 und Teil 3 wieder auf Platte 1( bei 2 HDD s) meinte ich abschaltbar.

    Weil das nervt echt nur, Heutige Platten sind schnell genug dass das unnötig ist...

    Wenn man das verhindern will kann man einfach Dateigrösse hoch setzen, so dass man unter normalen Umständen nur eine Videodatei pro Aufnahmen bekommt.

    Die Einstellung fahren derzeit wohl sowieso die meisten.



    Wenn eine neue Videodatei angelegt werden soll, wird schlicht geschaut auf welcher Platte der meiste Platz ist und die dort angelegt und nach video0 verlinkt. So entsteht bei etwa gleich vollen Partitionen das beschriebene Verhalten.

    Ich bezweifele aber, dass es jemals "Absicht" war. Es ist IMHO die einfachste (nur 5 Zeilen Code) sichere Möglichkeit die Aufnahmen zu verteilen.

    Wirklich geschickt ist das nämlich nie gewesen, der Defekt einer der Platten erwischt es so nämlich praktisch alle Aufnahmen.


    "Abschalten" lässt sich das leider nicht mal eben, weil alles andere wird viel aufwändiger wird.

    Man müsste zumindest suchen, wo die vorherige Datei der Aufnahme hin gegangen ist. Dann müsste man noch abschätzen, ob da immer noch genug Platz ist und dabei auch weitere laufende Aufnahmen berücksichtigen, die ja auch zusammengehalten werden sollen.

    Aus Zeitgründen habe ich mich entschieden das alles erstmal auszuklammer und das Vertielte-Videoverzeichnis in der alten Form wieder zum laufen zu bringen, so dass ich mein Setup auf VDR 2.2 und höher updaten kann.

    Gruss
    SHF


  • Ein super interessanter Beitrag - ich antworte hier nur, damit mir dieser Beitrag nicht verloren geht..

    Ich fand diese Verwaltung mehrerer Festplatten war eines *der* Features von VDR. Ein echter Verlust.



    Ich bastle gerade an einem ähnlichen Plugin, aber mit total anderem Zielund damit auch völlig anderer Implementation. Mein setup besteht aus einer SSD für das root Dateisystem und mehreren langsamen Terabyte Datengräbern. Und mich stört die verschachtelte Ordner Hierarchie der Aufnahmen. Mein Plugin wird deswegen eher darauf zielen, alle Meta-Daten auf der schnellen SSD zu lassen und ausschließlich die riesigen Video-Daten (*.{ts,vdr}) auszulagern, aber ohne Ordner-Baumstruktur und die Aufnahmen je disk alphabetisch. Disk1 'a'..'h', Disk2 'i'..'z' usw.

  • Interessanter Ansatz, hätte den Vorteil, dass sich die Aufnahmen leicht in einen Ordner verschieben lassen.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • wirbel:

    Schön, dass sich noch jemand anderes des Themas angenommen hat!


    Mein Plugin wird deswegen eher darauf zielen, alle Meta-Daten auf der schnellen SSD zu lassen und ausschließlich die riesigen Video-Daten (*.{ts,vdr}) auszulagern, aber ohne Ordner-Baumstruktur und die Aufnahmen je disk alphabetisch. Disk1 'a'..'h', Disk2 'i'..'z' usw.

    Interessante Idee.

    Da bin ich mal gespannt, wie du es löst, dass es keine Kollisionen gibt.

    Gruss
    SHF


  • Welche Art von Kollision meinst du? Jede Aufnahme hat immer noch einen eindeutigen Namen, auch in der flachen Struktur.


    Beispiel: 'MythBusters - Die Wissensjäger' aufgenommen am 21.04.2014 um 04:05:32 würde zu


    1) Anfangsbuchstabe der Aufnahme ist 'M' -> disk1 bzw. zweite Disk (´bei mir: /mnt/video0 .. /mnt/videoN).

    2) im Link zur ts Datei werden einige chars ersetzt, z.B. das '/' gegen eine Tilde '~'.

    3) alle Dateien wie bisher auf /video bis auf den Link zur ts Datei


    /video/MythBusters_-_Die_Wissensjäger/2014-04-21.04.05.32-0.rec/00001.ts -> /mnt/video1/MythBusters_-_Die_Wissensjäger~2014-04-21.04.05.32-0~00001.ts

    /video/MythBusters_-_Die_Wissensjäger/2014-04-21.04.05.32-0.rec/info

    /video/MythBusters_-_Die_Wissensjäger/2014-04-21.04.05.32-0.rec/resume


    Das Plugin legt den Link auf der richtigen Disk an und managed dann auch umbenennen etc; das läuft bis jetzt ohne Probleme mit einer 6TB und einer 8TB Platte, aber es fehlt noch ein automatisches Ausgleichen des Plattenplatzes im Hintergrund zwischen des Disks und die entsprechende Anpassung welche Aufnahme (welcher Anfangsbuchstabe) auf welcher disk landet.

  • /video/MythBusters_-_Die_Wissensjäger/2014-04-21.04.05.32-0.rec/00001.ts -> /mnt/video1/MythBusters_-_Die_Wissensjäger~2014-04-21.04.05.32-0~00001.ts

    Ok, mit Datum im Namen geht es natürlich.


    aber es fehlt noch ein automatisches Ausgleichen des Plattenplatzes im Hintergrund zwischen des Disks und die entsprechende Anpassung welche Aufnahme (welcher Anfangsbuchstabe) auf welcher disk landet.

    Klingt interessant, das Ergebnis sehe ich mir auf jeden Fall an.

    Ich schätze das wird am Ende wohl der aufwändigste Teil vom Plugin, da sich die Füllstände der Platten stark unterschiedlich ändern können.

    Gruss
    SHF


  • Ein super interessanter Beitrag - ich antworte hier nur, damit mir dieser Beitrag nicht verloren geht..

    Ich fand diese Verwaltung mehrerer Festplatten war eines *der* Features von VDR. Ein echter Verlust.



    Ich bastle gerade an einem ähnlichen Plugin, aber mit total anderem Zielund damit auch völlig anderer Implementation. Mein setup besteht aus einer SSD für das root Dateisystem und mehreren langsamen Terabyte Datengräbern. Und mich stört die verschachtelte Ordner Hierarchie der Aufnahmen. Mein Plugin wird deswegen eher darauf zielen, alle Meta-Daten auf der schnellen SSD zu lassen und ausschließlich die riesigen Video-Daten (*.{ts,vdr}) auszulagern, aber ohne Ordner-Baumstruktur und die Aufnahmen je disk alphabetisch. Disk1 'a'..'h', Disk2 'i'..'z' usw.

    Meta Daten auf der SSD und Video Daten auf die Festplatte. An so einem Plugin hätte ich auch Interesse.

    Ggf. noch die Video Daten in einem Rutsch auf die Festplatte damit diese länger schläft und auf der SSD noch Aufnahmen die man kurzfristig schaut cachen.


    Gibt es da etwas neues ? Gruß dile

  • Meta Daten auf der SSD und Video Daten auf die Festplatte. An so einem Plugin hätte ich auch Interesse.

    Ggf. noch die Video Daten in einem Rutsch auf die Festplatte damit diese länger schläft und auf der SSD noch Aufnahmen die man kurzfristig schaut cachen.

    Um die Festplatten mit den Aufzeichnungen die meiste Zeit schlafen zu legen, braucht es eigentlich kein Plugin. Da der VDR die Meta Daten komplett beim Start einliest und dann nur noch eher selten aktualisiert, kann man mit einem aktuellen Dateisystem mit SSD-Cache auch ohne Plugin ähnliche Effekte erzeugen.


    Grüsse

    kamel5

    VDR 2.6.6: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 39 Kernel 6.8 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • Ich habe mir ein Script geschrieben welches per cron einmal täglich läuft, die Aufnahmen die älter als 5 Tage sind auf die SATA HD kopiert und im SSD-Video Verzeichnis werden noch die MetaDateien gehalten und die Videos verlinkt.

  • Ich habe mir ein Script geschrieben welches per cron einmal täglich läuft, die Aufnahmen die älter als 5 Tage sind auf die SATA HD kopiert und im SSD-Video Verzeichnis werden noch die MetaDateien gehalten und die Videos verlinkt.

    Das klingt nach einer guten Lösung die für mich auch sinnvoll sein könnte. Könntest du mir dieses Script zur Verfügung stellen ?


    Vielen Dank


    dile :)

  • Meta Daten auf der SSD und Video Daten auf die Festplatte. An so einem Plugin hätte ich auch Interesse.

    Ggf. noch die Video Daten in einem Rutsch auf die Festplatte damit diese länger schläft und auf der SSD noch Aufnahmen die man kurzfristig schaut cachen.


    Gibt es da etwas neues ? Gruß dile

    Es funzt seitdem und ich lasse es dabei so wie es ist.

  • Aber sicher doch :)

    Ich habe mir ein Script geschrieben welches per cron einmal täglich läuft, die Aufnahmen die älter als 5 Tage sind auf die SATA HD kopiert und im SSD-Video Verzeichnis werden noch die MetaDateien gehalten und die Videos verlinkt.

    Hallo Helmut,

    danke für Dein Script. Ich würde das gerne auch so benutzen, habe aber einige Fragen.

    Meine SSD ist nach "/srv/vdr/video0" gemounted und mein Raid Laufwerk nach "/mnt/md0/video1"


    Auf der SSD befinden sich die Aufnahmeordner und in diesen die Metadaten und Symlinks der 0000*.ts Dateien zeigen nach "mnt/md0/video1/Aufnahmeordner/0000*.ts". Diese Ordnerstruktur habe ich Gestern händisch und per Scripte erstellt.

    Im Script selbst habe ich "VIDEO=/srv/vdr/video0" und "TARGET_DIR=/mnt/md0/video1" eingestellt.

    Das sollte so doch richtig sein ?

    Neue Aufnahmen landen komplett auf der SSD, was ja auch gewünscht ist.

    Wenn ich nun das Script starte, werden die *.ts Dateien (der Aufnahmen älter als 5 Tage) auf mein Raid Laufwerk verschoben und auf die SSD verlinkt. Richtig ?

    Bei Ausführung des Scripts erhalte ich jedoch viele Fehler - siehe Anhang. Liegt das daran, dass die komplette Ordnerstruktur erst vor einem Tag erstellt wurde ?


    Auch Aufnahmeordner auf dem Raid werden nicht gelöscht, obwohl sie auf der SSD durch VDR gelöscht wurden.( Diese Ordner beinhalten noch die *.ts Dateien. VDR folgt beim löschen ja nicht den Symlinks). Muß ich das von Zeit zu Zeit händisch erledigen, oder fehlt es an einer Abfrage "Wenn ordner xy nicht auf video0 vorhanden dann lösche Ordner xy inklusive ts Dateien darin" ?

  • Ich hatte die selben Fehler unter meinem Debian.


    Code
    nice -n $NICE_VAL "$*" 2>&1 | tee -a $LOG

    Ich habe dann die Zeile geändert und es lief auf den ersten Blick. Bin da aber nicht sehr erfahren in diesen Dingen und weiß nicht ob evt. ein anderes Problem damit verursacht werden könnte.


    Code
    nice -n $NICE_VAL $* 2>&1 | tee -a $LOG


    Außerdem ist mir noch aufgefallen:

    Das TARGET_DIR wird beim ausführen des Scriptes gelöscht wenn es noch komplett leer ist. (Sobald da was drin ist passiert das nicht mehr.)

    Wie sieht es denn beim Löschen von Aufnahmen aus ? Ich habe noch nicht die Zeit gehabt eine Löschung über den VDR zu testen. Aber nach einem manuellen löschen im Video Ordner und ausführen des Scriptes war die Aufnahme im sowohl im Target als auch im video Ordner noch etwas davon da.


    Gruß Dirk


  • Nach der Änderung sind die Fehlermeldungen weg. Danke


    Seltsamerweise wurde jetzt ein Ordner,der nur im Target war (da im video0 vom VDR gelöscht), wieder auf video0 erstellt worden und die *.ts verlinkt.

    Diese Stelle im Script ist wohl dafür zuständig:

    ...

    # find recordings on target Dir and link it on source dir if it doesnt exist

    find "$TARGET_DIR" -type d -name "*.rec" 2>/dev/null | while read -r i; do

    if [ ! -d "$i" ] ; then

    echo "Ignoring empty <$i>"

    continue

    fi

    LDIR="${SOURCE_DIR}${i#${TARGET_DIR}}"

    if [ -d "$LDIR" ] ; then

    echo "Ignoring exist <$i>"

    continue

    fi

    echo "Linking <$i>"

    execute mkdir -p "$LDIR"

    for j in "${i}"/* ; do

    [ ! -e "$j" ] && continue

    if [ "${j##*.ts}" == "" ] ; then

    execute ln -sf "$j" "${LDIR}/"

    else

    execute cp -auvf -t "${LDIR}" "$j"

    fi

    done

    done

    ....


    Das macht aus meiner Sicht keinen Sinn. Wenn ich im source_dir was lösche b.z.w. der VDR, dann können doch auch die *.ts files auf dem target_dir gelöscht werden.?!?

    Gruß

    Charly

  • Habe das jetzt mal so geändert:

    ...

    # find recording dir on target dir and delete it if it in source doesnt exist

    find "$TARGET_DIR" -type d -name "*.rec" 2>/dev/null | while read -r i; do

    if [ ! -d "$i" ] ; then

    echo "Ignoring empty <$i>"

    continue

    fi

    LDIR="${SOURCE_DIR}${i#${TARGET_DIR}}"

    if [ -d "$LDIR" ] ; then

    echo "Ignoring exist <$i>"

    continue

    fi

    echo "deleting <$i>"

    execute rm -r "$i"

    done

    ...


    Nach einem beherzten Ausführen ;) scheint es so zu funktionieren wie ich mir das vorstelle.

Jetzt mitmachen!

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