Включать ли поддержку trim в mac os. Оптимизация MacOS для работы с SSD — как включить TRIM

11.04.2019 Фото и видео

Как сменить HDD на SSD у Mac, как включить TRIM на OS X и тесты производительности HDD vs SSD

13.11.13 в 13:34

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

Для того, чтобы SSD накопитель знал какие ячейки были удалены операционной системой и доступны для перезаписи была придумана команда TRIM, которая позволяет OS X уведомлять твердотельный накопитель о том, какие блоки данных уже не содержатся в файловой системе и могут быть использованы накопителем для физического удаления.

Каждый SSD, который продается вместе с Mac уже имеет поддержку команды TRIM, но если вы заменяете HDD на SSD самостоятельно команду TRIM нужно включить вручную. Инструкция по замене HDD на SSD для Mac доступна на сайте iFixit .

Что будет если не включить TRIM?

Если вы забудите или просто по незнанию не включите TRIM свободное место на новеньком SSD закончится. OS X не сможет уведомлять SSD о том, что ячейки освободились, не смотря на то, что корзина с файлами была очищена.

Как включить TRIM на OS X

Приложение Trim Enabler ($10) создано для того, чтобы включать команду TRIM для SSD, которые были куплены отдельно от Mac. Установив и запустив приложение включите поддержку TRIM в главном окне приложения. Если ваш SSD поддерживает это, TRIM будет включен.

В настройках приложения можно поставить галочку: Warm if trim patch is disabled (уведомлять, если TRIM отключен), что позволит приложению следить не отключился ли TRIM, например, после установки обновления системы.

Вторая вкладка отображает различную информацию о SSD диске, его производителе, серийном номере, состоянии «здоровья».

Третья вкладка имеет ряд настроек, которые не являются необходимыми, но могут быть полезными в некоторых случаях.

Sudden Motion Sensor (по умолчанию включен). SMS используется портативными Mac для того, чтобы ставить жесткий диск на паузу, когда он находится в движении (например падении). Это сделано для того, чтобы при падении ноутбука Apple пишущая головка HDD не повредила информацию. Если ваш Mac имеет лишь SSD диски этот параметр можно отключить, чтобы чуть снизить потребление аккумулятора.

Sleep Image . Когда Mac уходит в глубокий сон он записывает информацию из оперативной памяти на диск. Отключив этот параметр Mac перестанет глубоко засыпать, что сэкономит некоторое место на диске. Отключать этот параметр не рекомендуется, если ваш портативный Mac часто находится в режиме сна день или более.

Local Time Machine . Time Machine временно сохраняет бекапы, когда не подключена к внешнему накопитлю, использующемуся для хранения архивов Time Machine. Отключив эту функцию вы запретите диску делать это, что сэкономит какое-то место на диске.

Третья вкладка создана для тестирования SSD диска на производительность. После выбора объема тестового файла и запуска будет отображены результаты на скорость чтения, записи данных.

Стоит ли покупать Mac с SSD или устанавливать его самостоятельно?

Если вы все еще задаетесь вопросом, относительно того, нужен ли SSD вашему Mac и насколько разница в приросте производительности между HDD и SSD, то мы рекомендум ознакомиться с нашими некоторыми тестами. Тестировался MacBook Pro (mid 2012) с базовым HDD, который был заменен на SSD OCZ Vertex 4, VTX4-25SAT3-128G.

Результаты тестов показывают прирост скорости при запуске приложений в некоторых случаях в 2 раза, при использовании SSD, а полный запуск OS X ускорился в 5 раз.

Выход в широкие массы большого разнообразия 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/


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) Чистим кеш:

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

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

Для восстановления оригинального (ранее зарезервированного ) драйвера, а точнее его исполнительной, части проделываем в Терминале следующее:
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

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

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

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

Не помню, вроде бы не писал об этом.

Как известно, Apple не поддерживает включение TRIM на твердотелых дисках сторонних производителей. Но поддержку TRIM на операционных системах, выпущенных до OS X 10.10 Yosemite можно было включить сторонней утилитой Trim Enabler . На Mavericks и на Mountain Lion я так и делал. Версия утилиты "Pro" платная, но в бесплатной версии доступна основная функция - включение поддержки TRIM.

С выходом OS X 10.10 Yosemite лавочка закрылась. Apple начал блокировать сторонние драйвера. Включить поддержку TRIM на Yosemite теперь стало возможно только включив режим загрузки ядра с неподдерживаемыми драйверами. При сбросе PRAM система перестает грузиться, нужно начинать все сначала. Бубны и костыли. Я систему Yosemite проскочил, так что подробнее написать не могу.

В 10.11 наоборот, с вклчением TRIM на сторонних SSD никаких проблем нет, как ни странно. Всё делается одной командой в Терминале прямо в системе.

1. Запускаем Терминал.
2. Набираем команду: sudo trimforce enable и нажимаем enter:

3. Два раза поочередно соглашаемся, набрав "y" и нажав enter.
4. Компьютер автоматически перезагрузится. Всё, TRIM включен.
5. В "Отчете о системе" можно в этом убедиться:


6. ????
7. Profit!

Привет! Не так давно в свет вышла новая Mac OS под названием Sierra и дабы идти в ногу со временем, я решил обновить свой iMac до последней верссии 10.12. Ранее мною был приобретен внешний SSD от Samsung, скорость работы которого меня всегда безумно радовала. Так же в предыдущей версии Mac OS в ручную мне пришлось активировать режим TRIM. В данной статье мне хотелось бы поделится с вами как это сделать в новой версии (и наверняка во всех последующих т.к. все стало донельзя просто).

Не трудно догадаться, что речь сейчас пойдёт о вещи под названием TRIM. Что это такое?

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

Иными словами, на системе, где не работает TRIM, твердотельный накопитель со временем (примерно после полного цикла записи всего объёма) станет работать гораздо медленнее. На компьютерах Mac, которые изначально поставлялись с SSD накопителем, TRIM работает прямиком «из коробки». А вот для пользователей, которые в свой Mac сами устанавливали SSD накопитель от какого-либо другого бренда, ситуация немного другая. Виду «странной» политики компании Apple, «завести» TRIM в OS X для сторонних SSD’шек оказалось не так уж и просто. Для этого нужно было патчить системный KEXT (расширение ядра, в простонародье — драйвер) , и делать это приходилось практически после каждого обновления системы. С выходом OS X Yosemite ситуация ещё немного ухудшилась, так как в OS X 10.10 системные расширения и утилиты стали подписывать цифровой подписью, которая нарушалась при патчинге KEXT’а. Без цифровой подписи ядро операционной системы отказывалось грузить драйвер, без драйвера не запускался накопитель, система переставала грузиться. Но и для этого было найдено решение в виде специального параметра, который записывался в NVRAM и указывал ядру ОС, что неподписанные драйверы нужно всё равно загружать. В общем, был головняк. Но «Капитан» всё изменил.

Начиная с версии OS X 10.11 (то есть с El Capitan) для активации TRIM на всех SSD накопителях достаточно выполнить одну единственную команду, после которой TRIM будет работать штатно и всегда, без всяких патчингов и манипуляций с системой. Запускаем Терминал и выполняем команду:

sudo trimforce enable

Команду нужно подтвердить паролем администратора системы, после чего выдастся предупреждение, что, мол, включение этой опции может быть небезопасно и бла, бла, бла:

This tool force-enables TRIM for all relevant attached devices, even though they have not been validated for data integrity while using that functionality. By using this tool to enable TRIM, you agree that Apple is not liable for any consequences that may result, including but not limited to data loss or corruption.

С уверенностью в 99,999% можно игнорировать предупреждение и нажать клавишу Y и Enter . После этого система перезагрузится. В итоге, после перезагрузки, TRIM будет активирован и для его повторной активации лезть в систему больше никогда не понадобится:

Будьте в курсе всех важных событий United Traders - подписывайтесь на наш

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

Что такое TRIM

У электронных (SSD) дисков есть отличие от магнитно-механических (HDD) которое влияет на скорость записи. В HDD дисках запись выполняется «поверх» старых данных. Блоки диска, которые ранее содержали данные, а затем эти данные были удалены, просто помечаются как свободные. И когда нужно выполнять запись, контроллер HDD сразу записывает новые данные в эти свободные блоки.

Но при использовании флэш-памяти, блоки которые ранее содержали какую-то информацию, перед записью должны быть очищены. Это приводит к тому, что при записи в ранее использованные блоки скорость записи сильно падает, ведь контроллеру нужно их подготовить для записи (очистить).

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

Поэтому при использовании SSD дисков возникает эффект «деградации производительности». Когда диск новый и все блоки флэш-памяти чистые тогда скорость записи очень высокая, паспортная. Но после того как диск будет полностью заполнен и после этого часть файлов будет удалена, повторная запись будет происходить на более низкой скорости. Из-за того, что контроллеру диска придется очищать ранее использованные блоки флэш-памяти, перед записью туда новых данных.

Падение скорости записи в повторно используемые блоки флэш-памяти может быть очень высоким. До значений близких к скорости записи HDD дисков. При тестировании SSD дисков часто даже проводят отдельную проверку на снижение скорости записи в повторно используемые блоки.

Для борьбы с этим явлением, в новые ОС добавлена дисковая команда ATA TRIM. Драйвер файловой системы при удалении файла отправляет контроллеру SSD диска команду TRIM. По этой команде контроллер SSD диска очищает освобожденные блоки флэш-памяти, но делает это в фоновом режиме, в перерывах между операциями чтения и записи.

Иными словами, на системе, где не работает TRIM, твердотельный накопитель со временем (примерно после полного цикла записи всего объёма) станет работать гораздо медленнее. На компьютерах Mac, которые изначально поставлялись с SSD накопителем, TRIM работает прямиком «из коробки». А вот для пользователей, которые в свой Mac сами устанавливали SSD накопитель от какого-либо другого бренда, ситуация немного другая. Виду «странной» политики компании Apple, «завести» TRIM в OS X для сторонних SSD оказалось не так уж и просто. Для этого нужно было патчить системный KEXT (расширение ядра, в простонародье - драйвер) , и делать это приходилось практически после каждого обновления системы.

С выходом OS X Yosemite ситуация ещё немного ухудшилась, так как в OS X 10.10 системные расширения и утилиты стали подписывать цифровой подписью, которая нарушалась при патчинге KEXT’а. Без цифровой подписи ядро операционной системы отказывалось грузить драйвер, без драйвера не запускался накопитель, система переставала грузиться. Но и для этого было найдено решение в виде специального параметра, который записывался в NVRAM и указывал ядру ОС, что неподписанные драйверы нужно всё равно загружать. В общем, был головняк. Но «Капитан» всё изменил.

Начиная с версии OS X 10.11 El Capitan для активации TRIM на всех SSD накопителях достаточно выполнить одну единственную команду, после которой TRIM будет работать штатно и всегда, без всяких патчингов и манипуляций с системой. Запускаем Терминал и выполняем команду:

sudo trimforce enable

Команду нужно подтвердить паролем администратора системы, после чего выдастся предупреждение, что, мол, включение этой опции может быть небезопасно и бла, бла, бла:

This tool force-enables TRIM for all relevant attached devices, even though they have not been validated for data integrity while using that functionality. By using this tool to enable TRIM, you agree that Apple is not liable for any consequences that may result, including but not limited to data loss or corruption.

С уверенностью в 99,999% можно игнорировать предупреждение и нажать клавишу Y и Enter . После этого система перезагрузится. В итоге, после перезагрузки, TRIM будет активирован и для его повторной активации лезть в систему больше никогда не понадобится:

Удаленные данные и их восстановление

Если использовать Trim, то о восстановлении удаленных данных можете забыть. Если удалить файл, то все его данные на SSD дисках будут полностью уничтожены.

Так как же влияет Trim на скорость записи?

Нужно понимать, что применение или отсутствие функции Trim напрямую не повлияет на скорости записей на SSD диски. Повлияет на это единственный фактор - присутствие достаточного количества пустых блоков flash памяти. То есть тех блоков, которые полностью очищены контроллером диска и приготовлены для записи на них новых данных.

Проще говоря, скорости записи зависят от количества свободного места на SSD диске. Если же ваш диск практически полностью занят, то и скорости записи упадут даже в том случае, если вы пользуетесь Trim. А в том случае, если у вас не менее 20-30% емкости SSD диска остаются без разметки (unallocated disk space), то можете обходиться и без использования функции Trim. Контроллер SSD диска будет применять неиспользуемое место под разделы для того, чтобы выровнять скорость записи.