Почему Spotlight блокирует извлечение диска

Индексирование Spotlight — одна из самых частых причин, по которым не удаётся извлечь внешний диск. Рассказываем, как с этим справиться.

Вы пытаетесь извлечь внешний диск, а macOS отказывает. Вы открываете Мониторинг системы и видите процессы с именами mds или mds_stores, обращающиеся к вашему диску. Поздравляем — вы познакомились с индексированием Spotlight.

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

Чем на самом деле занят Spotlight

Система индексирования Spotlight работает через несколько фоновых процессов. Главный из них — mds (metadata server), который координирует всю операцию. Затем идёт mds_stores, отвечающий за фактическое хранение проиндексированных метаданных. Вы также можете увидеть mdworker или mdworker_shared, выполняющие основную работу по чтению и классификации ваших файлов.

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

Проблема в том, что во время работы Spotlight держит дескрипторы файлов открытыми. Пока эти дескрипторы существуют, macOS считает диск «используемым» и не даёт его извлечь.

Как проверить, виноват ли Spotlight

Откройте Мониторинг системы (по иронии, найти его можно через Spotlight) и поищите эти имена процессов: mds, mds_stores, mdworker или mdworker_shared. Если рядом с любым из них в сведениях о процессе указано имя вашего внешнего диска — значит, блокировщик это Spotlight.

Можно проверить и через Терминал. Выполните эту команду, заменив имя диска на своё:

lsof /Volumes/YourDriveName

Если в выводе видны процессы, связанные с mds, значит, Spotlight удерживает ваш диск.

Быстрое решение: временно отключить индексирование

Самое быстрое решение — отключить индексирование Spotlight для конкретного тома:

sudo mdutil -i off /Volumes/YourDriveName

Понадобится ввести пароль. После выполнения команды Spotlight освобождает диск, и его можно будет извлечь как обычно.

Когда вы снова подключите диск и захотите вернуть индексирование:

sudo mdutil -i on /Volumes/YourDriveName

Постоянное решение: полностью исключить диск

Если вы вообще не хотите, чтобы Spotlight индексировал определённый внешний диск, добавьте его в список конфиденциальности.

Откройте Системные настройки, перейдите в раздел Siri и Spotlight (или просто Spotlight в старых версиях macOS), затем нажмите «Конфиденциальность Spotlight» внизу. Перетащите свой внешний диск в этот список или нажмите кнопку с плюсом, чтобы добавить его.

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

Есть и приём со скрытым файлом. Создайте в корне внешнего диска пустой файл с именем .metadata_never_index:

touch /Volumes/YourDriveName/.metadata_never_index

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

Когда Spotlight не отпускает

Иногда Spotlight зависает. Вы отключили индексирование, но процессы всё равно не освобождают диск. В Мониторинге системы можно выбрать проблемный процесс mds и нажать кнопку X, чтобы принудительно его завершить.

Учтите, что принудительное завершение системных процессов может временно вызывать странности. Spotlight перезапустится сам, но вы можете заметить кратковременные подтормаживания или подождать немного, пока всё придёт в норму.

Если после завершения процессов Spotlight диск всё равно не извлекается, значит, его удерживает что-то ещё. Запустите команду lsof снова, чтобы посмотреть, что осталось.

Почему это повторяется снова и снова

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

Обновления macOS тоже могут сбрасывать настройки конфиденциальности Spotlight. Некоторые пользователи сообщали, что после обновления до новой версии macOS диски, которые они ранее исключили, вдруг снова начинали индексироваться. После крупных обновлений стоит проверять список «Конфиденциальность Spotlight».

Способ попроще

Копаться в Мониторинге системы и Терминале каждый раз, когда нужно отключить диск, быстро надоедает. Ejecta показывает, какие именно процессы блокируют извлечение, и позволяет завершить их одним кликом. Конкретно для Spotlight он определяет соответствующие процессы mds и аккуратно с ними справляется, так что вам не нужно гадать, какой из них завершать, и переживать за стабильность системы.

Первопричина (агрессивное индексирование внешних дисков со стороны Spotlight) никуда в ближайшее время не денется. Но борьба с ней не обязана превращаться в целое исследование каждый раз, когда вам нужно уйти со своим диском.

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

Купить — $9.99