Apple #Mac #iMac #Apple #Железо #Диагностика

iMac тормозит и долго загружается после замены диска на SSD: виноваты TRIM и сброс NVRAM

Год мой iMac 2019 с SSD Crucial BX500 периодически зависал при загрузке, и я «лечил» его сбросом NVRAM. Оказалось, что именно сброс и выключал TRIM. Показываю, как нашёл причину, как включить TRIM на стороннем SSD в macOS, что показал SMART и каких ошибок не повторять.

9 минут 3
Содержание
  1. 1Что я поменял в iMac
  2. 2Как выглядела проблема
  3. 3Диагностика: что проверять
  4. 4Почему без TRIM диск тормозит
  5. 5Главная ошибка: сброс NVRAM выключает TRIM
  6. 6Как включить TRIM
  7. 7Освободить место
  8. 8Что показал SMART
  9. 9Клавиши, которые выручают, когда Mac завис
  10. ⌨️ Выключить без мыши
  11. 🔄 Сброс NVRAM
  12. 🔌 Отключение от розетки — сброс SMC
  13. 10Почему помогало выдёргивание вилки
  14. 11Мои ошибки — не повторяйте
  15. 12Что дальше
  16. 13Частые вопросы
  17. Как проверить, включён ли TRIM на Mac?
  18. Как включить TRIM на стороннем SSD в macOS?
  19. Сбрасывается ли TRIM после сброса NVRAM?
  20. Опасно ли включать trimforce?
  21. Почему Mac с SSD тормозит, если диск исправен?
  22. Сколько свободного места нужно оставлять на SSD?
  23. Работает ли TRIM на внешнем SSD?

Год назад я сам обновил свой iMac 21,5″ 2019 года: поменял процессор, память и диск. После этого у него появилась странная привычка. Иногда он загружался по паре минут, а потом отвечал на каждое действие с огромной задержкой. Мышь при этом могла вообще не двигаться.

Я нашёл способ быстро «починить»: сбросить NVRAM, а лучше ещё и выдернуть вилку из розетки на несколько минут. После этого Mac загружался нормально, и я успокаивался до следующего раза. Сегодня он не загрузился до рабочего состояния вообще, и пришлось наконец разобраться.

Причина оказалась обидной 🤦: своим «лечением» я каждый раз выключал TRIM и делал проблему хуже. Рассказываю по порядку, чтобы вы не повторяли моих ошибок.

Что я поменял в iMac

БылоСтало
Intel Core i3-8100, 4 ядраIntel Core i7-8700, 6 ядер
8 ГБ памяти (2 × 4 ГБ)32 ГБ
Жёсткий диск HGST 1 ТБ, 5400 об/минSSD Crucial BX500 240 ГБ
Раздел «Об этом Mac»: iMac Retina 4K 21,5 дюйма 2019 года, процессор Intel Core i7, 32 ГБ памяти, macOS Sequoia 15.7.9
Мой iMac после апгрейда: Core i7, 32 ГБ и macOS Sequoia

Больше всего работу тормозил родной жёсткий диск. Это ноутбучная модель на 5400 оборотов, и на ней macOS работала мучительно медленно.

Жёсткий диск HGST 1 ТБ 5400 об/мин из iMac 2019
Родной диск iMac: ноутбучный HGST на 1 ТБ

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

DriveDx: жёсткий диск Apple HDD HTS541010A9E632, 7192 часа работы, 66 655 циклов включения, оценка состояния 70,1 %
Старый диск в DriveDx: 7192 часа работы и 66 655 включений

Заодно показываю остальные снятые детали:

Две планки памяти Micron по 4 ГБ DDR4-2666 из iMac 2019
Родная память: две планки Micron по 4 ГБ
Процессор Intel Core i3-8100, снятый с iMac 2019
Родной процессор Core i3-8100

Изначально я хотел поставить быстрый NVMe-диск. Но в моей модели разъём под него на плате не распаян: его ставят только в версии с Fusion Drive и SSD. Поэтому на место жёсткого диска встал обычный SATA SSD, который у меня уже был, — Crucial BX500 на 240 ГБ.

Маленький объём меня не смущал. Файлы и фото я храню на домашнем сервере с облачным хранилищем (про фото есть отдельная статья — Immich вместо Google Фото), поэтому тратиться на диск побольше не было нужды. Это и была первая ошибка: системе с программами на бюджетном диске в 240 ГБ оказалось тесно.

Как выглядела проблема

  • 🐢 Mac иногда загружался по паре минут вместо привычных секунд.
  • ⏳ После такой загрузки любое действие выполнялось с долгой задержкой.
  • 🖱️ Мышь с USB-приёмником временами переставала отвечать.
  • 🎲 Случалось это не каждый раз, и предугадать было невозможно.

«Лечение» выглядело так: выключить Mac, выдернуть вилку из розетки на несколько минут, включить и сбросить NVRAM. После этого приходилось заново настраивать яркость и громкость, зато всё работало. Я решил, что это мелкая особенность после апгрейда, и не стал разбираться. Зря.

Диагностика: что проверять

Когда Mac тормозит «целиком», причин обычно три: перегрев и замедление процессора, нехватка памяти или диск. Я проверил все три командами в Терминале.

Процессор. Показывает, ограничивает ли система скорость процессора из-за температуры:

Терминал
pmset -g therm
Вывод на моём iMac
CPU_Scheduler_Limit  = 100
CPU_Available_CPUs   = 12
CPU_Speed_Limit      = 100

Сто процентов везде — процессор работает в полную силу. Если бы CPU_Speed_Limit был меньше 100, виноват был бы перегрев или датчик.

Память.

Терминал
memory_pressure | tail -n 1
sysctl vm.swapusage

У меня свободно 92 % памяти, а файл подкачки не используется вовсе. Память ни при чём.

Диск. А вот здесь нашлись обе причины:

Терминал
system_profiler SPSerialATADataType | grep -E "Model|TRIM|S.M.A.R.T"
df -h /System/Volumes/Data
Вывод на моём iMac
Model: CT240BX500SSD1
TRIM Support: No
S.M.A.R.T. status: Verified

Filesystem     Size   Used  Avail Capacity
/dev/disk1s1  223Gi  186Gi   23Gi    90%

TRIM выключен, а диск заполнен на 90 %.

Дисковая утилита macOS: диск на 239,83 ГБ, свободно 24,4 ГБ
Дисковая утилита: из 240 ГБ свободно всего 24

Почему без TRIM диск тормозит

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

Без TRIM диск со временем считает занятым почти весь свой объём. Перед каждой новой записью ему приходится искать и расчищать блоки, перекладывая данные с места на место. Если при этом диск и правда заполнен на 90 %, свободных блоков для манёвра почти нет, и он надолго «задумывается». Снаружи это выглядит как зависший компьютер.

Дешёвым дискам вроде BX500 приходится хуже всех. У них нет собственной памяти под служебные таблицы, а быстрая область записи маленькая.

macOS включает TRIM сама только для дисков Apple. Для сторонних SSD его нужно включить вручную.

Главная ошибка: сброс NVRAM выключает TRIM

TRIM я включал сразу после установки диска. А потом забыл одну деталь: команда trimforce хранит свою настройку в NVRAM. Каждый сброс NVRAM её стирает, и TRIM выключается.

Получился замкнутый круг 🔁:

  1. Диск начинает тормозить.
  2. Я сбрасываю NVRAM.
  3. Mac загружается нормально, и я доволен.
  4. TRIM при этом выключен, диск снова копит «мусор».
  5. Через какое-то время всё повторяется, только хуже.

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

Как включить TRIM

Сохраните всё открытое: Mac перезагрузится сам.

Терминал
sudo trimforce enable

Команда спросит пароль администратора и дважды попросит подтверждение — ответьте y. Предупреждение о риске для данных — стандартный текст Apple для сторонних дисков.

После перезагрузки проверьте:

Терминал
system_profiler SPSerialATADataType | grep TRIM

Должно быть TRIM Support: Yes. То же самое видно в «Информации о системе» → «SATA»:

Информация о системе, раздел SATA: поддержка TRIM для Crucial BX500 — «Нет» до включения и «Да» после
Строка «Поддержка TRIM»: было «Нет», стало «Да»

При первой загрузке с TRIM система сообщает диску обо всех свободных блоках. Эта загрузка может идти дольше обычного, это нормально.

Освободить место

Вторая половина решения — свободное место. Найти самое тяжёлое помогает команда:

Терминал
du -sh ~/* ~/Library/* 2>/dev/null | sort -h | tail -n 15

У меня больше всего занимали:

ПапкаРазмер
VirtualBox VMs37 ГБ
Library30 ГБ
Downloads23 ГБ
Documents13 ГБ

Я удалил VirtualBox вместе с виртуальными машинами. Свободного места стало 60 ГБ, диск заполнен на 74 % вместо 90.

Что показал SMART

Статус «Проверен» в «Информации о системе» говорит только о том, что диск жив. Подробности показывает утилита smartmontools:

Терминал
brew install smartmontools
sudo smartctl -a disk0

Главные показатели моего диска:

ПоказательЗначениеЧто это значит
Percent_Lifetime_Remain91 %израсходовано 9 % ресурса
Power_On_Hours849часов работы
Total_LBAs_Writtenоколо 3,9 ТБзаписано системой из заявленных 80 ТБ
Reallocate_NAND_Blk_Cnt0переназначенных блоков нет
Reported_Uncorrect, Program_Fail, Erase_Fail0ошибок чтения и записи нет
UDMA_CRC_Error_Count0кабель и разъём в порядке
Unexpect_Power_Loss_Ct38внезапные отключения питания
Temperature_Celsius36 °C, максимум 55 °Cнорма

Диск здоров ✅. Но две цифры показывают, чего ему стоил этот год.

📈 Скрытая запись. Строка Host_Program_Page_Count — сколько страниц записала система: 237 млн. Строка FTL_Program_Page_Count — сколько диск записал сам, перекладывая данные внутри: 855 млн. Выходит, на каждый мой гигабайт диск записывал около 4,6 ГБ. У диска с работающим TRIM и запасом места этот коэффициент заметно ниже. Вот почему при скромных 3,9 ТБ записи ушло уже 9 % ресурса.

⚡ 38 внезапных отключений. Столько раз диск терял питание без штатного завершения работы. У BX500 нет защиты от потери питания, и каждое такое отключение — риск повредить данные.

Клавиши, которые выручают, когда Mac завис

Когда мышь не отвечает, всё делается с клавиатуры. Собрал комбинации, которые пригодятся в такой ситуации, и что каждая из них на самом деле делает. Они относятся к Mac на процессорах Intel, как мой iMac.

Клавиша ⏏ (Eject) есть на клавиатурах Apple в правом верхнем углу. Если её нет, вместо неё работает кнопка питания. У iMac она находится сзади, слева внизу.

⌨️ Выключить без мыши

  • ⌃ Control + ⏏ Eject Окно выключения. Появится вопрос «Перезагрузить, перевести в сон или выключить?». Нажмите Enter — Mac выключится.
  • ⌃ Control + ⌥ Option + ⌘ Command + ⏏ Eject Закрыть программы и выключить. Mac завершит работу штатно, без вопросов. Несохранённые документы предложит сохранить.
  • ⌥ Option + ⌘ Command + ⏏ Eject Сон. Эта комбинация похожа на предыдущую, но Mac только засыпает, а не выключается.
  • ⌃ Control + ⌘ Command + кнопка питания Принудительная перезагрузка. Без сохранения документов. Для случая, когда система не реагирует совсем.
  • кнопка питания — держать 10 секунд Принудительное выключение. Крайняя мера: для диска это то же самое, что выдернуть вилку на ходу.

🔄 Сброс NVRAM

  • ⌥ Option + ⌘ Command + P + R Сброс NVRAM. Выключите Mac, нажмите кнопку питания и сразу зажмите четыре клавиши. Держите около 20 секунд: за это время Mac перезагрузится ещё раз.

В NVRAM хранятся мелкие настройки: громкость, разрешение экрана, выбранный загрузочный диск, часовой пояс. Сброс помогает, когда Mac загружается не с того диска, показывает знак вопроса при старте или путает звук и разрешение. Медленный диск он не лечит. А на Mac со сторонним SSD ещё и выключает TRIM — после сброса сразу выполните sudo trimforce enable.

🔌 Отключение от розетки — сброс SMC

  • выключить Mac → вынуть вилку на 15 секунд → вставить, подождать 5 секунд → включить Сброс SMC. Так он делается на настольных Mac с процессором Intel без чипа T2.

SMC — контроллер, который управляет питанием, вентиляторами, сном и питанием портов USB. Его сброс помогает, когда Mac не включается, вентиляторы шумят без причины, Mac не выходит из сна или не видит устройства USB. Вынимайте вилку только после того, как Mac полностью выключился.

Почему помогало выдёргивание вилки

Отключение от розетки сбрасывает контроллер питания Mac, а заодно полностью обесточивает диск. Сброс NVRAM добавлял к этому полную перезагрузку. Диск получал паузу, успевал навести порядок во внутренних таблицах, и какое-то время всё работало. Причину это не устраняло, а TRIM при этом выключался.

Мои ошибки — не повторяйте

Что дальше

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

🚀 Дальше планирую перенести систему на внешний NVMe-диск. Мой iMac умеет загружаться с внешних дисков без дополнительных настроек: в модели 21,5″ 2019 года нет чипа T2, который это ограничивает. Важный момент при выборе корпуса: macOS не включает TRIM для дисков, подключённых по обычному USB. Поэтому корпус нужен с Thunderbolt 3 — оба порта USB-C на этом iMac его поддерживают.

Частые вопросы

Как проверить, включён ли TRIM на Mac?

Командой system_profiler SPSerialATADataType | grep TRIM в Терминале или в «Информации о системе» → «SATA», строка «Поддержка TRIM». Для дисков NVMe раздел называется NVMExpress.

Как включить TRIM на стороннем SSD в macOS?

Командой sudo trimforce enable. Нужно подтвердить действие, после чего Mac перезагрузится. Выключается TRIM командой sudo trimforce disable.

Сбрасывается ли TRIM после сброса NVRAM?

Да. Настройка trimforce хранится в NVRAM и стирается при сбросе. После сброса NVRAM команду sudo trimforce enable нужно выполнить заново.

Опасно ли включать trimforce?

Apple предупреждает, что не проверяла сторонние диски на совместимость. На практике современные SSD работают с TRIM нормально. Перед включением всё равно стоит сделать резервную копию.

Почему Mac с SSD тормозит, если диск исправен?

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

Сколько свободного места нужно оставлять на SSD?

Хотя бы 20–25 % объёма. Для небольших и бюджетных дисков это особенно важно.

Работает ли TRIM на внешнем SSD?

По Thunderbolt — да. Для дисков, подключённых по обычному USB, macOS TRIM не включает.

Статья помогла?

Комментарии

Пока никто не написал. Будьте первым — вопрос или свой опыт одинаково полезны.

Комментарий появится после проверки. Ссылки и реклама не публикуются.