Как я могу переместить файлы обмена виртуальной памятью на другой диск или раздел?

apple.stackexchange https://apple.stackexchange.com/questions/1465

Вопрос

примечание: Это вопрос Что я спросил на суперпользователе некоторое время назад. Я перепродаю его здесь, потому что я думаю, что это принадлежит здесь.

По умолчанию Mac OS X хранит свои файлы свопа в /private/var/vm/. Анкет Я хотел бы разместить файлы свопа в другое место. Как это можно сделать?

Это было полезно?

Решение

примечание: скопировано с суперпользователя:

Для старых версий OSX см. эта ветка на форумах.macosxhints.com.

Кредит идет DBLU для объяснения использования plutil, Зилджр для представления wait4path команда и Экл Для упрощения всего этого путем устранения необходимости промежуточного сценария оболочки.

Полное решение:

1. Откройте терминал и сделайте резервную копию Apple по умолчанию Dynamic_pager.plist:

$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}

2. Преобразуйте Плист из двоичного в простые XML:

$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist

3. Откройте конвертированную Плист с вашим выбором текстового редактора. (Я использую pico, см. Ответ DBLU для примера, используя vim):

$ sudo pico -w com.apple.dynamic_pager.plist

Это должно выглядеть следующим образом:

<?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. Изменить массив программных карг (строки с 13 по 18), чтобы использовать wait4path Команда Shell до запуска Dynamic_pager. См. Примечание № 1 для получения подробной информации о том, почему это необходимо. В следующем примере мой раздел называется Swap, и я решил поместить мошенники в скрытый каталог на этом разделе, называемый .vm убедитесь, что указанный вами каталог действительно существует. Анкет XML должен выглядеть следующим образом:

<key>ProgramArguments</key>
<array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>/bin/wait4path /Volumes/Swap/ &amp;&amp;
/sbin/dynamic_pager -F /Volumes/Swap/.vm/swapfile</string>
</array>

5. Сохраните Плист и вернитесь к подсказке терминала. С использованием pico, команды будут:

<ctrl+o> to save the file
<enter>  to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit

6. Преобразовать модифицированную Плист обратно в двоичный файл:

$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist

7. Перезагрузите свой Mac. Если вы столкнетесь с неприятностями, переключитесь на режим Verbose Startup, удерживая Command-V сразу после пробега запуска. Это позволит вам увидеть все сообщения запуска, которые появляются во время запуска. Если вы столкнетесь с еще худшей проблемой (т.е. вы никогда не видите экран входа в систему), вместо этого удерживайте Command-S. Это загрузит компьютер в однопользовательском режиме (без графического пользовательского интерфейса, просто командная строка) и позволит вам восстановить резервную копию com.apple.dynamic_pager.plist, который вы сделали на шаге 1.

8. Как только компьютер загружается, запустите терминал и убедитесь, что файлы подмены фактически были перемещены:

$ cd /Volumes/Swap/.vm
$ ls -l

Вы должны увидеть что -то вроде этого:

-rw-------  1 someUser  staff  67108864 18 Sep 12:02 swapfile0

9. Удалить старые моряки:

$ cd /private/var/vm
$ sudo rm swapfile*

10. Выгода!

Примечание 1

Изменение аргументов на Dynamic_pager в Плисте без использования wait4path не всегда работает, и когда он терпит неудачу, это делает это впечатляюще безмолвным образом. Проблема проистекает из того факта, что Dynamic_Pager запускается очень рано в процессе запуска. Если ваш раздел свопа еще не был установлен, когда Dynamic_pager сначала загружен (по моему опыту, это происходит в 99% случаев), то система поднимется. Он создаст символическую ссылку в вашем каталоге/объемах, которая имеет то же имя, что и ваш раздел свопа, но указывает на местоположение Swapfile по умолчанию (/private/var/vm). Затем, когда ваш фактический раздел подважает, ему будет дано имя Swap 1 (или же YourDriveName 1) Вы можете увидеть проблему, открыв терминал и перечислив содержимое каталога вашего /тома:

$ cd /Volumes
$ ls -l

Вы увидите что -то вроде этого:

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 -> /

Обратите внимание, что эта неудача может быть очень трудно заметить. Если бы вы проверили на Swapfiles, как я показываю на шаге 12, Вы все равно увидите их! Символическая ссылка заставила бы показаться, что ваши мошенники были перемещены, хотя они фактически хранились в месте по умолчанию.

Заметка 2

Первоначально я не смог заставить это работать в снежном леопаре, потому что com.apple.dynamic_pager.plist был хранится в двоичном формате. Я сделал копию исходного файла и открыл его с редактором списков Apple (доступен в XCode), чтобы внести изменения, но этот процесс добавил некоторые расширенные атрибуты в файл PLIST, что заставило систему игнорировать его и просто использовать по умолчанию по умолчанию Анкет Как указал DBLU, используя plutil Чтобы преобразовать файл в обычный XML работает как очарование.

Заметка 3

Вы можете проверить приложение Console, чтобы увидеть любые сообщения, которые эхо динамического_PAGER_INIT на экране. Если вы видите, что следующие строки повторяются снова и снова, есть проблема с настройкой. Я столкнулся с этими сообщениями, потому что забыл создать каталог .vm, который я указал в Dynamic_pager_init.

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

Когда все работает должным образом, вы можете увидеть вышеприведенное сообщение только пару раз, а затем больше ничего из сообщений о «дроссельном возрождении». Это означает, что система должна была дождаться загрузки раздела, но в конце концов она была успешной.

Исключить путь от машины времени

В 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 не удался .... Однако ...

sudo mkdir /Volumes/Swap/s
sudo chmod 755 /Volumes/Swap/s
sudo sysctl vm.swapfileprefix=/Volumes/Swap/s

меняет хранимый префикс, как сообщается

sysctl vm

на время сессии, и он переживает перезагрузку.

Это может быть завершено как команда UNIX в текстовый файл:

$/bin/sh
sysctl vm.swapfileprefix=/Volumes/Swap/s

и бежать в логине.

Простое решение:

http://www.macupdate.com/app/mac/10771/swap-Relocator

Swaprelocator 1.1.2 отлично работает на Maverick!

Используйте (например) систему инструментов Tinker, чтобы позволить объемам монтироваться перед входом в систему, которая решает единственную проблему, с которой я столкнулся.

(Спасибо, Филиппо, я наконец -то могу переместить обмен из зеркального объема загрузки в громкость кэша полосатого кеша (все SSD))

Лицензировано под: CC-BY-SA с атрибуция
Не связан с apple.stackexchange
scroll top