RAM-Disk auf macOS
19. May 2026, 21:21 in: µtools
Ich bastle gerade an kleinen nativen macOS-Tools in PureBasic. Also keine Electron-App, kein Webview-Geraffel, sondern kleine Menüleisten-Utilities mit Cocoa-APIs. Eines davon ist ein RAM-Disk-Cache.
Eine RAM-Disk ist im Prinzip ein Laufwerk im Arbeitsspeicher. Sie verhält sich wie ein normales Volume, ist aber flüchtig: Neustart, Auswerfen oder Strom weg, Daten weg. Genau das macht sie interessant für temporäre Caches, Build-Artefakte, Screenshots, KI-Zwischendaten oder alles, was schnell sein soll und nicht dauerhaft auf der SSD landen muss.
Eine RAM-Disk ist im Prinzip ein Laufwerk im Arbeitsspeicher. Sie verhält sich wie ein normales Volume, ist aber flüchtig: Neustart, Auswerfen oder Strom weg, Daten weg. Genau das macht sie interessant für temporäre Caches, Build-Artefakte, Screenshots, KI-Zwischendaten oder alles, was schnell sein soll und nicht dauerhaft auf der SSD landen muss.
Unter macOS geht das erstaunlich einfach:
Die Zahl ist dabei nicht Megabyte, sondern die Anzahl von 512-Byte-Blöcken. Für 512 MB braucht man also: 512 * 2048 = 1048576.
Der obige Befehl gibt uns eine Nummer, die an /dev/disk dranhängt, z.B. die 12. Dann wird das Device formatiert:
Und schon liegt das Volume unter: /Volumes/UTOOLS_CACHE
Ich habe daraus ein kleines Menulet gebaut: RAM-Disk erstellen, öffnen, Pfad kopieren, im Finder anzeigen, auswerfen. Mehr soll es gar nicht tun. Kleine Werkzeuge sind mir inzwischen lieber als große Alleskönner. Wenn ein Tool fünf Dinge gut macht, ist das oft besser als eines, das fünfzig Dinge irgendwie macht.
Interessant war der erste Geschwindigkeitstest. Eine nominelle 512-MB-APFS-RAM-Disk lässt sich nicht exakt mit einer 512-MiB-Datei füllen, weil APFS selbst etwas Platz braucht. Nutzbar waren stabil etwa 496 MiB. Ich habe das Volume 100-mal vollgeschrieben - MacBook Pro M2, 32 GB:
Natürlich ist das kein wissenschaftlicher Benchmark. Aber als Praxiswert reicht es: Für temporäre Arbeitsdaten ist das sehr schnell. Und vor allem: Es belastet die SSD nicht mit kurzlebigem Kram.
Ein paar Dinge sind wichtig:
In PureBasic sieht der Kern ungefähr so aus:
Beim Auswerfen ist hdiutil detach zuverlässiger als nur diskutil eject, weil hdiutil die RAM-Disk auch erzeugt hat:
Das kleine Tool sitzt jetzt in der Menüleiste und zeigt schlicht RAM Off, RAM 512 oder ähnliches an. Kein großes Fenster, keine Einstellungen, kein Drama. Genau so mag ich solche Utilities.
hdiutil attach -nomount ram://1048576
Die Zahl ist dabei nicht Megabyte, sondern die Anzahl von 512-Byte-Blöcken. Für 512 MB braucht man also: 512 * 2048 = 1048576.
Der obige Befehl gibt uns eine Nummer, die an /dev/disk dranhängt, z.B. die 12. Dann wird das Device formatiert:
diskutil eraseVolume APFS UTOOLS_CACHE /dev/disk12
Und schon liegt das Volume unter: /Volumes/UTOOLS_CACHE
Ich habe daraus ein kleines Menulet gebaut: RAM-Disk erstellen, öffnen, Pfad kopieren, im Finder anzeigen, auswerfen. Mehr soll es gar nicht tun. Kleine Werkzeuge sind mir inzwischen lieber als große Alleskönner. Wenn ein Tool fünf Dinge gut macht, ist das oft besser als eines, das fünfzig Dinge irgendwie macht.
Interessant war der erste Geschwindigkeitstest. Eine nominelle 512-MB-APFS-RAM-Disk lässt sich nicht exakt mit einer 512-MiB-Datei füllen, weil APFS selbst etwas Platz braucht. Nutzbar waren stabil etwa 496 MiB. Ich habe das Volume 100-mal vollgeschrieben - MacBook Pro M2, 32 GB:
Durchläufe: 100nutzbar pro Durchlauf: 496 MiBgesamt geschrieben: 49.600 MiBGesamtzeit: 5,93 SekundenDurchschnitt: ca. 8.364 MiB/sbester Durchlauf: ca. 11.516 MiB/sschlechtester Durchlauf: ca. 7.439 MiB/s
Natürlich ist das kein wissenschaftlicher Benchmark. Aber als Praxiswert reicht es: Für temporäre Arbeitsdaten ist das sehr schnell. Und vor allem: Es belastet die SSD nicht mit kurzlebigem Kram.
Ein paar Dinge sind wichtig:
- RAM-Disk-Daten sind flüchtig.
- APFS braucht etwas Overhead.
- Das Volume muss sauber ausgeworfen werden.
- Sandbox-Umgebungen können hdiutil blockieren.
- Für dauerhafte Daten ist das natürlich der falsche Ort.
In PureBasic sieht der Kern ungefähr so aus:
blocks = sizeMB * 2048RunProgram("/usr/bin/hdiutil", "attach -nomount ram://" + Str(blocks), "")RunProgram("/usr/sbin/diskutil", "eraseVolume APFS UTOOLS_CACHE " + device, "")
Beim Auswerfen ist hdiutil detach zuverlässiger als nur diskutil eject, weil hdiutil die RAM-Disk auch erzeugt hat:
hdiutil detach /dev/disk12
Das kleine Tool sitzt jetzt in der Menüleiste und zeigt schlicht RAM Off, RAM 512 oder ähnliches an. Kein großes Fenster, keine Einstellungen, kein Drama. Genau so mag ich solche Utilities.
