Закрыть ... [X]

Как сделать блоки на одном уровне

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

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

Разработчики SSD накопителей сделали свой шаг придумавши заплатку в виде TRIM, остался ход за разработчиками операционных систем. Apple и Microsoft тоже не заставили себя долго ждать и добавили нативную поддержку команды TRIM для SSD накопителей в свои операционные системы (поддержка TRIM имеется в Windows начиная с 7, а в Mac OS X начиная с версии 10.6.6). Но Apple как всегда в своём репертуаре: сделали пакость в виде поддержки команды TRIM только теми накопителями, которые поставляются самой Apple. Причём реализовано это так подло, что злость аж разбирает! Сейчас объясню почему…

За поддержку команды TRIM в операционной системе обычно отвечает драйвер, в операционной системе Mac OS X это кекст (kext — kernel extension — расширение ядра). Работает он примерно так: смотрит на прошивку 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 AutoEnabler смог одновременно убить несколько зайцев: автоматический патчинг после каждого обновления системы, отсутствие необходимости пользоваться какой-либо программой для патчинга и универсальность (на данный момент протестировано на всех версиях Mac OS X: начиная от 10.6.6 и кончая 10.8.3).

Как вы поняли способы включения команды TRIM в Mac OS X на SSD накопителях сторонних поизводителей есть. Способ не один, а все имеющиеся достаточно простые. В этой заметке мы рассмотрим все мне известные, а начну я со сложного плавно переходя к самому простому.

 

Включаем 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.
    а) Для 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)|\x00\x00\x00\x00\x00\x00\x00\x00\x00|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)|\x00\x00\x00\x00\x00\x00\x00\x00\x00|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
Для восстановления оригинального драйвера достаточно передвинуть переключатель из положение «ON» в положение «OFF». TRIM Enabler от Оскара — это, несомненно, лёгкий способ активации TRIM, но не самый лёгкий. Посему представляю последний — моё скромненькое изобретение :)

 

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

Мне показалось, что процесс активации TRIM является хоть и лёгким, но не совсем удобным. Поэтому мне захотелось сделать нечто такое, что потребует единоразовой установки от пользователя, а далее будет работать само по себе проделывая всю грязную работёнку. Продуктом моей идеи и умений стал TRIM AutoEnabler. Этот пакет вообще не стоит описывать так как сам TRIM AutoEnabler вообще не имеет интерфейса: пакет содержит маленький скрипт-патчер и файл автозапуска. Два эти миниатюрные файлы проделывают в системе всё необходимое для автоматической активации TRIM на SSD накопителях «не Apple» поставки. Работать с TRIM AutoEnabler очень просто:

  1. Загружаем установочный пакет TRIM AutoEnabler;
  2. Устанавливаем пакет;
  3. Перезагружаемся.

Вот и всё. Об активации TRIM можно, в принципе, забыть до следующей переустановки операционной системы или до выхода OS X 10.9.


Метки: Mac OS X 10.6 Snow Leopard • Mac OS X 10.7 LionOS X 10.8 Mountain Lion • SSD • TRIM
 


Источник: http://macdaily.me/howto/how-to-enable-trim-in-mac-os-x-on-non-apple-ssd/

Поделись с друзьями



Рекомендуем посмотреть ещё:



Как включить поддержку TRIM для SSD накопителей сторонних Когда у марьяны ро и ивангая свадьба

Как сделать блоки на одном уровне Система Юрист. Версия для коммерческих организаций
Как сделать блоки на одном уровне Как построить веранду своими руками?
Как сделать блоки на одном уровне Разное. org - Новости, DLE шаблоны и пр
Как сделать блоки на одном уровне СТРОИМ ДОМ вместе - m
Как сделать блоки на одном уровне Миль Ми-28Н
Как сделать блоки на одном уровне 7 знаменитых казачьих атаманов Русская семерка
ArtOfWar. Титор Руслан Валерианович. Васька Вести. Ru: Какими бывают типичные лица святых-женщин Зуб мудрости режется и болит Конденсат на трубах холодной воды: что делать, как устранить Мелания Трамп в молодости 50 фото Секреты красоты 2017 Наина Владимирова - Золотая книга заговоров Пластиковые трубы большого диаметра: Классификация

ШОКИРУЮЩИЕ НОВОСТИ