Porque é que o Spotlight bloqueia a ejeção do disco

A indexação do Spotlight é uma das razões mais comuns para não conseguir ejetar uma unidade externa. Veja como lidar com o problema.

(Updated )

Tenta ejetar a sua unidade externa e o macOS recusa. Verifica o Monitor de Atividade e vê processos chamados mds ou mds_stores a aceder à sua unidade. Parabéns, conheceu a indexação do Spotlight.

Esta é provavelmente a razão mais comum para as unidades externas não ejetarem no Mac. O Spotlight quer indexar tudo para que possa pesquisar mais tarde e não quer saber que tem de sair para uma reunião em dois minutos.

O que o Spotlight está realmente a fazer

O sistema de indexação do Spotlight corre através de vários processos em segundo plano. O principal é o mds (metadata server), que coordena toda a operação. Depois existe o mds_stores, que gere o armazenamento real dos metadados indexados. Poderá também ver o mdworker ou mdworker_shared a fazer o trabalho pesado de ler e categorizar os seus ficheiros.

Quando liga uma unidade externa, o Spotlight trata-a como um novo território a explorar. Começa a analisar cada ficheiro, extraindo metadados e construindo um índice pesquisável. Isto acontece automaticamente, a menos que tenha dito explicitamente ao Spotlight para deixar essa unidade em paz.

O problema é que o Spotlight mantém handles de ficheiros abertos enquanto trabalha. Enquanto esses handles existirem, o macOS considera a unidade “em utilização” e não o deixa ejetá-la.

Como verificar se o Spotlight é o culpado

Abra o Monitor de Atividade (procure-o no Spotlight, ironicamente) e procure por estes nomes de processos: mds, mds_stores, mdworker ou mdworker_shared. Se algum deles mostrar o nome da sua unidade externa na informação do processo, o Spotlight é o seu bloqueador.

Também pode verificar através do Terminal. Execute este comando, substituindo o nome da unidade pelo seu:

lsof /Volumes/NomeDaSuaUnidade

Se vir processos relacionados com o mds no resultado, o Spotlight está agarrado à sua unidade.

A solução rápida: desativar a indexação temporariamente

A solução mais rápida é desligar a indexação do Spotlight para esse volume específico:

sudo mdutil -i off /Volumes/NomeDaSuaUnidade

Espere, feche as apps e tente uma ejeção normal.

Quando voltar a ligar a unidade mais tarde e quiser a indexação de volta:

sudo mdutil -i on /Volumes/NomeDaSuaUnidade

A solução permanente: excluir a unidade totalmente

Se nunca quiser que o Spotlight indexe uma unidade externa específica, pode adicioná-la à lista de privacidade.

Abra as Definições do Sistema, vá a Siri e Spotlight (ou apenas Spotlight em versões mais antigas do macOS) e clique em “Privacidade do Spotlight” na parte inferior. Arraste a sua unidade externa para esta lista ou clique no botão mais para a adicionar.

Os nomes dos processos do Spotlight não provam acesso apenas de leitura. Espere, feche as apps e tente uma ejeção normal.

Existe também um truque utilizando um ficheiro oculto. Crie um ficheiro vazio chamado .metadata_never_index na raiz da sua unidade externa:

touch /Volumes/NomeDaSuaUnidade/.metadata_never_index

O Spotlight verifica a existência deste ficheiro e ignora a indexação de qualquer volume que o tenha. Isto é útil para unidades que partilha entre vários Macs, uma vez que a definição segue a unidade em vez de ficar guardada em cada computador.

Quando o Spotlight não larga a unidade

Os nomes dos processos do Spotlight não provam acesso apenas de leitura. Não force a saída de mds ou mds_stores para libertar um disco. Espere, feche as apps e tente uma ejeção normal. Ejecta identifica estes processos, mas não oferece a saída habitual de processos do sistema. Se o disco continuar bloqueado, guarde tudo e desligue completamente o Mac antes de o desligar do computador.

O nome de um processo ou a lista de ficheiros abertos não prova que não há escritas em curso.

Guarde o trabalho, termine cópias e backups e feche as apps normalmente antes de tentar ejetar novamente.

Porque é que isto continua a acontecer

Cada vez que liga uma unidade externa, o Spotlight começa a indexá-la do zero, a menos que a tenha excluído. Mesmo unidades que já utilizou antes serão reindexadas se o seu índice ficar desatualizado ou corrompido.

As atualizações do macOS também podem repor as definições de privacidade do Spotlight. Alguns utilizadores relataram que, após a atualização para uma nova versão do macOS, unidades que tinham anteriormente excluído estavam subitamente a ser indexadas novamente. Vale a pena verificar a sua lista de Privacidade do Spotlight após grandes atualizações.

Uma abordagem mais simples

Ejecta: Ejecta oferece diagnóstico gratuito de discos sem período de teste limitado. A licença paga desbloqueia saída e ejeção para apps compatíveis, Ejetar tudo e controlos do Time Machine. Processos do sistema podem exigir espera, autorização ou desligar o Mac. Guarde o trabalho e termine primeiro as transferências.

O problema subjacente (o Spotlight a indexar agressivamente unidades externas) não vai desaparecer tão cedo. Mas lidar com isso não tem de ser um projeto de investigação cada vez que precisa de sair com a sua unidade.

Ejecta oferece diagnóstico gratuito de discos sem período de teste limitado. A licença paga desbloqueia saída e ejeção para apps compatíveis, Ejetar tudo e controlos do Time Machine. Processos do sistema podem exigir espera, autorização ou desligar o Mac. Guarde o trabalho e termine primeiro as transferências.

Comprar Agora - $29 $9.99