Nicht nur CPU und RAM können Engpässe bei der Leistung von Software sein. Besonders das Lesen und Schreiben auf die Festplatte ist zum Beispiel für Minecraft-Server ein großer Flaschenhals. Wenn das der Fall ist, kann man auch zum Äußersten greifen: Ein Laufwerk im Arbeitsspeicher des Computers. Allerdings sind bei Stromausfall auch sofort alle Daten weg. Ich zeige euch, wie man es richtig macht.
Zwei Tasks für zwei Shell-Scripte
Zuerst braucht ihr sehr viel RAM in eurem Synology NAS. Die meisten kommen mit 4 GB bei euch an aber können bis 32 GB erweitert werden. Unterstützt wird das von Synology offiziell übrigens nicht. Ich habe DDR3 RAM gekauft, den man hier günstig kaufen kann. Ich bin nun bei 16 GB angekommen. Genug RAM ist wichtig, denn der belegte Platz wird nachher fehlen.
mount-ramdisk.sh
#!/bin/sh
mount -t tmpfs -o size=25% ramdisk /volume1/public/ramdisk
sleep 1
rsync -ahW --no-compress /volume1/public/ramdisk-local/ volume1/public/ramdisk/
Legt dieses Script in euer Home-Verzeichnis. Wenn ihr nicht wisst, was das heißt, hört hier auf zu lesen und denkt ernsthaft über eine SSD für eurer Synology NAS nach.
Ich habe ein sogenannten „Gemeinsamen Ordner“ namens „ramdisk“ angelegt. In das mounten wir die RAM-Disk. Danach warten wir vorsichtshalber eine Sekunde. Mit rsync holen wir uns das auf der Festplatte liegende lokale Backup der RAM-Disk. Denn diese ist bei jedem Neustarten 100%ig leer.
Die Prozentanzahl bei „size“ kann auch ein absoluter Wert wie „4GB“ sein. Für das Beispiel wollte ich nur nicht euer NAS lahmlegen wenn man genau 4 GB RAM hat und das dann synchronisiert.
Anschließend führt man dieses Script beim Bootvorgang aus. Dazu legt man einen Task wie folgt an:
- Aufgabenplaner
- Erstellen
- Ausgelöster Task (Triggered Task)
- Hochfahren
Der Benutzer muss „root“ sein, der das Script ausführt. Unter „Befehl ausführen“ referenziert ihr nun das Script im Home-Verzeichnis:
bash /var/services/homes/username/mount-ramdisk.sh
sync-ramdisk.sh
Nun brauchen wir ein Script, dass jede Minute den Inhalt der RAM-Disk auf die Festplatte persistiert:
#!/bin/sh
# run me as a scheduled task every minute as the same use the files belong to
rsync -ahW --no-compress --delete /volume1/public/ramdisk/ /volume1/public/ramdisk-local/
Den Task legt ihr an wie den „Ausgelösten Task“. Nur als „geplante Aufgabe“ („scheduled task“) die ihr jede Minute plant.
df | grep "ramdisk"
Die Scripte sind auf github zu finden und ich freue mich jederzeit über Anpassungen, Erweiterungen und Tipps.
Backup vorher testen!
Testet das Script sync-ramdisk.sh bevor ihr nach 3 Wochen merkt, dass nach einem Neustart alles weg ist. Wenn Du sensible Daten darin speicherst, dann ist eine NAS SSD besser geeignet.
Unterschiede zwischen Festplatte, SSD und RAM
Warum eine RAM-Disk? Weil selbst eine SSD ist nicht so schnell ist wie Arbeitsspeicher. Aber der Nachteil des RAMs: Wenn der Strom weg ist, sind alle Daten weg. Wer also mit Bleifuss auf der Performance-Überholspur fahren will, der sollte minütlich die Daten auf die Festplatte oder einer für das NAS geeigneten SSD sichern.
Festplatte | SSD | DRAM |
---|---|---|
160 MB/s | 550 MB/s | 16000 MB/s |
Diese Tabelle ist sehr vereinfacht und vernachlässigt Aspekte wie Zugriffszeiten, Größenverhältnis, Stromverbrauch und natürlich die angesprochene Persistenz.
Synology ist kein normales Linux
Wer sich mit Linux auskennt würde vielleicht sowas sagen wie:
- „Nimm doch /dev/shm“
- „Mounte doch einfach in der fstab eine Disk“
- „Nutze doch /usr/local/etc/rc.d/“
- „Bist du irre?! Das ist ja komplett ohne Abfangen von Fehlern geschrieben!“
Alles richtig. Durch den minimalistischen Ansatz bilde ich mir ein, dass man den Zusammenhang besser versteht. So bleibt das Beispiel übersichtlich. Wenn man über manuelle Anpassungen an fstab das Ziel erreichen will, dann könnten durch Updates von DSM diese Änderungen leicht überschrieben werden. Der Weg über Tasks und Scripte im Home-Verzeichnis sollte alle Aktualisierungen überleben.
Anwendungsfall Minecraft-Server
Mein Minecraft-Server ist besonders dankbar für eine schnelle I/O Performance. Wenn die Spieler über die Karte laufen und Blöcke verändern, dann ist die 3,5GB große Karte permanent Lese- und Schreibzugriffen ausgesetzt. Da war die RAM-Disk ein echter Segen. Der Tipp mit der RAM-Disk kam von meinem geschätzten Kollegen Kai Fricke nach einem Fachgespräch über Minecraft-Server.
Ist das was für den Regelbetrieb?
Nein, für mich nicht. Am Ende kenne ich mich dann doch nicht so gut mit den ganzen „Was passiert wenn die RAM-Disk voll läuft“-Fällen aus. Ich will den Minecraft-Server nicht deswegen riskieren. Die nun verbaute SSD ist zwar langsamer aber die schnellen Zugriffszeiten sind gefühlt nicht weit weg von der Lösung mit der RAM-Disk. Außerdem ist Arbeitsspeicher auch nicht geschenkt. SSDs speziell für NAS werden zudem immer interessanter.
Schreibe einen Kommentar