Почему внешний SSD стал медленным на Mac: проблема Trim

macOSTahoe ·
Почему внешний SSD стал медленным на Mac: проблема Trim

Внешний SSD медленно пишет на Mac, а читает по-прежнему быстро? Это проблема Trim, и две проверки, которые советуют повсюду, на Apple silicon не делают ничего.

Внешний SSD, который прошлой весной копировал папку проекта объёмом 40 ГБ со скоростью 900 МБ/с, теперь тратит на ту же работу одиннадцать минут. Больше ничего не изменилось. Тот же кабель, тот же порт, тот же Mac, тот же накопитель. А когда вы копируете эту папку обратно с диска, всё по-прежнему летает. Чтение ровно такое же быстрое, каким было всегда. Развалилась только запись.

Эта асимметрия и есть вся суть. Проблема с кабелем замедляет чтение и запись одновременно. Неисправный порт замедляет чтение и запись одновременно. Троттлинг по температуре замедляет всё, а затем всё восстанавливается, когда корпус остывает. Накопитель, у которого скорость записи рухнула, а скорость чтения осталась нетронутой, показывает вам конкретную, хорошо изученную неисправность: у его флеш-памяти закончились предварительно стёртые блоки, и никто не сообщает ему, какие блоки ему разрешено стирать. Это проблема Trim.

Самое досадное происходит дальше. Вы ищете, как проверить состояние Trim на Mac, и находите два одинаковых совета, повторённых на десятках сайтов, включая один, который опубликовали мы сами. Выполните system_profiler SPSerialATADataType | grep TRIM для проверки. Выполните sudo trimforce enable для исправления. На современном Mac первая команда не выводит вообще ничего, а вторая не делает ровным счётом ничего для USB-накопителя. Ни там, ни там нет опечатки, ни одна из них не является устаревшей, и ни одна из них не выдаст сообщения об ошибке, которое сообщило бы вам, что она неприменима. Они просто тихо оказываются нерелевантными.

Это руководство исправляет ситуацию. Оно объясняет, что на самом деле делает Trim и почему его отсутствие бьёт именно по записи, показывает, как отличить проблему Trim от четырёх похожих на неё вещей, демонстрирует, почему именно две стандартные проверки не работают (с командами, которые вы можете выполнить сами и увидеть их провал), а затем даёт две проверки, которые действительно работают на Mac с Apple silicon. Всё, что здесь описано как проверенное, было зафиксировано на Mac с Apple silicon под управлением macOS 26.5.2, сборка 25F84.

Ключевые выводы

  • Асимметрия чтения и записи — это и есть диагноз — Ховард Оукли из The Eclectic Light Company приводит конкретное число: «Если скорость записи упала до 20% от скорости чтения или ниже, вы можете быть уверены, что дело в проблеме Trim».
  • sudo trimforce enable не является исправлением для внешних накопителей — в её собственной man-странице сказано, что она включает Trim «на сторонних накопителях, подключённых к контроллеру AHCI», то есть к интерфейсу SATA, поэтому на USB- или NVMe-накопитель она не влияет никак.
  • system_profiler SPSerialATADataType на Apple silicon ничего не выводит — этот тип данных на таких машинах не существует, поэтому самая растиражированная в интернете проверка Trim возвращает пустой результат, который люди принимают за доказательство чего угодно.
  • Работающие проверки — это system_profiler SPNVMeDataType и единый журнал в момент монтирования — APFS выдаёт своё сканирование Trim при монтировании тома, поэтому нужно отключить накопитель, засечь время, подключить его обратно и немедленно прочитать журнал.
  • Единственное лечение — полное стирание и переформатирование — не существует пользовательской команды, которая выполнила бы trim накопителя по требованию, и Apple не публикует списка совместимости, из которого можно было бы узнать, какие корпуса пропускают Trim, до покупки.

Что на самом деле делает Trim и почему страдает только запись

Проблема блока стирания

У флеш-памяти есть асимметрия, заложенная в самом кремнии. Читать любую страницу можно свободно. Записывать можно в страницу, которая в данный момент стёрта. Но нельзя перезаписать страницу, которая уже содержит данные. Чтобы использовать её повторно, накопитель должен сначала её стереть, а стирание происходит не постранично. Оно происходит в рамках гораздо более крупной единицы, которая называется блоком стирания и содержит множество страниц.

Ховард Оукли описывает последствия прямо: «Прежде чем SSD сможет записать в блок памяти, который уже использовался, он должен его стереть, а время цикла стирания-записи у него ужасающе медленное».

В этом весь механизм. Когда у накопителя есть здоровый запас уже стёртых блоков, входящая запись — это простая операция программирования, которая завершается на заявленной скорости накопителя. Когда запаса нет, каждая входящая запись превращается в цепочку работы: найти блок с частично устаревшими страницами, вычитать страницы, которые всё ещё актуальны, записать эти актуальные страницы куда-то ещё, стереть весь блок и только потом записать ваши новые данные. Эта цепочка называется read-modify-write, и она может стоить на порядок больше времени, чем чистая запись.

Почему накопитель не может разобраться сам

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

Trim — это сообщение, которое закрывает этот разрыв. Когда файловая система освобождает место, она может отправить команду Trim со списком логических адресов блоков, в которых больше нет ничего интересного для операционной системы. Накопитель помечает их как недействительные, и его фоновая сборка мусора получает возможность консолидировать и стереть их, наращивая пул предварительно стёртых блоков, который поддерживает высокую скорость записи.

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

Почему чтение остаётся идеально быстрым

Чтение никогда не требует стирания. Чтение — это поиск в слое трансляции флеш-памяти, за которым следует операция считывания страницы. Держит ли накопитель сто гигабайт по-настоящему актуальных данных или сто гигабайт данных, логически удалённых полгода назад, не имеет никакого значения для того, насколько быстро он вернёт вам запрошенную страницу.

Именно поэтому симптом настолько характерен и именно поэтому ему стоит доверять. Накопитель с проблемой Trim не болен. Любое другое измерение, которое вы можете с него снять, выглядит нормально: статус S.M.A.R.T. в порядке, том монтируется мгновенно, «Первая помощь» в Disk Utility проходит успешно, последовательное чтение выдаёт те же цифры, что и в первый день. Деградировал только путь записи, потому что только путь записи зависит от наличия стёртых блоков под рукой.

Как ведёт себя со временем накопитель, который никогда не получал Trim

Деградация не линейна и не мгновенна, поэтому люди замечают её только через месяцы.

У совершенно нового или только что стёртого SSD каждый блок находится в стёртом состоянии, поэтому запись проходит напрямую. Так продолжается до тех пор, пока накопитель не будет записан примерно на весь свой объём хотя бы один раз. Общий объём записанных байтов важнее, чем то, насколько заполненным он выглядит в Finder прямо сейчас: накопитель на 2 ТБ, на котором никогда единовременно не хранилось больше 400 ГБ, всё равно мог получить обращение к каждому физическому блоку, если вы прогнали через него 400 ГБ материала двадцать раз.

После этой точки накопитель, который получает Trim, чисто восстанавливается после каждого удаления. Накопитель, который его не получает, не восстанавливается никогда. Его контроллер держит каждый когда-либо записанный блок помеченным как актуальный, его резерв избыточного выделения (небольшой запас, который откладывает производитель, обычно однозначный процент) остаётся единственной свободной областью, и он перемалывает read-modify-write для каждой входящей записи.

Поэтому накопитель кажется нормальным от шести до восемнадцати месяцев, а затем за пару недель становится мучительным. За эти недели ничего не произошло. Вы пересекли порог.

Сигнатура симптомов: как отличить проблему Trim от четырёх двойников

У медленных внешних накопителей на Mac есть несколько причин, и три из них в первый год жизни накопителя встречаются гораздо чаще, чем Trim. Прежде чем что-либо стирать, убедитесь, что вы смотрите на нужную неисправность.

Симптом встречается достаточно часто, чтобы на форумах поддержки самой Apple регулярно появлялись темы о нём, включая обсуждение 254727504, «Why is my external SSD so slow at writing?», и обсуждение 255040461, «Slow external SSD». Если вы хотите посмотреть, как другие люди описывали ту же проблему, прежде чем начнёте тестировать, туда имеет смысл заглянуть.

Тест на соотношение

Скопируйте один большой файл, минимум 8 ГБ, в каждом направлении и засеките оба раза. Не папку с мелкими файлами — это измеряет накладные расходы файловой системы, а не чистую пропускную способность. Один большой файл.

Затем сравните. Если и чтение, и запись медленные и примерно одинаковые между собой, проблема в подключении, а не во флеш-памяти. Если чтение нормальное, а запись составляет от него малую долю, вы на территории Trim. Порог Оукли — это то, за что стоит держаться: при 20% от скорости чтения или ниже можно быть уверенным.

Таблица сравнения симптомов

Что вы наблюдаетеНаиболее вероятная причинаКак это подтвердить
Запись медленная, чтение нормальное, в прошлом году всё было в порядкеTrim не доходит до накопителяТест на соотношение, затем проверка журнала при монтировании (ниже)
И чтение, и запись медленные, примерно с одинаковым коэффициентомКабель, порт или линк, который согласовался ниже заявленной скоростиПоменяйте кабель, попробуйте другой порт, проверьте согласованную скорость в System Information
Начинается быстро, резко падает через 20–60 секунд, восстанавливается при паузеИсчерпание SLC-кэша записи или температурный троттлингЗапустите одну передачу дольше 3 минут и следите за кривой; потрогайте корпус
Медленно только с папками из множества мелких файловНакладные расходы файловой системы и метаданных, индексация Spotlight, защитное ПОПовторите с одним большим файлом; если он быстрый, дело не в накопителе
Случайные отключения, «Диск извлечён неправильно», накопитель пропадает посреди копированияПитание по шине или управление питанием корпусаСначала устраните отключения; до этого любое измерение скорости ненадёжно
Накопитель виден в Disk Utility, но не в Finder, или отображается дваждыОшибка на уровне монтирования, а не проблема производительностиЭто вообще не неисправность скорости, и стирание её не решит
Медленно на одном Mac, быстро на другом, тот же кабельПорт, хаб или док-станция того MacПротестируйте накопитель напрямую на обеих машинах без хаба между ними
Всегда был таким медленным, с самого первого дняНе Trim. Проверьте, SSD ли это вообще и на какой скорости согласуется линкУ нового накопителя все блоки стёрты, и проблемы Trim у него быть ещё не может

Последняя строка заслуживает акцента, потому что она спасает людей от бессмысленного стирания накопителя. Проблема Trim не может существовать на накопителе, который всегда был медленным. Деградация из-за Trim требует истории. Если накопитель был медленным прямо из коробки, смотрите на корпус, кабель и на то, поднялся ли линк на той скорости, за которую вы заплатили.

Сначала исключите подключение

Две минуты работы здесь избавят вас от ненужного стирания.

Откройте System Information (удерживая Option, нажмите на меню Apple, затем System Information) и найдите накопитель в разделе USB или Thunderbolt/USB4. Проверьте скорость, на которой линк реально согласовался, а не скорость, напечатанную на коробке. Накопитель, способный на 10 Гбит/с, который поднялся на линке 480 Мбит/с из-за зарядного кабеля, будет катастрофически медленным в обоих направлениях.

system_profiler SPUSBHostDataType

Эта команда выгружает то же самое дерево USB в текстовом виде, включая скорость линка для каждого подключённого устройства. Если вы на Thunderbolt, используйте вместо неё SPThunderboltDataType. Оба этих типа данных существуют на Apple silicon, чего, как объясняет следующий раздел, нельзя сказать о том, который советуют использовать все.

Также поменяйте кабель, прежде чем делать какие-либо выводы. Кабели USB-C колоссально различаются по тому, что они реально поддерживают, и тот, который прекрасно заряжает, может быть ограничен скоростями данных USB 2.0. Исключить эту переменную ничего не стоит, а объясняет она очень многие сообщения в духе «мой SSD стал медленным».

Почему две стандартные интернет-проверки не работают на современном Mac

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

trimforce делает не то, что говорят почти все

Выполните man trimforce на своём Mac. Man-страница по-прежнему присутствует в macOS 26.5.2 на Apple silicon, и отчасти поэтому этот совет отказывается умирать. Вот что там написано, дословно.

Строка NAME гласит: «trimforce – enable TRIM commands on third-party drives».

DESCRIPTION гласит: «trimforce enables sending TRIM commands to third-party drives attached to an AHCI controller. By default, TRIM commands are not sent to third-party drives. Use extreme caution when enabling TRIM, as some drives may not correctly handle the commands. trimforce must be run by the system administrator».

Команда enable документирована так: «Start sending TRIM commands to AHCI-attached third-party drives. Requires a reboot to take effect».

А раздел HISTORY гласит: «The trimforce utility first appeared in OS X 10.10.4».

Перечитайте DESCRIPTION и остановитесь на четырёх словах: attached to an AHCI controller. AHCI, Advanced Host Controller Interface, — это стандартный хост-интерфейс для накопителей SATA. Это не USB. Это не NVMe. Это не Thunderbolt.

То, для чего создавалась trimforce ещё в OS X 10.10.4 в 2015 году, — это конкретная и уже во многом историческая ситуация: кто-то вскрывает Mac, который поставлялся с жёстким диском или SATA-накопителем Apple, устанавливает внутрь сторонний SATA SSD и обнаруживает, что macOS по умолчанию отказывается отправлять Trim накопителю, который Apple не квалифицировала. trimforce отменяет этот отказ. В этом всё её назначение, а предупреждение о накопителях, которые «may not correctly handle the commands», существует потому, что в 2015 году встречались SATA SSD с ошибками прошивки, способными потерять данные при выполнении trim.

Для внешнего SSD в USB-корпусе trimforce нерелевантна. Никакого контроллера AHCI в этом пути нет. Накопитель находится за мостом USB mass storage или UASP, и то, доходит ли Trim до флеш-памяти, решается этим чипом-мостом, а не переключателем в macOS. Для NVMe-накопителя, внутреннего или в корпусе Thunderbolt, она столь же нерелевантна, потому что NVMe — это тоже не AHCI.

Мы сами это перепутали. Наше более раннее руководство по устранению неполадок внешних SSD в macOS перечисляет sudo trimforce enable под заголовком «Enable TRIM for Third-Party SSDs» в разделе о производительности внешних накопителей. Эта рекомендация была неверна для внешних накопителей, и данная статья её заменяет. Man-страница говорит то, что говорит, с 2015 года; мы прочитали её недостаточно внимательно. Если вы выполнили команду, полагаясь на тот совет, ничего плохого не произошло, но и ничего хорошего тоже.

Есть ещё одна причина не хвататься за неё рефлекторно. Указание самой man-страницы «use extreme caution» касается реального режима отказа, а команда требует перезагрузки, чтобы вступить в силу. Менять общесистемную настройку хранилища с документированной оговоркой о потере данных в надежде, что это как-то повлияет на накопитель, который она явно не покрывает, — плохая сделка при любых шансах.

system_profiler SPSerialATADataType возвращает пустой результат

Другая повсеместно повторяемая проверка выглядит так:

system_profiler SPSerialATADataType | grep TRIM

На Mac с Apple silicon она не выводит ничего. Не «TRIM Support: No». Вообще ничего. И причина не в том, что Trim отключён. Причина в том, что этого типа данных на машине не существует.

Убедиться в этом можно одной командой:

system_profiler -listDataTypes | grep -i sata

На Mac с Apple silicon она не возвращает ни одного совпадения. Запуск system_profiler -listDataTypes без фильтра показывает, что у машины есть, и на протестированном нами Mac (macOS 26.5.2, сборка 25F84) среди записей, относящихся к хранилищу, есть SPNVMeDataType, SPStorageDataType, SPThunderboltDataType и SPUSBHostDataType. SPSerialATADataType отсутствует, потому что у Mac с Apple silicon вообще нет контроллера SATA. Внутренний SSD — это NVMe, подключённый к SoC, и никакой доступной пользователю шины SATA в машине нет нигде.

Так что самая широко скопированная в интернете проверка Trim спрашивает современный Mac об оборудовании, которого у него нет, получает пустой ответ и пропускает этот пустой ответ через grep, который добросовестно ничего в нём не находит. Ни ошибки, ни предупреждения, ни кода возврата, который кто-нибудь бы заметил. Люди запускают её, видят пустой вывод и делают тот вывод, к которому и так склонялись.

На Intel Mac с реальной шиной SATA команда работает и действительно сообщает статус Trim для устройств SATA. Если вы всё ещё пользуетесь таким, для внутренних накопителей она остаётся полезной. Но о внешнем накопителе, подключённом по USB, она никогда и ни на каком Mac ничего вам не сообщала.

diskutil тоже не показывает статус Trim

Третий вариант, который вам предложат, — проверить состояние Trim в Disk Utility или через diskutil. Его там нет.

diskutil info -all | grep -i trim

На протестированном нами Mac эта команда не возвращает ничего. diskutil info -all выгружает все свойства, которые diskutil знает о каждом диске и каждом томе в системе, и Trim среди них нет. Графическая информационная панель Disk Utility его тоже не показывает. Это не случай, когда вы смотрите не в ту вкладку. diskutil действительно не раскрывает статус Trim, поэтому любое руководство, намекающее, что его можно там прочитать, описывает то, чего не происходит.

Terminal со списком доступных типов данных system_profiler на Mac с Apple silicon, где запись SATA отсутствует

Проверки, которые действительно работают

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

system_profiler SPNVMeDataType для внутренних и NVMe-накопителей

Для внутреннего SSD в Mac, а также для NVMe-накопителей, доступных по Thunderbolt или USB4, где macOS говорит на NVMe напрямую, а не через слой трансляции SCSI, macOS действительно сообщает о поддержке Trim, и прочитать это легко:

system_profiler SPNVMeDataType

Вывод — небольшое дерево с отступами. Оно начинается с NVMExpress:, затем идёт запись контроллера (на Apple silicon — Apple SSD Controller:), затем модель накопителя в виде заголовка. Под этим заголовком модели на протестированном нами Mac ключи выводились в таком порядке: Capacity, TRIM Support, Model, Revision, Serial Number, Detachable Drive, BSD Name, Partition Map Type, Removable Media, S.M.A.R.T. status и Volumes.

Нужная вам строка — вторая, TRIM Support. На внутреннем накопителе протестированного нами Mac там было Yes. Так выглядит здоровый ответ, и это соответствует резюме Оукли: «Все внутренние SSD Apple имеют полную поддержку Trim, и сторонние внешние накопители с интерфейсами NVMe тоже должны её иметь».

Чтобы вытащить только эту строку:

system_profiler SPNVMeDataType | grep -A1 -i "capacity"

Или просто прочитайте всё дерево — оно достаточно короткое, чтобы фильтрация едва ли имела смысл. Если внешний NVMe-корпус вообще появляется в этом выводе, вы в хорошем положении, потому что его появление здесь означает, что macOS говорит с ним на NVMe, а не туннелирует через USB mass storage.

Важное ограничение: большинство USB-накопителей SSD в SPNVMeDataType не появятся вовсе. Даже когда внутри корпуса стоит NVMe-модуль, USB-мост представляет его Mac как устройство SCSI поверх USB, и он попадает в SPUSBHostDataType и SPStorageDataType. Его отсутствие в списке NVMe — не приговор относительно того, выполняется ли для него trim. Это просто значит, что данный метод не может ответить на вопрос и вам нужен второй.

Метод журнала в момент монтирования

Это проверка, которая работает для всего, отформатированного в APFS, независимо от способа подключения, и это метод Ховарда Оукли. Он работает потому, что APFS выполняет свой trim в конкретный, наблюдаемый момент.

Когда том APFS монтируется, менеджер пространства APFS сканирует контейнер на предмет свободных блоков и выдаёт для них Trim. Он записывает, что сделал, в единый журнал, в записях, начинающихся с spaceman_scan_free_blocks. Контейнер, для которого trim выполнялся, показывает сканирование вместе с активностью trim. Контейнер, для которого trim не выполнялся, показывает сканирование, за которым следует маркер (no trims).

Эта единственная строка и есть ваш ответ. (no trims) на накопителе, который только что смонтировался и на котором есть свободное место, означает, что Trim до этого накопителя не доходит.

Процедура:

  1. Извлеките накопитель штатно. Нажмите правой кнопкой в Finder и выберите «Извлечь» или используйте diskutil eject /dev/diskN. Не просто выдёргивайте кабель.
  2. Физически отключите его. Подождите несколько секунд.
  3. Засеките точное время. До секунды, по тем же часам, которые использует Mac. date в Terminal даст вам его с точностью.
  4. Подключите накопитель обратно и дождитесь, пока том появится в Finder и завершит монтирование. Дайте на это от десяти до двадцати секунд.
  5. Прочитайте журнал за окно вокруг момента подключения.
log show --last 2m --predicate 'senderImagePath CONTAINS[c] "apfs"'

Предикат Оукли — senderImagePath CONTAINS[c] "apfs", он ловит всё, что выдаёт код APFS, независимо от именования подсистем. Если вы засекли время и хотите более узкое окно, log show также принимает явные границы:

log show --start "2026-08-15 14:30:00" --end "2026-08-15 14:30:40" --predicate 'senderImagePath CONTAINS[c] "apfs"'

Если это не возвращает вообще ничего, добавьте --info, чтобы включить записи информационного уровня, и --debug после этого, если результат всё ещё пуст. Эти флаги расширяют фильтр по уровню, а не меняют то, что сопоставляется.

Затем найдите в результате spaceman_scan_free_blocks, отыщите записи, называющие устройство вашего накопителя (disk5, disk6 — то, что для него показывает diskutil list), и поищите маркер (no trims). Убедитесь, что номер диска соответствует тестируемому накопителю, потому что ваш загрузочный контейнер и любые другие смонтированные тома APFS выдают собственные записи, и прочитать не ту очень легко.

Почему аптайм губит эту проверку

Вот ловушка, и именно из-за неё столько людей пробуют этот метод и делают вывод, что он не работает.

Сообщения Trim от APFS выдаются только в момент монтирования. Они не периодические. Никакого ежечасного heartbeat нет. Если том смонтировался три недели назад и с тех пор остаётся смонтированным, его записи Trim были записаны три недели назад и давно вышли за окно хранения журнала.

Мы проверили ровно это. На Mac с аптаймом 21 день запуск:

log show --last 7d --predicate 'senderImagePath CONTAINS[c] "apfs"'

вернул ноль строк. Ни одной записи за целую неделю журналов, на совершенно исправной машине с совершенно исправным внутренним SSD, который сообщает TRIM Support: Yes. Загрузочный том смонтировался при загрузке, тремя неделями ранее, за пределами окна хранения, и с тех пор ничего не монтировалось.

Поэтому пустой результат запроса --last 7d ничего не значит. Это не доказательство того, что Trim сломан, и не доказательство того, что он работает. Это доказательство того, что в последнее время ничего не монтировалось. Проверка даёт ответ только в том случае, если вы сами создаёте событие монтирования непосредственно перед чтением журнала. Отключить, засечь время, подключить обратно, затем читать. Именно в таком порядке и без задержки.

Инструменты Оукли, если вы предпочитаете не использовать Terminal

Ховард Оукли предоставляет две бесплатные утилиты, которые оборачивают всё это. В Mints есть функция Disk Mount, которая захватывает окно журнала вокруг монтирования, а LogUI — это универсальный браузер единого журнала, позволяющий применить тот же предикат через интерфейс. Обе доступны на сайте The Eclectic Light Company. Если вы предпочитаете не собирать вызовы log show вручную, они делают ту же работу с меньшим риском опечататься в предикате.

Как честно измерить чтение против записи

Тест на соотношение хорош ровно настолько, насколько хорошо измерение, а большинство любительских бенчмарков SSD выдают цифры, которые выглядят обнадёживающе и не значат ничего.

Почему свежий накопитель всегда выглядит нормально

Если вы сотрёте накопитель и сразу же запустите бенчмарк, вы получите его заявленную скорость. Каждый блок стёрт, каждая запись — чистая операция программирования, и никакой Trim не нужен, чтобы поддерживать это в течение бенчмарка. Именно поэтому фраза «я прогнал тест скорости сразу после форматирования, и всё было нормально» ничего не говорит о том, работает ли Trim. Вы измерили единственное состояние, в котором Trim не важен.

Именно поэтому лечение, описанное далее в этой статье, кажется срабатывающим мгновенно, а затем, на накопителе, который по-прежнему не получает trim, тихо перестаёт работать через несколько месяцев.

Чтобы измерить что-то осмысленное, накопитель должен находиться в состоянии, где Trim имеет значение: существенно использованным, с реальной историей записей и удалений за плечами.

Как построить тест, отражающий реальное использование

Честным для этой задачи бенчмарк делают четыре условия.

Используйте большие файлы. Минимум 8 ГБ, а лучше больше, чем SLC-кэш накопителя, который у потребительских моделей часто составляет несколько процентов ёмкости. Тесты на мелких файлах измеряют обработку метаданных и скрывают поведение флеш-памяти, которое вы пытаетесь увидеть.

Накопитель должен быть заполнен примерно наполовину или больше. У почти пустого накопителя свободное место есть независимо от состояния Trim. Проблема, которую вы ищете, проявляется, когда контроллеру не хватает стёртых блоков.

Тестируйте после тяжёлого цикла удаления. Удалите что-нибудь большое, очистите Корзину, а затем пишите. Это ровно тот сценарий, ради которого существует Trim: место, которое файловая система считает свободным, а накопитель может знать или не знать, что оно свободно.

Тестируйте устойчивую пропускную способность, а не первые несколько секунд. Любой современный SSD поглощает первый всплеск в быстрый кэш. Понаблюдайте за передачей три минуты и посмотрите, на чём она устоится.

Грубое, но честное измерение из командной строки

dd даёт вам число без установки чего бы то ни было. Сначала запись:

dd if=/dev/zero of=/Volumes/YourDrive/speedtest.bin bs=1m count=8192

Это записывает 8 ГБ нулей. По завершении dd печатает итоговую строку с количеством переданных байтов, затраченным временем и пропускной способностью в байтах в секунду. Запишите пропускную способность.

Затем сбросьте дисковый кэш Mac, чтобы тест на чтение действительно читал с накопителя, а не из оперативной памяти, и прочитайте файл обратно:

sudo purge
dd if=/Volumes/YourDrive/speedtest.bin of=/dev/null bs=1m

Сравните два показателя пропускной способности. Затем удалите тестовый файл.

Одна оговорка: некоторые контроллеры SSD сжимают или дедуплицируют сильно повторяющиеся входные данные, а файл из чистых нулей — самый лёгкий возможный случай, поэтому dd из /dev/zero может польстить накопителю. Чтобы этого избежать, скопируйте вместо этого большой реальный файл, например видео, и засеките время. Графические альтернативы тоже прекрасно работают. Blackmagic Disk Speed Test даёт непрерывные показания, за которыми можно следить по мере их стабилизации в течение минут, благодаря чему провал из-за исчерпания кэша легко заметить.

Как читать результат

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

При 80% и выше всё в порядке. Запись на флеш-памяти обычно несколько медленнее чтения и всегда была такой.

Между 40% и 80% вы в неоднозначной зоне. Это может быть ранняя стадия проблемы Trim, накопитель с исчерпанным кэшем, температурное поведение или просто особенность конкретной модели. Повторите тест после тяжёлого цикла удаления и выполните проверку журнала при монтировании.

Ниже 20% поверьте Оукли на слово и считайте это проблемой Trim. Его формулировка намеренна: при таком соотношении «вы можете быть уверены, что дело в проблеме Trim».

Сравнение пропускной способности чтения и записи на одном и том же внешнем SSD, где запись составляет малую долю от чтения

Выбор файловой системы: APFS, HFS+ и ловушка exFAT

То, в какой файловой системе вы отформатировали накопитель, определяет, будет ли Trim вообще предпринят, ещё до всяких вопросов об оборудовании.

exFAT не выполняет trim

Это самая легко предотвратимая причина всей проблемы. Оукли говорит об этом прямо: «APFS и HFS+ обычно выполняют Trim для SSD при каждом монтировании, а накопитель, отформатированный в старой файловой системе для ПК вроде ExFAT, скорее всего, не получит Trim вовсе».

exFAT — это то, в чём накопители поставляются отформатированными, потому что это единственный формат, который и macOS, и Windows читают и пишут без дополнительного программного обеспечения. Это же люди выбирают осознанно, когда им нужно переносить накопитель между Mac и ПК. И это означает, что накопитель никогда не получит команду Trim от macOS, в каком бы корпусе он ни находился, как бы он ни был подключён и что бы ни показывала любая проверка.

Если ваш медленный внешний SSD отформатирован в exFAT, вы нашли ответ, и проверку журнала выполнять не нужно. Записей о монтировании APFS для него не будет вообще, потому что нет контейнера APFS, который можно было бы сканировать.

Компромисс кроссплатформенности

Компромисс реален, и бесплатного ответа нет, поэтому чётко определитесь, какую сторону вы выбираете.

ФорматTrim на macOSСовместимость с WindowsЛучше всего для
APFSДа, при каждом монтированииНе нативно; нужно стороннее ПОНакопители только для Mac, Time Machine на новых macOS, всё, что чувствительно к производительности
HFS+ (Mac OS Extended)Да, при каждом монтированииНе нативно; нужно стороннее ПОСтарые Mac, унаследованные рабочие процессы, накопители, которые должны работать с очень старыми системами
exFATНетДа, нативноНастоящий кроссплатформенный обмен, когда вы принимаете плату производительностью

Если вам действительно нужен накопитель, который подключается и к Mac, и к машине с Windows, exFAT — прагматичный выбор, и вам следует принять, что его производительность записи будет деградировать с возрастом. Смягчите это, держа накопитель существенно ниже полной ёмкости и переформатируя его время от времени, а не никогда. Но если кроссплатформенный доступ — это то, что может понадобиться вам когда-нибудь, а не то, что вы делаете еженедельно, форматируйте в APFS. Файлы всегда можно передать по сети, а накопитель, который остаётся быстрым годами, лучше гипотетического удобства.

HFS+ получает trim, но живёт на заёмном времени

HFS+ по-прежнему получает trim и по-прежнему работает. Однако это не лучший долгосрочный выбор на Mac, а зашифрованный HFS+ в особенности находится на пути к прекращению поддержки. Если у вас внешний накопитель с HFS+ и вы всё равно думаете о переформатировании, это хороший момент, чтобы перейти на APFS. Наше руководство по конвертации зашифрованных томов HFS+ в APFS описывает миграцию и последствия для Time Machine.

Выбор подключения: USB-мосты против Thunderbolt и NVMe

Файловая система необходима, но недостаточна. Накопителю с APFS всё равно нужно, чтобы команда Trim физически дошла до контроллера флеш-памяти, и вот тут в дело вступает корпус.

Что должен сделать чип-мост

Внешний SSD с USB — это не накопитель, напрямую разговаривающий с вашим Mac. Внутри корпуса находится чип-мост, который транслирует между USB и тем, на чём говорит модуль хранения, SATA или NVMe. macOS отправляет команды хранения по USB как SCSI, обычно с использованием UASP (USB Attached SCSI Protocol), а эквивалент Trim в SCSI — это UNMAP.

Так что команде нужно пережить цепочку: APFS решает выполнить trim, macOS выдаёт UNMAP по USB, чип-мост его получает, чип-мост транслирует его в SATA TRIM или NVMe Deallocate, а модуль хранения его выполняет. Если мост не реализует эту трансляцию, команда отбрасывается. Молча. Нигде не всплывает никакой ошибки, и именно поэтому это трудно диагностировать и именно поэтому проверка журнала — единственный надёжный способ это узнать.

Общая картина, о которой сообщают и которая согласуется между документацией производителей и тестированием сообщества, состоит в том, что прохождение Trim через USB-мосты непоследовательно: некоторые мосты пропускают UNMAP, многие нет, и это зависит от чипа и ревизии прошивки, а не от бренда накопителя. Thunderbolt и нативные пути NVMe — надёжный маршрут, потому что там нет слоя трансляции, в котором команда могла бы потеряться. Снова резюме Оукли: «Все внутренние SSD Apple имеют полную поддержку Trim, и сторонние внешние накопители с интерфейсами NVMe тоже должны её иметь». Обратите внимание на «должны» — это его слово, и оно делает честную работу.

Более старые накопители SATA уязвимее всего. Как формулирует Оукли, «Более медленные накопители с интерфейсами SATA — те, которые с наибольшей вероятностью не поддерживают Trim». Если ваш внешний накопитель — это SATA SSD в USB-кармане, а это описывает множество накопителей, собранных из запасного 2,5-дюймового SSD, это самая рискованная конфигурация из существующих.

Apple не публикует список совместимости

Скажем это прямо, потому что это меняет то, как вам следует покупать: Apple не публикует списка внешних корпусов, которые поддерживают Trim в macOS. Нет ни документа поддержки, ни страницы квалифицированного оборудования, ни API, который сообщал бы об этом для накопителей, подключённых по USB, ни пометки в System Information. Apple вообще никогда не документировала поведение Trim для внешних накопителей.

Это значит, что нет авторитетного способа узнать, будет ли конкретный корпус пропускать Trim, до его покупки. Маркетинг производителя тоже не надёжный ориентир, потому что большинство поставщиков корпусов не упоминают Trim ни в ту, ни в другую сторону. Единственный способ выяснить — купить, отформатировать в APFS и выполнить проверку журнала при монтировании.

Это по-настоящему неудовлетворительно, и всякий, кто говорит вам, что конкретный чипсет определённо поддерживает или не поддерживает Trim в macOS, утверждает больше, чем позволяют доступные свидетельства. Ревизии прошивки чипов различаются, производители корпусов меняют начинку, не меняя номера моделей, а поведение самой macOS менялось от релиза к релизу. Тестируйте тот накопитель, который у вас есть.

Что это значит, когда вы покупаете

Раз списка совместимости нет, предпочитайте конфигурации, в которых проблемы трансляции просто не существует. Корпус NVMe с Thunderbolt или USB4 убирает мост из уравнения и в качестве побочного бонуса даёт заметно более высокую пропускную способность. Если вы и так присматриваетесь к стороне подключения вашей конфигурации, наше руководство по покупке док-станций Thunderbolt 5 описывает, что реально даёт текущее поколение оборудования.

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

И что бы вы ни купили, протестируйте это в первую же неделю, пока вернуть его ещё легко. Отформатируйте в APFS, скопируйте немного данных, удалите часть, извлеките, подключите заново и прочитайте журнал. Две минуты — и вы знаете.

Лечение: стирание и переформатирование

Не существует команды, чтобы выполнить trim по требованию

Люди ищут команду вида «выполнить trim для моего накопителя прямо сейчас», и её нет. macOS не предоставляет пользователю никакого способа выдать Trim для тома по запросу. trimforce, как установлено, переключает системную политику для сторонних накопителей, подключённых к AHCI, и здесь неприменима. У Disk Utility такой функции нет. У diskutil такой команды нет.

Вам могут посоветовать заполнить накопитель гигантским файлом, а затем удалить его. Это не помогает, а на накопителе, который не получает Trim, делает только хуже, записывая ещё больше данных, которые контроллер будет считать актуальными.

Оукли однозначен в том, что остаётся: «Единственное лечебное средство — полностью переформатировать SSD и посмотреть, восстановится ли нормальная скорость записи».

Стирание накопителя пересоздаёт карту разделов и файловую систему с нуля. На накопителе, чей контроллер это уважает, само стирание фактически возвращает блоки в свободное состояние, и накопитель возвращается на полную скорость. Именно поэтому исправление реально. И именно поэтому оно временное, если базовый путь Trim по-прежнему сломан, потому что вы сбросили счётчик, не починив механизм.

Сначала снимите данные, как следует

Стирание уничтожает всё на накопителе, поэтому, прежде чем прикасаться к Disk Utility, скопируйте всё и проверьте. Не «копирование завершилось», а действительно откройте несколько файлов из копии, включая большие, и убедитесь, что они целы. Чтение на этом накопителе по-прежнему быстрое, поэтому эта часть проходит быстро, и в этом одна маленькая милость данного режима отказа.

Если накопитель хранит вашу единственную копию чего-либо, сначала сделайте вторую копию в другом месте. Накопитель с проблемой Trim не выходит из строя и вряд ли умрёт во время стирания, но никогда не держите единственную копию того, что вам дорого. А если накопитель служит целевым диском Time Machine, вы собираетесь выбросить историю резервных копий: прочитайте раздел про Time Machine ниже, прежде чем решать.

Как выполнить стирание

Используйте Disk Utility и сначала измените одну настройку по умолчанию.

Откройте Disk Utility, затем выберите «Вид» → «Показать все устройства». Это важно. Без этого Disk Utility показывает только тома, а стирание тома оставляет контейнер и схему разделов на месте. Вам нужно стереть физическое устройство — верхнеуровневую запись в боковой панели с названием модели накопителя.

Выберите это верхнеуровневое устройство, нажмите «Стереть» и задайте:

  • Схема: GUID Partition Map
  • Формат: APFS, если у вас нет конкретной причины выбрать exFAT

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

Эквивалент в командной строке, если вам так удобнее:

diskutil list
diskutil eraseDisk APFS DriveName GPT /dev/diskN

Сначала выполните diskutil list и внимательно прочитайте вывод, чтобы определить нужное устройство. eraseDisk на неверном diskN уничтожит не тот накопитель, и запроса на подтверждение не будет.

Чего ожидать после

Запустите бенчмарк сразу же, и он будет быстрым. Это доказывает, что флеш-память здорова, и больше ничего.

Настоящее испытание — то, что произойдёт в последующие месяцы. Скопируйте данные обратно, пользуйтесь как обычно и повторите тест на соотношение через шесть-восемь недель, после того как накопитель пройдёт через реальные циклы удаления и перезаписи. Если скорость записи держится, Trim, вероятно, доходит до накопителя, и это был разовый случай. Если она снова деградирует по той же кривой, корпус не пропускает Trim, и переформатирование — это обслуживание, которое вам предстоит выполнять периодически, а не исправление.

В этот момент решение становится экономическим. Периодическое переформатирование терпимо для рабочего диска, который можно пересобрать за час. Оно нетерпимо для рабочего архива. Если накопитель важен, замена корпуса на Thunderbolt или NVMe и тестирование уже его — долговременный ответ.

Профилактика: как не довести накопитель до этого состояния

Оставляйте запас

Самая эффективная привычка. Накопитель, который держат заполненным на 70% или меньше, имеет свободное логическое пространство, с которым контроллер может работать даже при отсутствии Trim, потому что блоки, которые никогда не записывались, остаются стёртыми. Накопитель, который загоняли до 98% заполнения, получил обращение практически к каждому блоку и не имеет запаса вообще.

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

Избегайте рабочих процессов «заполнить до краёв»

Некоторые привычки гораздо тяжелее для накопителя, чем другие. Заполнить накопитель до отказа отснятым материалом, выгрузить всё и заполнить снова — худший случай: максимум затронутых блоков, максимальная зависимость от Trim, и так до бесконечности. Профессионалы медиаиндустрии сталкиваются с этим режимом отказа гораздо раньше обычных пользователей и часто предполагают, что накопитель изнашивается, хотя это не так.

Если это описывает вашу работу, либо используйте накопитель, у которого вы проверили прохождение Trim, либо планируйте цикл переформатирования между проектами. Чередование двух накопителей с переформатированием каждого после выгрузки — разумная рабочая схема, и стоит она одного стирания на проект.

Выбирайте корпус осознанно

Стоит повторить это как профилактику, а не как диагностику: решает корпус, а не модуль SSD внутри него и не бренд на коробке. Выбирайте Thunderbolt или нативный NVMe там, где нагрузка это оправдывает, и тестируйте всё, что выберете, в первую же неделю.

Периодически перепроверяйте

Проверка журнала при монтировании занимает две минуты. Выполняя её раз в год на важных внешних накопителях или после любого мажорного обновления macOS, вы заметите изменение поведения раньше, чем оно обойдётся вам в месяц медленных передач. Записывайте результат где-нибудь. Знание о том, что конкретный накопитель прошёл проверку чисто в марте, — полезный контекст в декабре.

Целевые диски Time Machine и загрузочные клоны

Почему Time Machine — худший случай

Целевой диск Time Machine — почти максимально стрессовый сценарий для Trim. Он заполняется до предела по замыслу, затем начинает удалять самые старые снимки, чтобы освободить место, затем снова пишет в это освобождённое пространство, и так по кругу, вечно. Это непрерывный цикл больших удалений, за которыми следуют большие записи, а это ровно тот шаблон, который зависит от Trim, чтобы оставаться быстрым.

На целевом SSD, который не получает Trim, резервные копии месяц за месяцем становятся всё медленнее. Люди сообщают о симптоме так: резервные копии Time Machine, которые раньше завершались за минуты, теперь идут часами или как будто зависают на «Подготовка резервной копии» или во время записи. Легко обвинить Time Machine, а у Time Machine хватает и собственных настоящих проблем, которые стоит исключить отдельно и которые подробно разбирает наше руководство по устранению неполадок Time Machine. Но если целевой диск — это SSD и чтение с него по-прежнему быстрое, а запись еле ползёт, подумайте о Trim, прежде чем тратить полдня на собственные настройки Time Machine.

Осложнение в том, что стирание целевого диска Time Machine уничтожает историю резервных копий. Нет способа переформатировать накопитель и сохранить его снимки. Ваши варианты — смириться с потерей истории и начать свежую резервную копию либо настроить новую цель на другом накопителе и вывести старый из эксплуатации, когда новая копия сформируется. Для большинства людей второй вариант стоит цены накопителя, потому что резервная копия без истории гораздо менее полезна, чем копия с версиями за несколько месяцев.

Замечание о выборе оборудования конкретно для резервных копий: это один из случаев, когда обычный жёсткий диск — неплохой ответ. У вращающихся дисков нет проблемы блока стирания и нет никакой потребности в Trim. На бумаге они медленнее, но для ночной инкрементальной копии это часто неважно, а их поведение не деградирует за годы циклов заполнения и удаления.

Загрузочные клоны и внешние загрузочные тома

Загрузочные клоны ведут себя похоже. Программа клонирования перезаписывает большие объёмы данных при каждом запуске, поэтому, если целевой диск не получает trim, время клонирования неуклонно растёт. Одно преимущество здесь в том, что целевой диск клона монтируется и размонтируется часто, из-за чего записи журнала в момент монтирования получить тривиально просто: извлечь, подключить заново, прочитать журнал — меньше минуты.

Если вы загружаете macOS с внешнего накопителя как рабочую систему, а не как инструмент восстановления, ставки выше, потому что каждая системная запись проходит по тому же деградировавшему пути. Это сильный аргумент в пользу корпуса Thunderbolt NVMe вместо USB-кармана именно для загрузочных дисков.

Устранение частых проблем

Проверка журнала не возвращает вообще ничего

Проблема: Вы запускаете log show с предикатом APFS и получаете ноль строк, хотя накопитель подключён.

Решение: Почти наверняка вы прочитали журнал, не создав перед этим события монтирования, или сделали это слишком поздно. Записи создаются только при монтировании тома. Извлеките накопитель, физически отключите его, засеките время по date, подключите заново, подождите пятнадцать секунд, пока том появится в Finder, и только тогда выполните log show --last 2m. Если всё ещё пусто, добавьте --info, а затем --debug, чтобы расширить фильтр по уровню. Если по-прежнему пусто, а накопитель действительно смонтировался, проверьте, действительно ли он APFS: накопитель с exFAT не создаёт записей APFS, потому что нет контейнера APFS, который можно сканировать.

system_profiler SPSerialATADataType ничего не выводит

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

Решение: Это не значит ни того, ни другого. На Mac с Apple silicon этого типа данных не существует. Убедитесь с помощью system_profiler -listDataTypes | grep -i sata — она тоже ничего не вернёт. Используйте system_profiler SPNVMeDataType для внутренних и NVMe-накопителей и метод журнала при монтировании для всего остального. Никакой осмысленной интерпретации пустого результата по SATA на этих машинах не существует.

Вы выполнили sudo trimforce enable, и ничего не изменилось

Проблема: Вы включили trimforce, перезагрузились, как было указано, и внешний накопитель ровно такой же медленный, как раньше.

Решение: Это ожидаемый результат. trimforce влияет на сторонние накопители, подключённые к контроллеру AHCI (SATA), согласно её собственной man-странице, а ваш USB- или NVMe-накопитель к таковым не относится. Её запуск ничего не сломал и ничего не починил. Выполните man trimforce и прочитайте DESCRIPTION сами, если хотите подтверждения. Переходите к проверке журнала при монтировании, чтобы выяснить, что происходит на самом деле.

Накопитель показывает TRIM Support: Yes, но запись всё равно медленная

Проблема: system_profiler SPNVMeDataType сообщает о поддержке Trim для накопителя, а производительность записи при этом низкая.

Решение: Сообщение о поддержке Trim означает, что накопитель и путь заявляют такую возможность. Оно не подтверждает, что trim действительно выполняется для этого тома, а именно это измеряет проверка журнала при монтировании. Выполните её следующей. Также исключите причины, не связанные с Trim: проверьте согласованную скорость линка в System Information, поменяйте кабель, протестируйте в другом порту и запустите непрерывную трёхминутную передачу, чтобы понять, не смотрите ли вы на исчерпание кэша или температурный троттлинг вместо нехватки блоков.

Первые тридцать секунд скорость нормальная, потом она обваливается

Проблема: Большие копирования начинаются на полной скорости, а затем на полпути падают на 70% и больше, и так каждый раз.

Решение: Обычно это заполняется SLC-кэш записи, а не проблема Trim, и для потребительских накопителей это нормальное поведение, хотя у накопителя, голодающего по Trim, «пол» после падения будет ниже. Различить их можно, протестировав после периода простоя при включённом питании накопителя: замедления, связанные с кэшем, восстанавливаются после того, как у накопителя было время на сброс, а голодание по Trim — нет. Также проверьте температуру корпуса, потому что горячий чип-моста или модуль NVMe сильно троттлит и снаружи ощущается идентично.

Мелкие файлы копируются медленно, а большие быстро

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

Решение: Это не проблема Trim. В передачах мелких файлов доминируют накладные расходы на каждый файл, а индексация Spotlight или защитное ПО, сканирующее каждый файл по мере его появления, делают всё драматически хуже. Протестируйте одним большим файлом, чтобы получить чистую цифру пропускной способности. Если запись больших файлов нормальная, с флеш-памятью всё в порядке. Чтобы снизить штраф за мелкие файлы, рассмотрите исключение накопителя из Spotlight в «Системных настройках» → Siri и Spotlight → «Конфиденциальность Spotlight» или передачу папки одним архивом.

Стирание помогло, но всего на несколько месяцев

Проблема: Переформатирование восстановило полную скорость, а теперь, несколько месяцев спустя, запись снова деградировала по той же кривой.

Решение: Переформатирование лечило симптом. Рецидив говорит вам, что Trim действительно не доходит до этого накопителя, поэтому пул блоков снова голодает, как только вы наращиваете историю записей и удалений. Подтвердите проверкой журнала при монтировании на переформатированном накопителе, ища (no trims). Если подтвердилось, ваши реалистичные варианты — принять периодическое переформатирование как обслуживание либо переставить модуль SSD в корпус Thunderbolt или NVMe и протестировать этот путь. Никакая программная настройка исход не изменит.

Накопитель ещё и случайно отключается

Проблема: Наряду с медленной записью накопитель сам извлекается или вы получаете повторяющиеся уведомления «Диск извлечён неправильно».

Решение: Считайте это двумя отдельными неисправностями и сначала устраните отключения, потому что нестабильное подключение делает любое измерение ненадёжным и может повредить том прямо во время записи. Отключение обычно связано с питанием или шиной, а не с флеш-памятью: накопители с питанием от шины на хабе, агрессивный сон корпуса или пограничный кабель. Наше руководство по ошибкам «Диск извлечён неправильно» и питанию USB разбирает конкретные причины. Когда накопитель начнёт держать соединение стабильно, вернитесь и переделайте тест на соотношение.

FAQ

Помогает ли sudo trimforce enable внешнему USB-накопителю SSD?

Нет. В её man-странице сказано, что она включает Trim для сторонних накопителей, подключённых к контроллеру AHCI, то есть к интерфейсу SATA. Внешний USB-накопитель добирается до Mac через USB-мост, а NVMe-накопитель — это тоже не AHCI. Команда применима к сторонним SATA SSD, установленным внутрь старых Mac, и больше ни к чему.

Почему system_profiler SPSerialATADataType ничего не возвращает на моём Mac?

Потому что у Mac с Apple silicon нет контроллера SATA, поэтому такого типа данных на них не существует. Убедитесь сами с помощью system_profiler -listDataTypes | grep -i sata — она не вернёт ни одного совпадения. Пустой вывод — это не сообщение о том, что Trim отключён. Это полное отсутствие категории оборудования.

Могу ли я проверить статус Trim в Disk Utility или через diskutil?

Нет. diskutil info -all | grep -i trim ничего не возвращает, потому что diskutil не раскрывает статус Trim среди сообщаемых свойств, и информационная панель Disk Utility его тоже не показывает. Руководства, намекающие на обратное, описывают то, чего macOS не предоставляет. Используйте вместо этого system_profiler SPNVMeDataType или проверку журнала при монтировании.

Как отличить проблему Trim от плохого кабеля?

Сравните скорость чтения со скоростью записи на одном и том же накопителе в одной и той же сессии, используя один файл размером минимум 8 ГБ. Проблема с кабелем или портом замедляет оба направления примерно с одинаковым коэффициентом. Проблема Trim оставляет чтение на полной скорости, а запись обваливает. Порог Ховарда Оукли — запись на уровне 20% от чтения или ниже.

Исправит ли стирание накопителя медленную запись навсегда?

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

Действительно ли exFAT настолько плох для внешнего SSD на Mac?

Для производительности со временем — да. exFAT не выполняет trim накопителя, поэтому SSD с exFAT гарантированно деградирует по мере накопления истории записей, независимо от корпуса и подключения. Выбирайте exFAT только тогда, когда вам действительно нужен нативный доступ из Windows, а если выбираете, держите накопитель существенно ниже полной ёмкости и периодически его переформатируйте.

Заключение

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

Причина, по которой это трудно диагностировать, не в тонкости механизма. Она в том, что обе проверки, на которых сошёлся интернет, на современном Mac отказывают молча. system_profiler SPSerialATADataType запрашивает категорию оборудования, которой у Apple silicon нет, и возвращает пустой результат. sudo trimforce enable переключает политику для накопителей SATA, подключённых к AHCI, и не может затронуть внешний USB-накопитель, о чём её собственная man-страница говорит в первом же абзаце. Ни одна из них не сообщает об ошибке. Именно это молчание поддерживает циркуляцию плохого совета, и именно поэтому мы сами повторили его в более раннем руководстве.

Работает более узкий набор. Для внутренних накопителей и внешних NVMe system_profiler SPNVMeDataType сообщает TRIM Support напрямую. Для всего, что отформатировано в APFS, извлеките накопитель, засеките время, подключите его заново, дождитесь монтирования и прочитайте единый журнал в поисках записей spaceman_scan_free_blocks, ища маркер (no trims). Делайте это именно в таком порядке и без задержки, потому что эти записи создаются в момент монтирования и больше нигде. На протестированной нами машине с тремя неделями аптайма целая неделя журналов не содержала их вовсе.

Если проверка вернулась плохой, лечение — полное стирание и переформатирование, и никакая пользовательская команда его не заменит. Продержится ли это исправление, зависит от корпуса, а поскольку Apple не публикует списка совместимости по Trim для внешних корпусов, единственный способ выяснить — переформатировать, попользоваться накопителем пару месяцев и измерить снова. Если он деградирует по той же кривой, корпус отбрасывает команду, и долговременный ответ — путь через Thunderbolt или нативный NVMe, а не какое-либо изменение, которое вы можете внести в программном обеспечении.

Сделайте три вещи на этой неделе. Проведите тест на соотношение на основном внешнем накопителе одним большим файлом в каждом направлении. Если соотношение выглядит неправильным, выполните проверку журнала при монтировании, пока накопитель ещё в деградировавшем состоянии, чтобы вы что-то узнали, а не просто починили. И форматируйте внешние накопители, предназначенные только для Mac, в APFS, а не в exFAT, потому что именно это решение определяет, будет ли Trim вообще предпринят.

Дополнительное чтение: Руководство по устранению неполадок внешних SSD в macOS · Полное руководство по устранению неполадок Time Machine