Перенос папки пользователя на другой HDD

в 0:02, , рубрики: apple, OS X, yosemite, метки: ,

По мотивам данного поста с небольшими дополнениями. Не смог оставить комментарий к вышесказанному посту, поэтому пишу новую статью.

Решил модернизировать смой Mac mini (late 2012), оснастив его SSD Intel X25-M 160GB. Операционка – Yosemite 10.10.1. Воткнул SSD по статье с iFixit – ничего сложного нет, шлейф для SSD заказывал у наших друзей из «поднебесной». Решил сделать таким образом – операционка и программы на SSD, пользовательские данные на HDD.

Так как я предпочитаю unix way, то решил примонтировать HDD в /Users

Для начала скопировал с помощью Carbon Copy Cloner загрузочный диск кроме пользовательских данных (/Users) на SSD. Далее перенёс папку /Users/username/ в корень HDD и перегрузился с раздела Recovery. Для этого зажимаем alt при загрузке и выбираем Recovery (в принципе, можно загрузиться с любой загрузочной флешки с OS X на борту).
Удалил с HDD все разделы и файлы кроме /username, очистил папку /Users на SSD, чтобы диск смонтировался.

Процес монтирования описан в вышесказанном посте в разделе «способ 2», поэтому я не буду снова это повторять, хотя есть единственное дополнение. Когда определяете UUID диска командой:

diskutil info /Volumes/HDD/ | grep UUID

В выводе получите два кода UUID – диска и патриции. Нужно брать код диска (первый в списке)!

   Volume UUID:              409AF953-4812-38DA-A0D9-4B0C5C49BC8E
   Disk / Partition UUID:    00000DAE-5F23-0000-586C-0000281D0000

В принципе, можно в опциях монтирования указать не UUID, а просто номер диска в /dev/. Например, /dev/disk1s2 – я так обычно делаю на linux.

Название нужного диска можно определить командой:

diskutil list

Касательно опции монтирование SSD – noatime. Ничего сам не мудрил – у меня операционка сама смонтировала SSD с данной опцией. Возможно, это фича Yosemite.

macmini:~ home$ mount
/dev/disk0s2 on / (hfs, local, journaled, noatime)
devfs on /dev (devfs, local, nobrowse)
/dev/disk1s2 on /Users (hfs, local, journaled)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)

TRIM активировал с помощью Chameleon SSD Optimizer.

Файл гибернации перенёс сюда – /Users/.vm
Процедура описана нормально в упомянутом мною посте.

Что не указано
Необходимо также перенести swap на HDD. Подробно процедура описана тут.

Вкратце опишу процедуру:

Для начала определяем в какой папке будет лежать своп. Я решил в той же где и файл гибернации — /Users/.vm.

sudo mkdir /Users/.vm

Естественно, у меня операционка уже загружена с SSD и HDD подмонтирован в /Users. Открываем терминал и делаем бэкап файла настроек swap:

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

Конвертируем бинарный файл настроек в XML:

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

Открываем файл настроек любым редактором, я использовал vim.

sudo vim com.apple.dynamic_pager.plist

Меняем аналогичные строки на нижеуказанные:

<key>ProgramArguments</key>
<array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>/bin/wait4path /Users/.vm &&
/sbin/dynamic_pager -F /Users/.vm/swapfile</string>
</array>

Для тех, кто не умеет пользоваться vim – для редактирование нажимаем «i», в конце редактирования нажимаем Esc и для того, чтобы записать файл ":wq".

Конвертируем обратно в бинарник:

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

Перезагружается. Если что-то пошло не так – грузимся в verbose (Command-v) или single mode (Command-s) при загрузке и восстанавливаем файл настроек из бэкапа.

Автор также объясняет, для чего необходимо использовать консольную утилиту waith4path – процесс dynamic_page (управление свопом) запускается на очень ранней стадии старта операционки и другие диски кроме корня могут не успеть смонтировать на данной стадии, что приведет к проблемам.

Смотрим, создался ли своп по новому пути:

cd /Users/.vm
$ ls -la

У меня оперативки много, поэтому пришлось запустить кучу программ для того, чтобы ядро начало писать в своп. Если всё ОК, удаляем старый своп:

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

Ещё один важный момент – исключаем папку с файлом гибернации и свопа из TimeMachine. Для того, чтобы эта штука не бэкапилась. У меня это одна папка, поэтому:

sudo tmutil addexclusion -p /Users/.vm

Проверяем:

tmutil isexcluded /Users/.vm

И ещё рекомендуют данную папку из индексов, но у меня пока не взлетело:

sudo mdutil -i off /pathtoswap && sudo mdutil -E /pathtoswap 

Успехов!

Автор: Bearpuh

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js