Unraid erlaubt das Vorschalten eines Caches. Dieser besteht zumeist aus mehreren SSDs (für die Ausfallsicherheit) und ermöglicht dadurch höhere Transfergeschwindigkeiten. Allerdings funktioniert er anders als bei Synology, QNAP oder TrueNAS, weshalb er einer Erklärung bedarf, die hoffentlich das folgende Diagramm liefert (erstellt mit diagrams.net):
Wie man sieht haben die jeweiligen Einstellungen Yes, Prefer, No und Only (Ja, Bevorzugen, Nein, Nur) verschiedene Auswirkungen wo die Dateien bei einem Upload landen oder wohin sie später durch den „Mover“ verschoben werden. Wie man sieht werden auch immer nur vollständige Dateien verschoben und nicht nur Dateibestandteile (Blöcke) wie bei anderen NAS-Betriebssystemen. Demnach: Eine Datei befindet sich niemals gleichzeitig auf dem Cache und dem Array.
„Yes“ oder „Prefer“?
„Yes“ bietet sich für alle Ordner an, auf die man über das Netzwerk Dateien hochladen möchte. So profitiert man von der maximalen Geschwindigkeit und muss auch nicht auf das Hochdrehen einer Array-HDD warten. Der Mover verschiebt diese Dateien dann nach Zeitplan automatisch auf das Array. Sie liegen dann also nicht mehr auf dem SSD Cache und werden auch nicht mehr auf diese zurückgeholt.
„Prefer“ bietet sich für alle Ordner an, die Container oder virtuelle Maschinen enthalten. Deren Dateien verbleiben dann dauerhaft auf dem Cache. Sollte der Cache durch Uploads vollgelaufen sein, werden neue Dateien auf dem Array erstellt und sobald dieser wieder geleert wurde, werden diese auf den Cache zurückgeholt (vorausgesetzt, diese sind nicht in Benutzung).
Was ist mit „No“ oder „Only“?
Was man zuerst wissen sollte: Bei „No“ und „Only“ ist der Mover deaktiviert. Also auch wenn noch Dateien auf dem Cache liegen und man „No“ gewählt hat, werden diese nicht auf das Array verschoben. Aus dem Grund rate ich Anfängern grundsätzlich von diesen beiden Optionen ab.
„No“ bietet sich immer dann an, wenn man den Cache, also die begrenzte Anzahl an Schreibzyklen einer SSD, „schonen“ möchte. Allerdings muss man sich hier noch lange nicht so große Sorgen machen wie bei anderen NAS-Betriebssystemen, da der Cache so gut wie nie voll ausgelastet wird und damit das Over-Provisioning / die Garbage-Collection der SSD optimal funktioniert. Während bei Unraid die Dateien permanent (solange der Mover sie nicht verschiebt) auf dem Cache verbleiben, werden bei anderen Betriebssystemen ständig „veraltete“ Dateibestandteile gegen aktuelle überschrieben, was eine entsprechend hohe Anzahl an Schreibzyklen zur Folge hat. Dieser Mechanismus erlaubt zwar, dass der SSD Cache dort dynamisch funktioniert, steht aber gewissermaßen im Widerspruch zum Linux Page Cache, der genau das selbe macht, nur eben mit dem RAM. Demnach: Viel RAM ist besser als ein dynamischer SSD Cache und schont langfristig den Geldbeutel.
Von „Only“ rate ich grundsätzlich ab, da „Only“ zwar wie „Prefer“ funktioniert, aber bei einem vollen Cache nicht auf das Array ausgewichen wird. Es gibt also schlicht keinen Vorteil durch diese Option, aber einen Nachteil.
Cache ändern verboten!
Nutzt man beispielsweise Container, welche ihre Dateien im Share „appdata“ ablegen und legt sich erst später einen SSD Cache zu, so liegen die meisten dieser Dateien noch auf dem Array. Würde man nun im laufenden Betrieb den Cache auf „Only“ umstellen, da man „nur Cache nutzen“ falsch versteht, so passiert folgendes: Der Container sucht ausschließlich auf dem SSD Cache nach Dateien, findet dort aber keine (da sie noch auf dem Array liegen) und installiert sich komplett neu. Nun ist die Katastrophe perfekt. Wir haben die Container-Dateien nun doppelt auf dem NAS und wissen evtl nicht mehr welche Dateien eigentlich die gewünschten sind. Bevor man also den Cache umstellt, gilt es zu prüfen, dass auch nichts mehr auf den Share zugreift. Im Fall von „appdata“ würde man also über die Einstellungen den Docker-Dienst vollständig deaktivieren. Erst dann würde man die Cache-Einstellung ändern und den Mover starten und erst wenn dieser fertig ist den Docker-Dienst wieder aktivieren. Und natürlich würde man niemals von „No“ auf „Only“ oder von „Prefer“ auf „No“ umstellen etc, da der Mover dann gar nicht erst aktiv werden kann.
Also ich nutze den Unraid Cache nur für Docker und VMs. Hab leider nur einen Gigabit Anschluss da reichen die Festplatten auch so aus.
Ich habe eine riesen Bilderdatenbank auf meinem Unraid Server liegen. Der Ordner ist 2,76TB groß….meine Cache-Platte ist ne 1TB NVME. Kann ich irgendwie in diesem Share „nur“ einen Unterordner des 2,76TB großen Ordners auf „Prefer“ setzen oder geht das nur mit dem Hauptordner, der als Share angelegt is?
Danke für Infos.
Einen Trick gibt es:
Alle Dateien dieses Ordners zb mit dem User Scripts Plugin und folgende zwei Zeilen in ein Skript packen, das VOR dem Mover ausgeführt wird:
rsync -a /mnt/cache/Bilder/Unterordner/ /mnt/disk3/Bilder/Unterordner
rsync -a /mnt/disk3/Bilder/Unterordner/ /mnt/cache/Bilder/Unterordner
Achtung: niemals /mnt/user dabei verwenden. Nur konkrete Datenträger wie Disks oder Poolnamen.
Du kopierst also alle Dateien auf beide Datenträger und dadurch überspringt sie der Mover.
Allerdings muss man beim Löschen von Bildern über das Netzwerk immer 2x löschen, weil beim ersten Löschen die Datei vom Cache gelöscht wird und erst beim zweiten Löschen die Datei vom Array.