Pull to refresh

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

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

Решил модернизировать смой 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
Процедура описана нормально в упомянутом посте.
Проверить работает ли hibernate и его режим.
sudo pmset -g


Что не указано
Необходимо также перенести 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 &amр;&amр;
/sbin/dynamic_pager -F /Users/.vm/swapfile</string>
</array>

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

Конвертируем обратно в бинарник:
sudo plutil -convert binary1 com.apple.dynamic_pager.plist

ВАЖНЫЙ МОМЕНТ — в вышеуказанном листинге com.apple.dynamic_pager.plist в кодах &amр; буква p это русская эр!
По этому лучше не копировать, а перепечатать. Иначе сделать не мог — скрипты форума преобразовывают &amр; в &.

Перезагружаемся. Если что то пошло не так — грузимся в verbose mode (Command-v при загрузке) или single mode (Command-s при загрузке) и восстанавливаем файл настроек из бэкапа.
Автор, так же объясняет для чего необходимо использовать консольную утилиту waith4path — процесс dynamic_page (управление свопом)
запускается на очень ранней стадии старта операционки и другие диски кроме корня могут не успеть смонтировать на данной стадии, что приведет к проблемам.

Смотрим создался ли своп по новому пути.
cd /Users/.vm
$ ls -la

У меня оперативки много, по этому пришлось запустить кучу программ для того, чтобы ядро начало писать в своп.
Если все ОК, удаляем старый своп.
$ cd /private/var/vm
$ sudo rm swapfile*

Проверка включен ли своп.
sysctl vm.swapusage

Еще один важный момент — исключаем папку с файлом гибернации и свопа из TimeMachine.
Для того, чтобы не создавался бэкап свопа и файла гибернации. У меня это одна и та же папка, по этому:
sudo tmutil addexclusion -p /Users/.vm

Проверяем:
tmutil isexcluded /Users/.vm

И еще рекомендуют исключить своп из индексов, но нижеуказанная команда сработает, только если у вас своп и файл гибернации на отдельном логическом томе.
Эдакий linux way.
sudo mdutil -i off /pathtoswap && sudo mdutil -E /pathtoswap 

Проверить индексацию можнор так.
sudo mdutil -s /pathtoswap

Успехов!
Tags:
Hubs:
Total votes 5: ↑4 and ↓1+3
Comments14

Articles