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.

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

Terá de introduzir a sua palavra-passe. Após o comando terminar, o Spotlight liberta a unidade e deverá conseguir ejetar normalmente.

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.

As unidades nesta lista são completamente ignoradas pelo Spotlight. Não poderá pesquisar o seu conteúdo a partir do menu Spotlight, mas serão ejetadas instantaneamente todas as vezes.

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

Por vezes o Spotlight fica bloqueado. Desativou a indexação, mas os processos continuam sem libertar a unidade. No Monitor de Atividade, pode selecionar o processo mds infrator e clicar no botão X para forçar o encerramento.

Tenha em atenção que forçar o encerramento de processos do sistema pode causar comportamentos estranhos temporários. O Spotlight irá reiniciar-se automaticamente, mas poderá notar abrandamentos breves ou ter de esperar um momento até que tudo estabilize.

Se a unidade continuar sem ejetar após matar os processos do Spotlight, algo mais também a está a manter aberta. Execute o comando lsof novamente para ver o que resta.

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

Caçar no Monitor de Atividade e no Terminal cada vez que quer desligar uma unidade torna-se cansativo depressa. O Ejecta mostra-lhe exatamente que processos estão a bloquear a ejeção e permite-lhe encerrá-los com um clique. Para o Spotlight especificamente, identifica os processos mds relevantes e gere-os de forma limpa, para que não tenha de adivinhar qual deve matar ou preocupar-se com a estabilidade do sistema.

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.

Se prefere não utilizar o Terminal todas as vezes, o Ejecta mostra-lhe exatamente qual o processo que está a bloquear o seu disco — e permite-lhe encerrá-lo com um clique, direto da sua barra de menus.

Comprar Agora — $9.99