Mac OS lento na rede Samba

Esta semana eu me deparei com um problema intrigante em uma rede mista composta de estações Linux, Windows e Mac OS. O cliente reclamava que sem qualquer motivo aparente todas as suas estações Apple tornaram-se absurdamente lentas para acessar compartilhamentos Samba enquanto as estações Linux e Windows continuam o acesso normalmente. A solução foi mais simples do que parecia e consistiu em apagar alguns arquivos irrelevantes que o sistema da Maça cria.

Quando eu digo “tornaram-se absurdamente lento” entende-se que eu quero dizer que antes do problema os diretórios compartilhados eram carregados em 5 segundos e após o problema passaram a levar até 5 minutos. E não falo aqui de diretórios muito grandes não. O maior diretório tinha cerca de 500 arquivos JPG.

Depois de muito pesquisar a relação entre os sistemas Apple e o Samba e também testar várias otimizações no smb.conf do servidor a conclusão que cheguei era que definitivamente o problema era o Mac e não o servidor. Então passei a procurar no Google simplesmente por “mac lento”, “otimizar mac” etc. Até que encontrei umas discussões em forums sobre uns arquivos de metadados que o Mac cria em qualquer disco externo formatado como FAT ou unidades de rede remotas SMB/CIFS.

Trata-se dos arquivos .DS_Store e ._nomedoarquivooriginal. O primeiro é criado pelo “Finder”, gerenciador de arquivos do Mac OS, para armazenar atributos da pasta onde ele está, como seu papel de parede, posição dos ícones etc – você deve encontrar um arquivo por pasta que o Finder resolva mexer; o segundo é para armazenar atributos individuais para cada arquivo, assim se você tiver um arquivo “Praia com a galera.jpg” você também terá um arquivo “._Praia com a galera.jpg” contendo metadados sobre o primeiro arquivo. Veja que estes arquivos são invisíveis pelo Mac. Você só os encontrará no servidor samba, pela linha de comandos, ou usando um gerenciador de arquivos gráfico que permita listar arquivos ocultos.

Todos os textos que li sobre otimização do Mac (nenhum deles oficial) sempre indicavam a exclusão destes arquivos. Em uma nova conversa com o cliente descobri que por algum tempo ele excluia estes arquivos manualmente pois eram “muito chatos”, mas ele acabou desistindo de apagá-los porque sempre apareciam denovo. Bingo! achei o motivo da lentidão e quando ela começou a aparecer.

Após convencer o cliente que este era o motivo da lentidão e conseguir sua autorização para removê-los, eu os removi a partir da linha de comandos do servidor Samba:

find /mnt/storage -type f -iname ".ds_store" -delete
find /mnt/storage -type f -iname "._*" -delete

Adicionei uma regra “veto files” na seção global do smb.conf impedindo a criação destes arquivos novamente:

veto files = /.DS_Store/._*/

E após reiniciar o serviço samba o problema estava resolvido.

service samba restart

ou, dependendo do seu S.O.:

service smb restart
service nmb restart

Foi só acessar o compartilhamento a partir de qualquer estação Mac OS e mostrar ao cliente que o trabalho estava concluído com sucesso.

Adicionalmente a isso, há no site da Apple[1] e em alguns outros sites uma dica para fazer o Mac OS não criar estes arquivos. A linha de comandos abaixo deve ser rodada na linha de comandos de cada estação Mac OS. Como teria que rodar isso em todas as estações eu optei por não executá-la, mas que ela fique aqui registrada para o caso de ser necessário usá-la futuramente:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

É importante lembrar, que excluir aqueles arquivos fará com que os usuários percam a capacidade de destacar arquivos com cores diferentes e fazer anotações sobre eles (por isso eu primeiro pedi autorização ao cliente) entretanto já podem acessar os seus dados mais rápido. Trocamos usabilidade por performance.

[1] Apple. Mac OS X v10.4 and later: How to prevent .DS_Store file creation over network connections. http://support.apple.com/kb/HT1629

9 ideias sobre “Mac OS lento na rede Samba”

  1. Show de bola, obrigado por compartilhar o conhecimento. Talvez, em breve, chegarão máquinas Mac onde trabalho e já estarei prevenido.
    Meus parabéns !!!

  2. Boa noite.
    Tenho uma rede com um servidor AD Windows 2008 onde as estações MAC apresentaram a mesma lentidão no acesso às pastas compartilhadas.
    Você acha que esse procedimento de aplica ao meu caso?
    Grato

  3. @Homero,
    Nunca trabalhei com AD, mas possivelmente sim. Já que “em tese” o Samba se comporta como um servidor Windows e o problema não era relacionado ao Samba em si, mas ao ao acesso aos recursos de rede. Você pode testar remover os malditos arquivos em uma pasta pequena e se der certo fazer nas demais. abç

  4. amigo, tive esse problema, porem solucionei de outra maneira muito simples, entre no finder e coloquei para conectar com o servidor, porem utilizei o protocolo AFP …. funcionou perfeitamente… esta muito rápido… não sou técnico .. posso estar usando algo ultrapassado .. porem não consegui executar esses comandos.. portanto.. minha solucao por ficar para os Noobs/

  5. @Rodrigo ,

    Os dois comandos “find” devem ser executados a partir do prompt de comandos do seu servidor Samba. Você deve estar logado como “root” e deve alterar o “/mnt/storage” pelo caminho correto que corresponde ao seu compartilhamento.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *