Чому Spotlight блокує витягнення диска

Індексування Spotlight — одна з найпоширеніших причин, чому не вдається витягнути зовнішній диск. Ось як із цим упоратися.

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

Це, мабуть, найпоширеніша причина, чому зовнішні диски не витягуються на Mac. Spotlight хоче проіндексувати все, щоб потім ви могли це шукати, і його не обходить, що вам за дві хвилини треба бігти на нараду.

Що насправді робить Spotlight

Система індексування Spotlight працює через кілька фонових процесів. Головний із них — mds (сервер метаданих), який координує всю операцію. Далі є 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