Aufnahmen werden nicht von Festplatte gelöscht

  • Hallo,

    ich hatte vor ein paar Tagen zum ersten mal, dass meine Aufnahme Festplatte komplett voll war. Leider wurden dann keine zum löschen Markierte Aufnahmen (.del Dateien) mehr endgültig von der Festplatte gelöscht, bis ich mindestens eine Aufnahme auf der Console per "rm ..." gelöscht hatte.

    Im Log habe ich dann im Sekundentackt diese Meldung gefunden:

    Code
    1. Mar 6 21:46:34 MLD user.err vdr: [1986] ERROR (tools.c,2026): /data/tv/.lock-vdr: No space left on device

    So wie es ausschaut versucht der VDR die Datei .lock-vdr anzulegen bevor etwas gelöscht wird. Dies klappt aber nicht mehr, da die Festplatte je bereits voll ist.

    Hier müsste es also eine fallback Lösung geben, für den Fall das die Festplatte mal komplett voll sein sollte.


    Da ich nicht ausschließen kann, dass dieses Problem durch einen Patch hervorgerufen wird, will ich gleich da drüber informieren, dass ich diverse Patsches verwende.


    Claus

    MLD 5.4 mit vdr 2.4.1 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.4 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.4 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Zu dem Zeitpunkt als die Platte voll gelaufen ist, gab es keine Aufnahmen die gelöscht werden sollen. Der VDR hätte also nicht rechtzeitig Platz schaffen können.

    Ist es denn so, das der VDR normalerweise aufhört aufzunehmen, bevor die Platte ganz voll ist, also immer etwas Platz frei lässt?

    Wenn ich es richtig erinnere waren zuletzt noch 60kB frei. Das hat aber wohl nicht gereicht um den Ordner .lock-vdr anlegen zu können. (ich verwende das btrfs Filesystem für die Aufnahmen)

    Möglicherweise hat auch mein Backup System daten auf die Platte kopiert, das müsste ich aber heute Abend erst noch mal prüfen.


    Grundsätzlich kann es aber immer vorkomme, das eine Daten Festplatte komplett voll läuft, auch wenn der VDR dies nicht selbst verschuldet hat. Der VDR sollte also auch bei einer komplett gefüllten Platte eine Möglichkeit haben Aufnahmen zu löschen. Auch wenn die Lock Datei nicht mehr angelegt werden kann.

    MLD 5.4 mit vdr 2.4.1 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.4 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.4 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Leider wurden dann keine zum löschen Markierte Aufnahmen (.del Dateien) mehr endgültig von der Festplatte gelöscht

    Zu dem Zeitpunkt als die Platte voll gelaufen ist, gab es keine Aufnahmen die gelöscht werden sollen.

    Das heißt dann wohl, dass du erst nach dem Volllaufen der Platte eine Aufnahme gelöscht (also von *.rec nach *.del umbenannt) hast, und die konnte VDR dann nicht endgültig löschen wegen der nicht erstellbaren Lock-Datei, oder?

    Ist es denn so, das der VDR normalerweise aufhört aufzunehmen, bevor die Platte ganz voll ist, also immer etwas Platz frei lässt?

    Die Aufnahme läuft "stur" weiter bis zum Anschlag. AssertFreeDiskSpace() soll dafür sorgen, dass immer mindestens 1GB frei ist. Dafür werden zuerst *.del gelöscht, und wenn es keine solchen mehr gibt, dann die älteste Aufnahme (abhängig von Priorität und Mindest-Lebensdauer).

    Der VDR sollte also auch bei einer komplett gefüllten Platte eine Möglichkeit haben Aufnahmen zu löschen. Auch wenn die Lock Datei nicht mehr angelegt werden kann.

    Als schnellen Fix könntest du das hier mal probieren (ungetestet, unkompiliert):

    cLockFile wird im Core-VDR ja nur zum Locken des Video-Verzeichnisses verwendet, daher sollte das keine Seiteneffekte haben. Für eine allgemeine Lösung bräuchten wir wohl noch einen Parameter, der das Verhalten steuert, damit der Aufrufer auch darauf gefasst ist, dass er den Lock auch ohne Lock-Datei bekommt, wenn die Platte voll ist.

    Aber vielleicht kannst du erstmal das hier testen.

  • BTRFS ist in der Frage nach freiem Speicher ein ziemliches Minenfeld: https://btrfs.wiki.kernel.org/…h_free_space_do_I_have.3F

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ups, da hab ich was verwechselt. Mein Datenlaufwerk verwendet ein xfs FIlesystem, nicht btrfs. Bei btrfs wäre das in der Tat schwierig mit dem freien Platz...

    MLD 5.4 mit vdr 2.4.1 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.4 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.4 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Das heißt dann wohl, dass du erst nach dem Volllaufen der Platte eine Aufnahme gelöscht (also von *.rec nach *.del umbenannt) hast, und die konnte VDR dann nicht endgültig löschen wegen der nicht erstellbaren Lock-Datei, oder?

    Ja, vorher war nichts zum löschen vorgemerkt.


    Und es konnten auch keine alten Aufnahmen gelöscht werden, weil alle eine Lebensdauer von 99 haben. (ich versuche schon seit einigen Jahren meine Frau davon zu überzeugen, wenigstens der täglichen Nachrichten Aufzeichnung eine niedrigere Prio zu geben, leider ohne Erfolg ;) )

    MLD 5.4 mit vdr 2.4.1 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.4 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.4 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Hatte mit der 5.4 (die grad' meinen Buggy 1.4.6er vertritt) auch das Erlebnis, das .del nicht gelöscht wurde.


    Leider zeigt das Menü ja Kapazität an - kostete mich n paar bull 😒

  • OK, da habe ich mich zuletzt etwas ungenau ausgedrückt.

    Zu dem Zeitpunkt, als die Festplatte voll lief, da konnte der VDR nichts löschen. Später als ich dann aufnahmen gelöscht habe, wurden diese aber nicht von der Festplatte gelöscht (sondern nur mit .del markiert), weil die Lock Datei nicht erstellt werden konnte.


    Das Problem tritt also nur dann auf, wenn der Anwender erst dann Aufnahmen löscht, wenn die Festplatte wirklich komplett gefüllt ist.

    MLD 5.4 mit vdr 2.4.1 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.4 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.4 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Danke schon mal. Ich habe den Patch in der MLD mit aufgenommen.

    Jetzt muss ich nur noch ca. 100 Stunden Aufnahmen abwarten, bis das nächste mal die Problematik auftritt :)

    MLD 5.4 mit vdr 2.4.1 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.4 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.4 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Auch xfs fragmentiert gräßlich, wenn es nahe 100% voll wird. Eine "Füllgrenze", ab wann die .del-Ordner tatsächlich gelöscht werden, sollte eher niedriger sein ...

    Bzw. kann es theoretisch sein, daß dem Dateisystem die Extents ausgehen, noch bevor 100% erreicht ist, v.a. bei starker Fragmentierung?

    btrfs >80% zu füllen, ist "Abenteuerlust" :)

  • Ja, werde ich die nächsten Tage auch machen. Ich will ja nicht warten biss meine Frau sich beklagt dass nicht aufgenommen wurde, obwohl freier Platz angezeigt wird.

    MLD 5.4 mit vdr 2.4.1 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.4 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.4 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT