kreuzberger wrote:oh .. gott! was kommt da auf mich/uns zu?
Keine Angst, alles halb so wild.
Am letzten Wochenende hatte ich mich mit dem Thema "Swap" etwas intensiver auseinander setzen müssen, da mit der N4F-Version
9.3.0.2 das Swapping nicht mehr so funktionieren wollte, wie noch mit der Version
9.1.0.1.
Bei der älteren Version konnte man nämlich noch ein ZFS-Volume als Swap hernehmen (obwohl davon abgeraten wird).
Bei meinen Experimenten bekam ich einmal auch die von dir erwähnte Fehlermeldung mit "swap_pager: indefinite wait buffer:...".
Diese Meldung kam aber nur, wenn ich händisch mit swapon/swapoff zwischen verschiedenen Swap-Bereichen hin und her gewechselt habe.
Als du dann geschrieben hast, daß du auch mit einer Swapdatei keinen Erfolg hast, war mir dann auch klar, weshalb das bei dir nicht funktionieren kann.
Dazu kommt noch meine Vermutung, daß du möglicherweise deine alte Config-Datei weiter benutzt hast(?) Möglicherweise hast du dort im System|Advanced Bereich Anpassungen vorgenommen, welche sich in der neuen N4F-Version negativ auswirken.
Meine derzeitigen Arbeitsthesen:
1. In den aktuellen N4F-Versionen geht es nicht ohne Swap.
2. Swap geht nicht mit ZFS-Volumes, und auch nicht mit einer Swap-Datei.
3. Swap geht nur mit eigenen Swap-Partitionen.
4. Swap sollte beim Systemstart eingebunden sein, ein Wechsel der Swap-Einstellungen ohne anschließenden Neustart kann Probleme bereiten.
5. Auch wenn der Swap korrekt auf der System-Status Seite angezeigt wird, heißt das noch lange nicht, daß er auch funktionieren wird.
6. Das System swappt auch, wenn eigentlich noch genügend freier Arbeitsspeicher vorhanden ist.
Vorteil bei korrekt eingerichteten Swap:
Das System läuft sehr stabil. Auch bei hoher Swap-Beanspruchung reagiert das Web-Gui noch. Das System "killt" selbstständig marodierende Prozesse (was erwünscht ist).
Jetzt die Nachteile:
Bei N4F kann man über das Web-GUI keine Swap-Partitionen einrichten.
Standardmäßig wird bei der embedded-Installation auf einem USB-Stick dort eine Swap-Partition eingerichtet, und auch genutzt (hinterher nicht mehr abschaltbar).
Swapping auf einen USB-Stick finde ich nicht so prickelnd. Außerdem verletzt es das bisherige Konzept, daß auf dem USB-Stick nur die Config-Datei geschrieben wird, und der Stick ansonsten tabu ist.
Gut, man kann die embedded-Installation auch ohne Swap vornehmen, aber danach muß man ja irgendwo eine Swap-Partition anlegen können.
Dafür gibt es in N4F keine Möglichkeit. N4F ist so aufgebaut daß immer die ganze Festplatte genutzt wird. Es gibt hier kein Partitionsmanagement.
Richtig bitter ist das besonders für ZFS-Nutzer, die müssten zwingend eine weitere Festplatte einbauen, wenn sie nicht auf USB swappen wollen.
Ich kann nur hoffen, daß es für dieses Problem bald eine bessere Lösung geben wird.
So, nachdem ich mich länglich über deine alten und neuen
Problemursachen ausgelassen habe, möchte ich jetzt zur eigentlichen
Problemlösung kommen.
Dazu muß ich noch sagen, daß ich diese Lösung eigentlich nicht empfehle, weil sie dem Konzept der strikten Trennung von System und Daten entgegensteht, und System-Updates u.U. problematisch werden können.
Die "Lösung" heißt "Embedded-Installation auf Festplatte" (mit Daten und Swap).
Einfach vom Live-USB-Stick starten, Punkt 9 und danach Punkt 1 auswählen, danach Quell- und Ziel-Laufwerk auswählen, und ansonsten die Standard-Werte übernehmen.
Im Prinzip wie eine Full-Installation, nur ohne die Nachteile. Du kannst das natürlich auch auf deine "große"-Festplatte installieren, mußt dann aber die Daten neu aufspielen.
Meine Beschreibung geht davon aus, daß du die Embedded-Version auf die große Festplatte spielst, auf der später auch die Musikdateien liegen werden.
Nach der Installation konfigurierst du die IP-Adresse, und gehst in das Web-GUI.
Alle weiteren Ausführungen gehen von einem frischen System aus, bei dem die ganzen Dienste auf ihren Standard-Werten stehen!
Dort gehst du in Disks|Management und fügst deine Festplatte (ada0) hinzu. Bei "Preformatted file system" mußt du "UFS" auswählen.
Du darfst keinesfalls die unteren Buttons benutzen!
Danach gehst du in Disks|Mount Point und fügst einen Eintrag hinzu:
Type: Disk
Disk: Deine Festplatte auswählen.
Partition number: 3
File system: UFS
Mountpoint name: Daten (oder was immer du magst, ich werde nachfolgend den Begriff "Daten" verwenden)
Access restrictions
Owner: ftp
Group: wheel
Mode: Alle Haken setzen, bis auf write bei Others.
Dann in Services|CIFS/SMB|Settings:
Max Protocol: SMB2 (kannst du später auf SMB3 ändern)
Dos charset: CP850 (ich mag das so)
Bei Advanced settings:
Null passwords: Haken setzen
AIO: Haken setzen
Dann in Services|CIFS/SMB|Shares:
Name: Daten
Comment: Daten
Path: /mnt/Daten
Recycle bin: kein Haken
Shadow copy: kein Haken
Nicht wundern: das sind die Einstellungen für ein "offenes" NAS. Das ist sicher nicht das, was du später haben möchtest. Aber das kann man später leicht auf Benutzerverwaltung umstellen. Mir geht es hier erstmal um eine einfache Installation, damit du sehr schnell deine Firefly-Konfiguration testen kannst.
Jetzt kannst du dich mit deinem Dateimanager auf die Freigabe "Daten" verbinden.
Lege dort die beiden Verzeichnisse "Audio" und "system" an. Ja, "system" in Kleinbuchstaben!
Lege im Verzeichnis "system" das Unterverzeichnis "UPNP" an.
Fülle jetzt dein NAS im Verzeichnis "Audio" mit deinen Musikdateien.
Erst wenn das Befüllen abgeschlossen ist, machst du dich an die Konfiguration von Services|iTunes/DAAP (vorher ergibt das keine Sinn).
In Services|iTunes/DAAP machst du dann folgende Einträge:
Database directory: /mnt/Daten/system/UPNP
Content: /mnt/Daten/Audio
Rescan interval: Das kannst du entweder auf dem Standard-Wert lassen, oder auf 0 setzen. Bei 0 mußt du dich selbst um das Rescanning kümmern. Ich würde eher zu 0 tendieren.
Du obige Konfiguration entspricht meinem Testaufbau, den ich zur Eingrenzung deines Problems vorgenommen habe.
Dafür habe ich ein 64Bit-System mit 4GB-RAM und einer 300GB-Festplatte genommen.
Auf die Festplatte habe ich ca. 18.000 mp3 und flac Dateien aufgespielt (~250GB).
Dabei habe ich das System in den drei Phasen Befüllen, Indizieren, Abspielen genau beobachtet.
Während des
Befüllens (was ich nicht per SMB, sonder mit rsync gemacht habe), hatte ich eine recht hohe Systemauslastung, und recht schnell Swapping, wobei der Swap-Bereich bis maximal ~111MB genutzt wurde, und sich auch nicht weiter veränderte.
Beim
Indizieren der Audio-Dateien durch Firefly gab es nur eine sehr niedrige Systemauslastung, das System swappte erst nach einiger Zeit, und nahm dabei sehr viel weniger Swapspace in Anspruch als beim Befüllen (~16MB).
Bein
Abspielen per Firefly gab es keine nennenswerte Systembelastung, und das System swappte auch nicht.
Neben den o.a. Rahmenbedingungen für ein sauber funktionierendes Swap-System, scheint mir bei Firefly noch ein weiterer Aspekt von Bedeutung zu sein:
Dabei geht es um die Funktion des Rescannings.
Ich hatte mir das vor einigen Jahren mal genauer angeschaut, und zwar sowohl für Firefly, als auch für fuppes.
Damals bin ich zu dem Ergebnis gekommen, daß das automatische Rescanning nicht funktioniert.
Meine pragmatische Lösung dafür ist, einfach die jeweiligen Database-Dateien zu löschen, das NAS neu zu starten, und die Index-Dateien automatisch neu aufbauen zu lassen. Das geht idR. schneller als ein Full Rescan, daher auch mein Tipp, das Rescan interval auf 0 zu setzen.
Noch ein Tipp: Über die Freigabe kannst du das Verzeichnis system/UPNP einsehen.
Dort befindet sich die Datei "songs3.db".
Wenn sich dort auch die Datei "songs3.db-journal" befindet, dann macht das System gerade seinen Erstindizierungslauf.
Wenn die "songs3.db-journal" dort nicht mehr erscheint, dann ist der Erstindizierungslauf abgeschlossen.
Wenn man die "songs3.db" löscht, und das NAS neu startet, wird komplett neu indiziert. Das geht übrigens ziemlich fix.
Ich hoffe, daß dir meine Ausführungen bei der Ausmerzung deines Problems helfen.
In meiner Testumgebung funktionierten die beschriebenen Schritte ohne Probleme, und auch beim Swapping gab es keinerlei Fehlermeldungen (wenn man die Finger davon läßt).
Das Web-GUI reagierte auch unter hoher Belastung, und fror nicht ein. Das System war zu jedem Zeitpunkt stabil.
Ich hoffe, daß ich bei meiner Beschreibung keinen wesentlichen Punkt vergessen habe.
Falls doch, dann bitte ich vorab um Entschuldigung.
Grüße
Princo