Hinweis: Von SuperUser kopiert:
Informationen zu älteren Versionen von OSX finden Sie in diesem Thread auf forums.macosxhints.com.
Dank geht an dblu für die Erklärung der Verwendung von plutil
, ZILjr für die Einführung des wait4path
Befehls und ekl für die Vereinfachung des Ganzen, da kein Shell-Zwischenskript erforderlich ist.
Komplette Lösung:
1. Öffnen Sie das Terminal und erstellen Sie eine Sicherungskopie von Apples Standard-Dynamic_Pager.plist:
$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}
2. Konvertieren Sie die Plist von binärem zu einfachem XML:
$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
3. Öffnen Sie die konvertierte Liste mit dem Texteditor Ihrer Wahl. (Ich benutze pico
, siehe dblus Antwort für ein Beispiel mit vim
):
$ sudo pico -w com.apple.dynamic_pager.plist
Es sollte wie folgt aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
<key>EnableTransactions</key>
<true/>
<key>HopefullyExitsLast</key>
<true/>
<key>Label</key>
<string>com.apple.dynamic_pager</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/sbin/dynamic_pager</string>
<string>-F</string>
<string>/private/var/vm/swapfile</string>
</array>
</dict>
</plist>
4. Ändern Sie das Array wait4path
ProgramArguments (Zeilen 13 bis 18), um den Shell-Befehl vor dem Starten von dynamic_pager zu verwenden. In Anmerkung 1 finden Sie Einzelheiten dazu, warum dies erforderlich ist. Im folgenden Beispiel wird meine Partition aufgerufen Swap
, und ich habe mich dafür entschieden, die Auslagerungsdateien in einem versteckten Verzeichnis auf dieser Partition abzulegen. Dabei .vm
muss sichergestellt sein, dass das von Ihnen angegebene Verzeichnis tatsächlich vorhanden ist . Das XML sollte wie folgt aussehen:
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>/bin/wait4path /Volumes/Swap/ &&
/sbin/dynamic_pager -F /Volumes/Swap/.vm/swapfile</string>
</array>
5. Speichern Sie die Liste und kehren Sie zur Eingabeaufforderung des Terminals zurück. Mit pico
, wären die Befehle:
<ctrl+o> to save the file
<enter> to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit
6. Konvertieren Sie die geänderte Plist zurück in eine Binärdatei:
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
7. Starten Sie Ihren Mac neu. Wenn Sie auf Probleme stoßen, wechseln Sie in den ausführlichen Startmodus, indem Sie Command-v unmittelbar nach dem Startsignal gedrückt halten. Auf diese Weise können Sie alle Startmeldungen anzeigen, die während des Startvorgangs angezeigt werden. Wenn Sie auf noch schlimmere Probleme stoßen (dh wenn Sie den Anmeldebildschirm nie sehen), halten Sie stattdessen Befehl-s gedrückt. Dadurch wird der Computer im Einzelbenutzermodus gestartet (keine grafische Benutzeroberfläche, nur eine Eingabeaufforderung), und Sie können die in Schritt 1 erstellte Sicherungskopie von com.apple.dynamic_pager.plist wiederherstellen.
8. Starten Sie nach dem Start des Computers das Terminal und überprüfen Sie, ob die Auslagerungsdateien tatsächlich verschoben wurden:
$ cd /Volumes/Swap/.vm
$ ls -l
Sie sollten so etwas sehen:
-rw------- 1 someUser staff 67108864 18 Sep 12:02 swapfile0
9. Löschen Sie die alten Swap-Dateien:
$ cd /private/var/vm
$ sudo rm swapfile*
10. Profit!
Anmerkung 1
Das Ändern der Argumente für dynamic_pager in der plist ohne Verwendung von wait4path
funktioniert nicht immer, und wenn dies fehlschlägt, geschieht dies auf spektakulär stille Weise. Das Problem rührt von der Tatsache her, dass dynamic_pager sehr früh im Startprozess gestartet wird. Wenn Ihre Swap-Partition beim erstmaligen Laden von dynamic_pager noch nicht gemountet wurde (nach meiner Erfahrung passiert dies 99% der Zeit), wird sich das System durchschlagen. Es wird eine symbolische Verknüpfung in Ihrem / Volumes-Verzeichnis erstellt, die denselben Namen wie Ihre Swap-Partition hat, jedoch auf den Standardspeicherort der Swap-Datei (/ private / var / vm) verweist. Wenn Ihre tatsächliche Swap-Partition aktiviert wird, wird ihr der Name Swap 1
(oder YourDriveName 1
) zugewiesen . Sie können das Problem erkennen, indem Sie das Terminal öffnen und den Inhalt Ihres Verzeichnisses / Volumes auflisten:
$ cd /Volumes
$ ls -l
Sie werden so etwas sehen:
drwxrwxrwx 11 yourUser staff 442 16 Sep 12:13 Swap -> private/var/vm
drwxrwxrwx 14 yourUser staff 5 16 Sep 12:13 Swap 1
lrwxr-xr-x 1 root admin 1 17 Sep 12:01 System -> /
Beachten Sie, dass dieser Fehler sehr schwer zu erkennen sein kann. Wenn Sie nach den Swap-Dateien suchen würden, wie ich in Schritt 12 gezeigt habe, würden Sie sie immer noch sehen ! Die symbolische Verknüpfung lässt den Eindruck entstehen, dass Ihre Auslagerungsdateien verschoben wurden, obwohl sie tatsächlich am Standardspeicherort gespeichert waren.
Anmerkung 2
Ursprünglich war es mir nicht möglich, dies in Snow Leopard zum Laufen zu bringen, da com.apple.dynamic_pager.plist im Binärformat gespeichert wurde. Ich habe eine Kopie der Originaldatei erstellt und sie mit Apples Eigenschaftenlisten-Editor (verfügbar mit Xcode) geöffnet, um Änderungen vorzunehmen, aber dieser Prozess hat der plist-Datei einige erweiterte Attribute hinzugefügt, wodurch das System sie ignorierte und nur die Standardeinstellungen verwendete . Wie dblu betonte, funktioniert die plutil
Konvertierung der Datei in einfaches XML wie ein Zauber.
Notiz 3
Sie können die Konsolenanwendung überprüfen, um alle Meldungen zu sehen, die dynamic_pager_init auf dem Bildschirm wiedergibt. Wenn die folgenden Zeilen immer wieder angezeigt werden, liegt ein Problem mit der Einrichtung vor. Ich bin auf diese Nachrichten gestoßen, weil ich vergessen habe, das in dynamic_pager_init angegebene Verzeichnis '.vm' zu erstellen.
com.apple.launchd[1] (com.apple.dynamic_pager[176]) Exited with exit code: 1
com.apple.launchd[1] (com.apple.dynamic_pager) Throttling respawn: Will start in 10 seconds
Wenn alles ordnungsgemäß funktioniert, wird die obige Meldung möglicherweise nur ein paar Mal angezeigt, und es werden keine weiteren Meldungen zum "Drosseln von Respawns" angezeigt. Das bedeutet, dass das System warten musste, bis die Partition geladen war, aber am Ende war es erfolgreich.
Schließen Sie den Pfad von Time Machine aus
In OS X 10.7 und höher können Sie dies mit tmutil tun . Beispiel:
sudo tmutil addexclusion -p /Volumes/Swap/.vm
So überprüfen Sie das Ergebnis für dieses Beispiel:
tmutil isexcluded /Volumes/Swap && tmutil isexcluded /Volumes/Swap/.vm
Wenn das für den Swap verwendete Volume nicht indiziert werden muss
Verwenden Sie mdutil . Beispiel zum Ausschalten und Löschen des Speichers:
sudo mdutil -i off /Volumes/Swap && sudo mdutil -E /Volumes/Swap
/private/var/vm/sleepimage
in Super User: Soll ich mein / private / var / vm-Verzeichnis mit einem anderen Volume in OS X Lion verknüpfen? (2011-09-20) - Es gibt eine Antwort, die empfiehlt, nicht dasselbe separate Volume für externe Auslagerungsdateien und Sleepimage zu verwenden.