Как включить поддержку TRIM для SSD сторонних производителей в Mac OS X

Апрель, 02nd 2018Рубрика: Apple 3259
Подписаться на комментарии по RSS

поддержка TRIM для SSD в Mac OS

Тема будет актуальна в первую очередь владельцам старых маков, когда нет возможности установить OS X Yosemite (10.10.4) или новее, но вы решили дать своему компьютеру или ноутбуку вторую жизнь, заменив обычный диск на SSD. Впрочем, для владельцев более свежих устройств тоже найдется полезная информация, если вы самостоятельно делали апгрейд и установили сторонний SSD.

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

Поддержка TRIM появилась с выходом Windows 7, а в Mac OS X начиная с версии 10.6.6. Однако Apple и тут отличилась, включив поддержку данной команды исключительно для оригинальных дисков, поставляемых вместе с компьютерами Mac, любые сторонние диски этой возможности оказались лишены.

Как такое возможно? Дело в том, что за работу команды TRIM в операционной системе отвечает драйвер, в Mac OS эта роль возложена на расширения ядра — kext (kernel extension) IOAHCIFamily.kext. Тут то Apple и подложила свинью любителям самостоятельно апгрейда, проверяя наличие строки «APPLE SSD» в прошивке твердотельного накопителя. Если подобной метки не находилось, то досвидули — никакого TRIM’а для этого накопителя не будет.

Счастье пришло с выходом OS X Yosemite (10.10.4), где поддержка TRIM стала доступна для любых сторонних SSD (по умолчанию команда может быть отключена). Для ее активации достаточно в терминале ввести всего одну команду:

sudo trimforce enable

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

Назревает вопрос, откуда вдруг такая щедрость? Дело в том, что с новыми моделями ноутбуков Apple нашла другой путь навязывать свои фирменные комплектующие — каждое новое поколение современных Macbook теперь имеет собственный уникальный разъем подключения SSD, но об этом расскажу в одной из следующих статей.

Активация TRIM в Mac OS X (ниже 10.10.4) для любых SSD накопителей

Активировать TRIM для изначально неподдерживаемых SSD накопителей в MacOS всё-таки можно путём некоторой правки системного кекста IOAHCIFamily.kext, который отвечает за поддержку TRIM. Суть метода в следующем — в бинарнике кекста строчка «APPLE SSD» (встречается в двух местах) заменятся нулями. Таким образом логика его работы меняется на следующую: если искомая строка равна «ничего», то активируется TRIM для этого накопителя.

Данный метод придуман не мной, описание можно найти в интернете. Я лично проверял работу этого метода на паре Mac mini, так что всё реально работает. Команды удобно выполнять в терминале копированием-вставкой, так вы избежите ошибок.

  1. Получаем права администратора (root’а):
  2. sudo -s
  3. Делаем резервную копию оригинального драйвера:
  4. 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
  5. Патчим бинарный файл в кексте IOAHCIFamily.kext.
  6. а) Для Mac OS X Snow Leopard и Lion (10.6.6-10.7.4), а так же Mountain Lion 10.8.0:

    perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

    б) Для OS X Lion и Mountain Lion (10.7.5 и выше, 10.8.1 и выше):

    perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x4D)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
  7. Чистим кеш:
  8. kextcache -system-prelinked-kernel; kextcache -system-caches
  9. Перезагружаемся.

Проверить заработал ли TRIM довольно легко, достаточно посмотреть информацию о системе, выбрав пункт Последовательный-ATA (Serial-ATA), где увидим строку «Поддержка TRIM».

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

Хочу отметитесь, что повторно выполнять патч нужно при любом обновлении Mac OS X (OS X 10.7.1 > 10.7.2 > 10.7.3 > ...), но думаю это не актуально. Восстановить оригинальный kext всегда можно из резервной копии, которую мы делали ранее:

sudo 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

После чего снова чистим кеш и перезагружаемся:

kextcache -system-prelinked-kernel; kextcache -system-caches

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

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

  1. 2018-04-03 в 11:06:34 | Юрий

    С включенной функцией компьютер быстрее начнет работать?

  2. 2018-04-04 в 12:11:39 | злоймак

    Современные ssd от именитых производителей с нормальными контроллерами самостоятельно умеют выполнять эту функцию. Это интересно только тем кто пытается сэкономить на нормальном диске и покупают всякие помои. В новых дисках с 2015 модельного года там всё по умолчанию в контроллере.

  3. 2018-10-28 в 09:46:14 | Андрей

    MacBook Air 13" 2015 года, ОС версии 10.12, установлен BootCamp и Windows 10, после года использования Windows, диск стал заметно медленно работать, прогнал тест на чтение в HDTune, тест скорости показал интересную картину периодически на всем объеме диска скорость резко менялась от 100МБ/с до 250МБ/с, такие прямоугольные площадки на графике. Сделал полную оптимизацию с помощью UltraDefrag, теперь с начала графика скорость 350МБ/С, затем на объеме 20ГБ скачек до 780МБ/с, затем на объеме 60ГБ падение снова до 350МБ/с и с этой скоростью до самого конца диска. Как я понимаю из графика первые 20ГБ = участку с данными и системой МАК ОС (в системе показывает занятое место в 17ГБ), второй участок с 780МБ/с это пустой участок в МАК ОС, начиная с 61ГБ идет участок с данными и ОС Windows.

    Что хотел спросить:

    1. Windows 10 не инициирует TRIM получается, или эта команда запрещена в BootCamp?

    2. Почему скорость на всем участке сильно неравномерная?

    Что можно сделать в этой ситуации?

ваш комментарий будет опубликован после проверки
на указанный адрес будет отправлено письмо с кодом активации. Вы можете настроить собственный профиль и стать активным участником или автором.