Bei nicht kritischen Linux-Systemen verschiebe ich häufig Dinge wie / tmp und / var / log nach tmpfs, um beim Schreiben auf einer Festplatte zu sparen. Ich mache das seit ungefähr einem Jahr und wenn ich jemals die Protokolle für Neustarts benötige, kommentiere ich einfach eine Zeile in / etc / fstab aus und beginne dann mit dem Debuggen.
Auf jeden Fall möchte ich unter OS X dasselbe tun. Ich habe Beiträge zum Erstellen einer Ramdisk für OS X gelesen, suche aber nach einer dauerhafteren Lösung, die bei jedem Start funktioniert. Ich möchte immer, dass / tmp und / var / log auf einer Ramdisk gemountet werden, mit der Möglichkeit, das mit ein bisschen Kommandozeilenbearbeitung in vi auszuschalten, wenn ich muss.
Antworten:
Hier ist ein Skript zum Erstellen von RAM-Disks unter OS X. Ihre Frage wird leider nicht beantwortet. Sie können dies verwenden, um etwas aufzubauen, das beim Booten ausgeführt wird und dann / tmp und / var / log mountet.
Von @salvatore http://pastie.textmate.org/pastes/1417478/text?key=igcxuzqqvlmlbavxooj2uw
quelle
EDIT: Ich werde nur meine eigene Antwort akzeptieren, da dies einen Teil des Problems für mich gelöst hat. Wenn jemand etwas Ähnliches wie --bind in Linux veröffentlicht, werde ich diese Antwort akzeptieren.
Um mehr Antworten zu erhalten, beantworte ich meine eigene Frage mit dem, was ich herausgefunden habe.
Schritt 1 ist, jedes Mal beim Booten eine Ramdisk zu laden. Dazu erstelle ich ein Bash-Skript und dann einen launchd-Eintrag, um das Bash-Skript beim Booten aufzurufen.
Schreiben Sie ein Bash-Skript wie folgt:
Rufen Sie es dann beim Booten auf, indem Sie es zu launchd hinzufügen, indem Sie eine Datei mit dem Namen /Library/LaunchDaemons/com.my.ramdisk.plist mit folgendem Inhalt erstellen:
Wenn ich nicht weiterkomme, können Sie Verzeichnisse auf der Ramdisk unter / tmp, / var / log und / var / tmp verknüpfen oder mounten. Diese drei Verzeichnisse sind auf meinem System alle mit / private / tmp, / private / var / log und / private / var / tmp verknüpft. Wenn ich die Symlinks in / Volumes / ramdisk / ... änderte, bootete das System nicht. Ich gehe davon aus, dass dies daran liegt, dass beim Booten etwas / tmp und / var / log benötigt, BEVOR das Skript my.my.ramdisk die Ramdisk einbindet. Ich brauche eine Möglichkeit, die Ramdisk direkt nach dem Einhängen von root einzubinden, bevor etwas anderes ausgeführt wird.
Hinweis Wenn Sie / var / log (Kernel, Daemon und andere wichtige Benutzerbereichsprotokolle) im temporären Bereich bereitstellen, wird der Inhalt beim nächsten Neustart gelöscht. Dies kann Ihre Diagnosefähigkeit beeinträchtigen.
quelle
hdik -drivekey system-image=yes -nomount ram://262144
eine 128-MB-RAM-Disk erstellennewfs_hfs
, formatieren und dannmount -o union,nobrowse,noatime
das Volume erneut laden/tmp
. Auf diese Weise/tmp
bleiben vorhandene Dateien in erhalten, aber neue Dateien werden auf Ihrer RAM-Festplatte gespeichert.tmpfs
bei Bedarf ein Swap verwendet wird, ein RAM-Datenträger dies nicht tut, geht ein Teil des aktiven RAM verloren. Dies bedeutet, dass Sie ihn klein halten möchten. Einige Aufgaben/tmp
erfordern jedoch möglicherweise mehr Arbeitsspeicher und schlagen fehl Achten Sie darauf, was Sie ausführen, falls mehr Speicherplatz benötigt wird, als Sie zuweisen.