Оптимизация MacOS для работы с SSD — как включить TRIM

Главная/Знания/MacOS/Оптимизация MacOS для работы с SSD — как включить TRIM

Оптимизация MacOS для работы с SSD — как включить TRIM

Выход в широкие массы большого разнообразия SSD накопителей по относительно доступной цене подстегнул пользователей к обновлению не очень быстрых HDD, а разработчиков, в свою очередь, задуматься над софтверным вопросом своих операционных систем дабы обеспечить быструю, правильную, долговечную и стабильную работу этих накопителей в своих ОС.Основной функцией, которая необходима для правильной работы SSD накопителей, является поддержка команды TRIM.

TRIM — это ATA команда, которая позволяет операционной системе оповестить твердотельный накопитель о неиспользуемых блоках, информация на которых может быть удалена или повторно перезаписана. Ввиду того, что на низком уровне операции записи/перезаписи на SSD накопителях существенно отличаются от таковых на HDD накопителях, обычные методы операционных систем для удаления, форматирования или перезаписи информации приводили к прогрессирующему ухудшению производительности операций записи на твердотельных накопителях. Введение поддержки команды TRIM позволило операционной системе очищать неиспользуемые ячейки перед тем, как в них будет произведена запись информации. Это позволило существенно уменьшить время доступа к данным и предотвратить процесс ухудшения производительности SSD накопителей.

Apple и Microsoft, естественно, добавили нативную поддержку SSD накопителей в свои операционные системы (поддержка TRIM имеется в Windows начиная с 7, а в Mac OS X начиная с версии 10.6.6). Но «жуки» в Apple (за что я их недолюбливаю) сделали пакость в виде поддержки команды TRIM только теми накопителями, которые поставляются Apple. Почему жуки? -Да потому что кекст, отвечающий за поддержку TRIM, делает нечто следующее: смотрит на прошивку SSD накопителя и ищет в ней строку APPLE SSD. Если такое имеется — ОК, TRIM будет работать для этого драйва; если искомой строки нет, то и TRIM’а для этого накопителя тоже нет. Таким образом, проапгрейдив свой Mac быстрым SSD накопителем стороннего производителя вы в скором времени получите отличный «ручник» вместо «ракеты». Но это уже в прошлом, успокойтесь. Спустя непродолжительное время в сети появилась инструкция для взлома системного kext’а (расширения ядра), которое позволило активировать TRIM в Mac OS X для абсолютно всех SSD накопителей. А ещё спустя некоторое время Оскар Грот создал утилиту TRIM Enabler, которая в пару кликов позволила проделывать «хактивацию» системного кекста IOAHCIFamily.kext и, тем самым, производить активацию TRIM для изначально неподдерживаемых SSD накопителей.  Работа этого хака проста как два пальца… Но это нужно же было найти?! В общем, кому интересно, хак заключается в следующем: берём бинарик кекста IOAHCIFamily.kext, который отвечает за поддержку TRIM и забиваем через HEX редактор нули вместо строчки APPLE SSD (она встречается в двух местах). Таким образом хак делает с кекстом нечто такое, что логика его работы меняется на такую: если искомая строка равна «ничего» (чего быть вобще не может), то мы активируем TRIM для этого накопителя. Как вы поняли способ включения команды TRIM в Mac OS X на SSD накопителях сторонних поизводителей есть и он очень прост. Кроме того этих способов как минимум два: ручной (при помощи консоли) и автоматический (при помощи утилиты TRIM Enabler). В этой заметке мы рассмотрим оба способа, а начнём со сложного, то есть с того, который реализуется при помощи терминала.

 

Включаем TRIM в Mac OS X ручками


Запускаем Терминал и выполняем последовательно нижеприведенные команды. Поле каждой команды нажимаем Enter для её выполнения. Я лично проверял работу этого метода, но так как у всех пользователей разные браузеры (теоретически) могут возникнуть какие-либо неточности отображения. Поэтому рекомендую загрузить текстовый документ, в котором команды расположены построчно и 100% без ошибок, к тому же их удобно выполнять копированием-вставкой в окно Терминала. Приступаем…

1) Получаем права администратора (root’а):
sudo -s

2) Делаем резервную копию оригинального драйвера:
cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/
IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/
IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage-orig

3) Патчим бинарный файл в кексте IOAHCIFamily.kext:
perl -pi -e 's|(x52x6Fx74x61x74x69x6Fx6Ex61x6Cx00).{9}(x00x51)|$1x00x00x00x00x00x00x00x00x00$2|sg'
/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/
IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

4) Чистим кеш:
kextcache -system-prelinked-kernel; kextcache -system-caches

5) Перезагружаемся.

Узнать о том, работает ли TRIM или нет очень легко: запускаем утилиту Информация о системе (/Applications/Utilities/System Information.app), слевой стороны выбираем пунктПоследовательный-ATA (Serial-ATA) и смотрим на строку Поддержка TRIM. Если Да — всё отлично, TRIM включился; если Нет — значит что то пошло не так:

Проверка состояние команды TRIM в Mac OS X

Для восстановления оригинального (ранее зарезервированного) драйвера, а точнее его исполнительной, части проделываем в Терминале следующее:
1) Получаем права администратора (root’а):
sudo -s

2) Восстанавливаем оригинальный бинарный файл в кексте IOAHCIFamily.kext:
mv /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/
IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage-orig
/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/
IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

3) Чистим кеш:
kextcache -system-prelinked-kernel; kextcache -system-caches

4) Перезагружаемся


 

Ручной способ — это несомненно хорошо (можно понять принцип работы того или иного хака, и, к тому же, наловчиться работе с терминалом). Но это, так сказать, не Mac Way, а для новичков вобще что то загадочное и страшное (часто убивающее систему). Поэтому рассказываю и о втором — автоматическом способе активации TRIM при помощи утилиты TRIM Enabler. Перед инструкцией хочу немного рассказать о самой утилите. Изначально она была реализована на AppleScript, а принцип работы заключался в автоматической подмене оригинального драйвера IOAHCIFamily.kext на изначально пропатченный драйвер взятый из Mac OS X 10.6.8. Как вы понимаете это не очень хорошо, особенно если речь идёт об включении TRIM в операционной системе отличной от Mac OS X 10.6.8 Snow Leopard. По этой причине версия TRIM Enabler 1.x была несовместима с Mac OS X Lion. Сейчас Оскар Грот — автор утилиты, выпустил вторую версию. По заявлению автора онацеликом и полностью была переписана на Objective-C, обзавелась дополнительным функционалом для мониторинга S.M.A.R.T., и, что самое главное, теперь она не подменяет, а именно патчит имеющийся системный драйвер. На момент написания данной заметки последний билд имел порядковый номер 2.0 Beta 4. В курс дела ввёл, теперь перейдём к самой утилите и посмотрим как она работает.

 

Включаем TRIM в Mac OS X при помощи TRIM Enabler


Trim Enabler 2.0 для Mac OS X

1. Скачиваем TRIM Enabler и двойным кликом по архиву распаковываем его в удобное место;
2. Запускаем TRIM Enabler.app;
3. Перетягиваем переключатель из положение OFF в положение ON;
4. Вводим пароль администратора и ждём около минуты (на всякий случай);
5. Перезагружаем Mac.

После перезагрузки запускаем утилиту Информация о системе, выбираем пунктПоследовательный-ATA, смотрим на строку Поддержка TRIM в поисках заветного слова «Да«:

Проверка состояние команды TRIM в Mac OS X

Всё, TRIM работает! Для восстановления оригинального драйвера достаточно передвинуть переключатель из положение ON в положение OFF. На этом всё.

2013-02-17T09:29:36+00:00 Июнь 2nd, 2012|Categories: MacOS|Нет комментариев

About the Author:

Комментарии:

Оставить комментарий