примечание: это вопрос, который я задал на SuperUser некоторое время назад. Я публикую это здесь, потому что думаю, что это здесь.
По умолчанию Mac OS X хранит свои файлы подкачки в /private/var/vm/
. Я хотел бы разместить файлы подкачки в другом месте. Как это можно сделать?
/private/var/vm/sleepimage
в Super User: Должен ли я ссылаться на мой / private / var / vm dir на другой том в OS X Lion? (2011-09-20) - есть ответ, который рекомендует не использовать один и тот же отдельный том как для внешних файлов подкачки, так и для sleepimage.Ответы:
примечание: скопировано из SuperUser:
Для более старых версий OSX, смотрите эту ветку на forums.macosxhints.com.
Заслуга dblu для объяснения использования
plutil
, ZILjr для введенияwait4path
команды и EKL для упрощения все это за счет устранения необходимости в промежуточном сценарии оболочки.Комплексное решение:
1. Откройте Терминал и создайте резервную копию стандартного динамического Apple_pager.plist от Apple:
2. Преобразуйте plist из двоичного в простой XML:
3. Откройте преобразованный список с помощью вашего текстового редактора. (Я использую
pico
, см. Ответ dblu для примера использованияvim
):Это должно выглядеть следующим образом:
4. Измените массив ProgramArguments (строки с 13 по 18), чтобы использовать команду
wait4path
оболочки до запуска dynamic_pager. См. Примечание № 1, чтобы узнать, почему это необходимо. В следующем примере вызывается мой разделSwap
, и я решил поместить файлы подкачки в скрытый каталог этого раздела, который.vm
должен быть уверен, что указанный вами каталог действительно существует . XML должен выглядеть следующим образом:5. Сохраните список и вернитесь к терминалу. Используя
pico
, команды будут:6. Преобразуйте измененный plist обратно в двоичный файл:
7. Перезагрузите ваш Mac. Если у вас возникли проблемы, переключитесь в подробный режим запуска, удерживая Command-v сразу после запуска. Это позволит вам увидеть все сообщения при запуске, которые появляются во время запуска. Если вы столкнулись с еще более серьезными проблемами (т.е. вы никогда не видите экран входа в систему), вместо этого удерживайте Command-s. Это загрузит компьютер в однопользовательском режиме (без графического интерфейса, просто командная строка) и позволит вам восстановить резервную копию com.apple.dynamic_pager.plist, созданную на шаге 1.
8. После загрузки компьютера запустите терминал и убедитесь, что файлы подкачки действительно были перемещены:
Вы должны увидеть что-то вроде этого:
9. Удалите старые файлы подкачки:
10. Прибыль!
Примечание 1
Изменение аргументов для dynamic_pager в plist без использования
wait4path
не всегда работает, а когда происходит сбой, это происходит невероятно тихо. Проблема связана с тем, что dynamic_pager запускается очень рано в процессе запуска. Если ваш раздел подкачки еще не был смонтирован при первой загрузке dynamic_pager (по моему опыту, это происходит в 99% случаев), тогда система будет фальсифицирована. Он создаст символическую ссылку в вашем каталоге / Volumes, имя которой совпадает с именем вашего раздела подкачки, но указывает на расположение файла подкачки по умолчанию (/ private / var / vm). Затем, когда ваш текущий раздел подкачки монтируется, ему будет присвоено имяSwap 1
(илиYourDriveName 1
). Вы можете увидеть проблему, открыв Терминал и перечислив содержимое вашего каталога / Volumes:Вы увидите что-то вроде этого:
Обратите внимание, что этот сбой может быть очень трудно обнаружить. Если бы вы проверили файлы подкачки, как я покажу в шаге 12, вы все равно бы их увидели ! Символическая ссылка создаст впечатление, что ваши файлы подкачки были перемещены, даже если они на самом деле хранятся в расположении по умолчанию.
Заметка 2
Первоначально я не смог заставить это работать в Snow Leopard, потому что com.apple.dynamic_pager.plist хранился в двоичном формате. Я сделал копию исходного файла и открыл его с помощью редактора списков свойств Apple (доступного с Xcode), чтобы внести изменения, но этот процесс добавил некоторые расширенные атрибуты в файл plist, которые заставили систему игнорировать его и просто использовать значения по умолчанию , Как указал dblu, использование
plutil
для преобразования файла в обычный XML работает как чудо.Заметка 3
Вы можете проверить консольное приложение, чтобы увидеть любые сообщения, которые dynamic_pager_init выводят на экран. Если вы видите, что следующие строки повторяются снова и снова, есть проблема с настройкой. Я столкнулся с этими сообщениями, потому что я забыл создать каталог .vm, который я указал в dynamic_pager_init.
Когда все работает должным образом, вы можете увидеть вышеупомянутое сообщение только пару раз, и тогда больше не будет сообщений «Возобновление дросселирования». Это означает, что система должна была ждать загрузки раздела, но в итоге она прошла успешно.
Исключить путь из Time Machine
В OS X 10.7 и позже вы можете сделать это с помощью tmutil . Пример:
sudo tmutil addexclusion -p /Volumes/Swap/.vm
Для этого примера, чтобы просмотреть результат:
tmutil isexcluded /Volumes/Swap && tmutil isexcluded /Volumes/Swap/.vm
Если том, используемый для подкачки, не нужно индексировать
Используйте mdutil . Пример, чтобы выключить, а затем стереть магазин:
sudo mdutil -i off /Volumes/Swap && sudo mdutil -E /Volumes/Swap
источник
;)
Мне не удалось установить решение для постоянной загрузки системы, поскольку 10.10 больше не использует /etc/.rc при загрузке, а метод com.apple.dynamic_pager.plist завершился ошибкой ... однако ...
меняет сохраненный префикс в соответствии с сообщением
на время сеанса, и он переживает перезагрузку.
это можно обернуть как команду unix в текстовый файл:
и запустить при входе в систему.
источник
Простое решение:
http://www.macupdate.com/app/mac/10771/swap-relocator
SwapRelocator 1.1.2 прекрасно работает на Maverick!
Используйте (например) Tinker Tool System, чтобы разрешить монтирование томов перед входом в систему, что решает единственную проблему, с которой я столкнулся.
(Спасибо, Филиппо, наконец-то я могу переместить своп с зеркального загрузочного тома на чередующийся кеш-том (все SSD))
источник