Linus Torvalds e o sistema de arquivos OS X

28

Em 2008, Linus Torvalds disse famosa em uma entrevista que "o OS X, de certa forma, é pior do que o Windows para programar. O sistema de arquivos deles é completo e uma porcaria total, o que é assustador". Procurei mais detalhes sobre por que ele se sente assim sobre o sistema de arquivos OS X (HFS + presumivelmente), mas não consegui encontrar nada.

Linus certamente não gosta do modelo básico de sistema de arquivos Unix, e duvido que ele odeie o HFS + por não fazer distinção entre maiúsculas e minúsculas. E, apesar de quão provocador é o seu comentário, duvido que seja completamente sem mérito. Como o comentário foi no contexto de programação do OS X, suspeito que sua opinião possa ter sido baseada em desempenho, robustez, interface do sistema operacional ou algo do tipo. Alguém sabe que reclamações a Linus da era de 2008 poderia ter tido com a HFS + da era de 2008?

Kenster
fonte
2
Ele é conhecido por ter opiniões realmente fortes sobre algumas coisas, por exemplo, quando ele deu uma palestra sobre o git @ google, ele passou boa parte da conversa destruindo os outros sistemas. Então, eu diria que ele provavelmente tem um motivo para acreditar no que pensa, mas também é uma pessoa muito exagerada, mesmo sendo um gênio. youtube.com/watch?v=4XpnKHJAok8
El Developer
3
Se você não obtiver a resposta para esta pergunta aqui que estava esperando, considere também pesquisar (e possivelmente também perguntar) no Unix e Linux ou Super Usuário . (Com tantos sites disponíveis agora às vezes é difícil saber qual é o lugar para fazer uma pergunta Pelo menos IMHO :)..
irracional John
Eu costumo atacar o HFS + mais do que qualquer outro sistema de arquivos que normalmente encontro. Hoje em dia, na maioria dos sistemas, eu normalmente não percebo ou me importo com o sistema de arquivos que está usando, mas o HFS + sempre cria alguma coisa. Como hoje, descobri que estava sendo ferrado por sua falta de resolução de segundos após o horário de funcionamento. Houve também o tempo em que encontrei duas linhas de código C que poderiam causar um impasse no sistema de arquivos praticamente derrubando toda a máquina. Isso nem foi corrigido a partir do 10.5. Não tenho certeza sobre versões mais recentes.
Iguananaut 01/03

Respostas:

21

Está disponível uma transcrição da sessão de perguntas e respostas na qual Linus fez o comentário , mas parece que ele não foi convidado a elaborar. Não tenho certeza se uma análise mais aprofundada de sua opinião sobre o HFS + foi anotada em outro lugar.

Para a análise de outra pessoa, você pode dar uma olhada nas revisões do Mac OS X de John Siracusa. Em particular a do Mac OS X Lion, que possui uma seção intitulada " O que há de errado com o HFS + ". Acho que o mais importante é (ênfase minha):

Simultaneidade, metadados escritos na ordem correta dos bytes, precisão de menos de um segundo, suporte para tamanhos de volume massivos e suporte a arquivos esparsos são recursos comuns dos sistemas de arquivos Unix. O Mac OS X, é claro, é construído sobre uma base Unix. Quando o HFS + foi portado do Mac OS clássico para o Mac OS X, ele precisava ser estendido para suportar alguns conjuntos mínimos de recursos esperados dos sistemas de arquivos Unix .

Alguns desses recursos eram fáceis de ajustar, mas outros eram muito difíceis de adicionar ao sistema de arquivos sem quebrar a compatibilidade com versões anteriores. Um exemplo particularmente assustador é a implementação de links físicos no HFS +. Para acompanhar os links físicos, o HFS + cria um arquivo separado para cada link físico dentro de um diretório oculto no nível raiz do volume. Diretórios ocultos são meio assustadores para começar, mas o verdadeiro susto ocorre quando você se lembra que o Time Machine é implementado usando links físicos para evitar duplicação desnecessária de dados.

O ponto importante aqui é que o Mac OS X está usando um sistema de arquivos que nem foi projetado para um sistema Unix, foi projetado para o Mac OS clássico e corrigido para implementar os recursos do Mac OS X 10.0, mantendo a compatibilidade com versões anteriores. A Apple implementou posteriormente os recursos adicionais que agora possui no Mac OS X 10.7 (registro no diário, metadados, eventos do sistema de arquivos ...) usando a mesma abordagem de correção em vez de uma abordagem de "design desde o início". Não sei como explicar isso de maneira não técnica, mas você poderia dizer que todos esses recursos adicionais estão baseados em uma base clássica do Mac OS que nunca foi projetada para dar suporte a eles. Isso significa que a solução não é tão boa quanto poderia ser. O exemplo que Siracusa continua discutindo é que a solução que a Apple teve que usar para links físicos enquanto trabalhava dentro das limitações do HFS + é muito sensível a falhas de hardware, o que é agravado pelo fato de que o HFS + também nunca foi projetado para se preocupar com dados integridade. Obviamente, manter a compatibilidade com o Mac OS clássico era uma limitação desejável no Mac OS X 10.0, mas não existe mais no Mac OS X 10.7.

Rinzwind
fonte
11
Ótimo link; isso cobre muitas coisas importantes. A falta de suporte a arquivos esparsos é bastante louca. O Linux ext2 fez arquivos esparsos, mesmo com alocação simples baseada em bloco de bitmap, como o HFS +. Mas acho que ele faz um acordo muito grande sobre o armazenamento de metadados no big-endian. A bswapinstrução x86 é muito rápida. Isso torna o código maior e mais feio, mas manter a compatibilidade no disco é um grande problema. O Linux XFS ainda armazena todos os metadados big endian (exceto endian nativo no diário), devido à sua origem no SGI nas CPUs MIPS. Não é uma situação ideal, mas o XFS não é retido por ele.
Peter Cordes
7

Embora eu não seja um especialista em sistemas operacionais e comecei a usar o OSX depois de vir do Windows, considero-me um PowerUser no Windows e bastante competente no Linux. Vindo desse contexto, fiquei surpreso que, em um sistema operacional bastante moderno como o OSX, o sistema de arquivos tenha peculiaridades como a maneira como os nomes dos arquivos são "misturados".

Entendo que os problemas de Linus com o HFS + decorrem do mesmo ponto: pelo que encontrei pesquisando o problema, o HFS + armazena os nomes dos arquivos usando Unicode, mas quando um arquivo usa caracteres "estendidos" ou NÃO ASCII (como á, é, í, ó, ú, ñ do espanhol ou coisas como o ü em alemão), para o qual o Unicode fornece 2 maneiras de codificar o nome, o OSX silenciosamente "normaliza" a codificação no tempo de armazenamento ... Não é um problema real quando o O arquivo foi criado e consumido no OSX, mas quando você compartilha informações com usuários de outros sistemas operacionais, o fato de o nome do arquivo ser alterado gera todos os tipos de comportamentos estranhos ...

Caso em questão: tenho acompanhado meus "artefatos" de trabalho (arquivos, documentos, etc.) no Subversion nos últimos 8 anos. Ao migrar para o Mac, obtive o cliente SVN para Mac e, depois de fazer um checkout dos meus diretórios relevantes, descobri que todos os arquivos com sotaque parecem estar ausentes e um novo arquivo com o mesmo nome aparece sem versão. Indo além, o problema é que o arquivo IN do sistema de arquivos é codificado por apple, enquanto os dados no repositório usam outra codificação Unicode (perfeitamente válida e legítima) ...

Acho que isso é uma "manipulação" grosseira dos meus dados. A Apple entende os dois formatos da codificação de nome de arquivo (acessar um compartilhamento no Windows ou usar um pendrive no Windows mostra os nomes de arquivos adequados etc.), mas no momento da criação do arquivo, é decidido que "ele conhece melhor" e apenas renomeou os arquivos. ..

Novamente, não é algo que a maioria dos usuários notará - até fazer uma cópia de um arquivo ou renomeá-lo e colocá-lo de volta onde estava o original e acabar com dois arquivos aparentemente iguais !!!)

JJarava
fonte
11
Esse é apenas um ponto, e o problema real é que diferentes sistemas operacionais simplesmente normalizam as strings de maneiras diferentes, e os aplicativos de plataforma cruzada não lidam com isso. Não normalizar os nomes provavelmente seria pior (você pode ter dois arquivos diferentes com nomes que normalizam a mesma string no OS X).
Blaisorblade
4

John Siracusa e Dan Benjamin discutem algumas desvantagens do HFS + no Hypercritical # 56 .

Eles abordam a corrupção de dados no HFS + e consideram alguns dos recursos do ZFS.

badams
fonte
9
Existe alguma maneira de você fornecer um resumo da discussão deles na sua resposta? O fluxo de áudio é (neste momento em nossa tecnologia atual) não pesquisável e muito longo. Sem mencionar que está em outro site, por isso é suscetível à podridão do link. Essa seria uma resposta muito melhor se contivesse detalhes específicos sobre a discussão.
Ian C.
11
A conversa filesystem começa 23 minutos.
neoneye
11
A maioria das informações disponíveis no podcast também pode ser encontrada em um artigo Ars Technica por John Siracusa (um dos dois homens no podcast.)
TML