Как работает TRIM Enabler?

8

Я недавно купил третий твердотельный накопитель (OCZ) и использовал Trim Enabler, чтобы включить TRIM. Я заметил, что некоторые обновления программного обеспечения могут приводить к отключению TRIM, и поэтому мне было любопытно, как работает TRIM Enabler.

  • Заменяет ли он какой-то KEXT по умолчанию на пользовательский для поддержки TRIM или просто переключает некоторые настройки PLIST?
  • В любом случае, существует ли файл, который, будучи заблокирован, может гарантировать, что TRIM остается включенным (без каких-либо негативных последствий)?
Александр - Восстановить Монику
источник

Ответы:

9

Trim Enabler исправляет следующий Kext-файл

/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

который проверяет, является ли ssd сторонним или фирменным SSD Apple:

IOAHCI hex / ascii view

Вы также можете включить обрезку вручную, отыскивая все вхождения Apple в файле и исправляя их в hex-редакторе или через терминал:

##1. Backup old file
    $sudo 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.original

##2. Patch the file to enable TRIM support
    $sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\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

##3. Clear the system kernel extension cache

   $sudo kextcache -system-prelinked-kernel

   $sudo kextcache -system-caches
Chrisii
источник
1
Как ты вообще нашел этот материал ?! Если я запустите TRIM Enabler, чтобы «исправить» мой файл IOAHCIBlockStorage, а затем заблокировать его (с правами администратора), будут ли у меня какие-либо неблагоприятные последствия? Конечно, я не смогу поддерживать новые PCIe SSD (которых у меня нет даже в MacBook), но помешает ли это в будущих обновлениях отменить патч?
Александр - Восстановить Монику
мое лучшее предположение: даже если вы заблокируете файл от редактирования .. программа обновления просто заменит файл полностью новым файлом. Вы должны были бы удалить разрешение на запись для пользователя root из всей папки. В этом конкретном случае я предполагаю, что установщик потерпит неудачу, так как не может записать в папку. На мой взгляд, это не стоит хлопот. Просто запустите Trim Enabler после обновления и повторно примените патч.
Кристи
@Chrisii вы знаете, будет ли это работать в Йосемити? Это меняет подпись kext?
Thepen
@ thepen Я еще не тестировал его, но могу с уверенностью сказать, что изменение файла изменит подпись kext и, следовательно, чтобы она вообще работала, вам придется сначала отключить проверку подписи kext (Более подробную информацию можно найти здесь cindori .org / trim-enabler-and-yosemite )
Кристи
2

Единственная информация, которую я могу найти по этому вопросу, - это запись в FAQ / blogpost.

A: Trim Enabler исправляет собственный драйвер OSX Trim, который работает в фоновом режиме, даже когда приложение закрыто или удалено. Этот патч сбрасывается при обновлении системы, поэтому рекомендуется сохранить приложение.

Меган Уокер
источник
Путь обычно сбрасывается при обновлениях, когда Apple решает обновить упомянутые расширения ядра, например, для поддержки новых дисков ssd (Думая о новых ppcie ssds, анонсированных на WWDC).
Кристи
2

В твердотельных накопителях OCZ используется контроллер Sandforce, который имеет встроенную сборку мусора на переднем плане, что устраняет необходимость стирать блоки, уменьшая, но не устраняя необходимость поддержки TRIM. Обрезку можно считать помощью для сбора мусора.

Trim VS Сборка мусора

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

[…] Все твердотельные накопители на базе NAND Flash используют GC. Некоторые используют GC переднего плана, а некоторые используют фоновый или простой GC. Разница между ними описана в моем блоге http://blog.lsi.com/dont-let-ssds-throw-away-your-gold/ . Проще говоря, фоновая сборка мусора будет увеличивать усиление записи (WA) и быстрее изнашивать SSD. Достигнуть Foreground GC труднее, и я верю, что только контроллер SandForce может сделать это сегодня

[…] TRIM полезен для всех твердотельных накопителей независимо от того, какой тип сборки мусора используется. Я рассказываю о том, как появилась TRIM и почему это необходимо, в моем блоге http://blog.lsi.com/did-you-know-hdds-do-not-have-a-del… . Команда TRIM отправляется ОС на SSD, чтобы определить, какие страницы данных можно игнорировать во время сбора мусора. SSD не может сказать, какие файлы были удалены, пока ОС не использует те же сектора для хранения новых файлов, но к тому времени SSD уже потратил впустую циклы, собирая данные, которые были недействительными, но были известны SS.

Знаете ли вы, что на жестких дисках нет команды удаления? Вот почему твердотельные накопители нуждаются в TRIM

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

ручка
источник