Por que existem tantos projetos concorrentes de sistema de arquivos? [fechadas]


27

Apenas uma pergunta rápida, mas por que existem tantos sistemas de arquivos ainda competindo e em uso hoje? (ntfs, fat32, ext3 (ffs), etc.)

Parece que os projetistas de sistemas de arquivos podem concordar com os melhores aspectos de cada tipo de sistema e implementar um "melhor" sistema de arquivos, não? Apenas um pensamento, uma vez que esses sistemas de arquivos já existem há algum tempo, e deve ser pelo menos um pouco aparente quais têm boas qualidades sobre outras, e poderíamos apenas combinar o bem em cada um e criar um sistema definitivo que seja muito melhor.


39
Devemos tentar combinar uma Ferrari com uma retroescavadeira também? O design é baseado em uma série de trade-offs; perfeito não existe.
Pubby

7
@ Pubby8 eu vou dirigir um.
The Muffin Man

8
A verdadeira resposta para isso não é apenas uma discussão técnica, mas também legal.
detly 10/10

38
Esta pergunta me lembra de xkcd.com/927
dan04 10/10

7
Faremos isso quase ao mesmo tempo em que fabricamos uma câmera que possui uma lente grande e longa de alta qualidade e é realmente leve, cabe no bolso ou na bolsa e é muito barata. A idéia de que você pode pegar todas as partes boas e combiná-las em uma das melhores coisas não funciona na prática. Uma lista de coisas boas é incompleta ou cheia de itens que se contradizem .
Eric Lippert 10/10

Respostas:


32

Vamos pensar sobre os detalhes aqui por um momento, usando exemplos que você citou:

  • NTFS - Proprietário da Microsoft. Quem não é da Microsoft não pode usar isso, portanto, teria que usar / criar algo diferente. Agora, se você é da Microsoft, deseja usar isso no FAT devido aos problemas do próximo item.

  • fat32 - Não é suficientemente moderno. O tamanho máximo do arquivo é 4 GB. A pesquisa de entrada no diretório é O (n). A tabela de alocação é uma lista vinculada, em vez de algo mais eficiente como um bitmap de alocação (onde é realmente rápido encontrar espaço livre contíguo). Não suporta permissões. Não suporta links físicos ou simbólicos. Não suporta registro no diário.

  • ext3 - Esta foi uma extensão do ext2 principalmente para dar suporte ao registro no diário.

Então, parece que existem alguns motivos:

  1. Um sistema de arquivos anterior carece de algo. No caso do FAT, falta muito: em termos de (1) recursos e (2) desempenho. No caso do ext2, ele não possuía atualizações em diário, portanto, a recuperação de uma falha demorou mais tempo.

  2. Um sistema de arquivos existente provavelmente funcionaria, mas não é seu. (por exemplo, NTFS, se você não é da Microsoft). Nesse caso, você realmente não tem muita escolha, a não ser criar sua própria.


2
Nitpick: na verdade, o tamanho máximo de arquivo (de acordo com as especificações oficiais publicados pela própria Microsoft) para FAT32 é de 2 GiByte, mas ninguém, nem mesmo implementos TI da Microsoft que estupidamente :-)
Jörg W Mittag

16
Nitpick 2: o formato de arquivo NTFS foi inventado pela Microsoft, mas é um formato publicado e não há ônus de patente conhecido. Vários sistemas operacionais que não são da Microsoft implementam NTFS, incluindo Linux.
Stephen C

6
Xfs - projetado para permitir a recuperação rápida de arquivos massivos (projetados para estações de trabalho de vídeo). ZFS - um sistema de arquivos para o século XXI. ReiserFS - uma tentativa de criar um sistema de arquivos "matador". Cada sistema de arquivos tem seus pontos fortes e fracos, cada um foi criado para atender a uma determinada necessidade.
Timothy Baldridge 10/10

3
@ Stephen C: NTFS não foi exatamente "inventado" pela Microsoft. en.wikipedia.org/wiki/NTFS#History
Secure

1
@StephenC Você tem certeza disso? Tanto quanto sei, NTFS não está documentado. A maioria das implementações de código aberto avisa que haverá danos graves se você tentar gravá-las usando esse driver quando o Windows deixar o disco em determinados estados.
asveikau

24

Resposta curta: Um tamanho não serve para todos.

Existem trade-offs. Por exemplo, se você deseja um FS registrado no diário, paga (eficiência, complexidade etc.), mas obtém algo disso. Alguns não sentem a necessidade de um FS registrado no diário e não querem pagar por isso, outros sim. O mesmo acontece com outros "recursos" do FS.


Quando foi a última vez que você decidiu qual FS atende às suas necessidades específicas? Estou mais do lado da codificação do que das operações, mas nunca vi essa decisão. Especialmente, já que muitas vezes não há escolha real: MS-> NTFS. Linux: Ext (mais recente), talvez Reiser.
keppla

@keppla: As decisões são frequentemente tomadas pelos designers do SO. Os sistemas de arquivos não são balcanizados pelos usuários finais.
Zano 10/10

2
@keppla: Sempre que decido formatar uma unidade flash, desativo o registro em diário e decido se é apenas para meu próprio uso (depois ext2, porque possui permissões de arquivo POSIX) ou para compartilhar com outras pessoas (depois fat32). No entanto, para discos rígidos que tendem a usar NTFS (quando no Windows) ou ext4 (quando em Linux) ...
Liori

1
@keppla Quase todos os sistemas Linux vêm com a capacidade de usar vários sistemas de arquivos diferentes, não apenas o ext [2..4]. Quando eu configuro uma caixa do Linux, olho para o objetivo da caixa. Por exemplo: minha máquina Linux DVR executa JFS na unidade de armazenamento de vídeo porque lida com arquivos grandes com muito mais facilidade do que o ext3 e usa menos sobrecarga da CPU que o XFS. Mas para as contas de usuário e arquivos de sistema na mesma máquina, eu executo o EXT3 porque estou lidando com tamanhos de arquivo menores.
jwernerny

@keppla: Além disso, no Mac OS X também é possível escolher entre várias combinações de recursos do FS. Além disso, originalmente eu pretendia que o tom fosse o de alguém que cria o FS. Porque, o OP perguntou por que um designer não cria um FS que tenha o melhor de tudo. E o que tento apontar é o melhor em relação a onde será usado. Em alguns lugares, um recurso é útil, em outros lugares, o mesmo recurso é uma sobrecarga desnecessária.
Jungle Hunter

14

Nunca pode haver um "melhor" de qualquer coisa, porque há muitas opiniões sobre o que é "melhor". A decisão é específica para as necessidades e limitações do usuário. Os projetos são sempre baseados em sua capacidade de se ajustar às restrições.

Um telefone celular básico precisa armazenar algumas centenas de contatos, histórico de mensagens de texto e alguns aplicativos pequenos. Seu sistema de arquivos precisa suportar uma estrutura hierárquica de diretórios em unidades com vários terabytes em uma configuração RAID? Existe RAM suficiente no dispositivo para executar esse sistema de arquivos? O sistema de arquivos precisa de ACLs complexas? Provavelmente não - para todas essas perguntas -, portanto, um sistema de arquivos simples e que consome muitos recursos seria suficiente.

As empresas também desenvolverão produtos diferentes para manter uma vantagem competitiva. Por exemplo, a Apple defende a capacidade de seu sistema de arquivos HFS + para rastrear quais arquivos foram alterados recentemente, para que os backups sejam rápidos. Por outro lado, os drivers para um sistema de arquivos de disquete (FAT) podem caber em apenas alguns KB de memória.


1
O problema NÃO é que ninguém possa concordar sobre o que "melhor" significa. O problema é que não pode haver um "melhor" ...
Stephen C

1
@ Stephen: Claro que pode haver um "melhor". Só precisamos decidir a métrica de medição primeiro.
Donal Fellows

Somente se você conseguir que todos concordem .
Stephen C

11

Demais depende do que você deseja otimizar.

Considere o FAT por um momento: seu suporte a nomes longos de arquivos é kludgy (para dizer bem), e a busca por arquivos em um diretório é linear, tornando-se lenta muito rapidamente se um diretório contiver muitos arquivos. Ao mesmo tempo, ele possui um mínimo de metadados para a velocidade de gravação bruta é muito boa e, como é muito simples, o código para implementá-lo pode ser bem pequeno.

Algo como ext2 ou ext3 adiciona muitos recursos e capacidades que estão ausentes do FAT. Procurar arquivos também é muito mais rápido. Ao mesmo tempo, a velocidade de gravação bruta é provavelmente um pouco mais lenta, e o código para implementar o sistema de arquivos é sem dúvida muito maior.


9

Apenas uma pergunta rápida, mas por que existem tantos sistemas de arquivos ainda competindo e em uso hoje? (ntfs, fat32, ext3 (ffs), etc.)

Parece que os projetistas de sistemas de arquivos podem concordar com os melhores aspectos de cada tipo de sistema e implementar um "melhor" sistema de arquivos, não?

Suponhamos que não houvesse trade-offs, e os projetistas de sistemas de arquivos implementaram um "melhor" sistema de arquivos, livre de preocupações com patentes, e lançado como BSD / GPL de licença dupla, para que fosse aceitável para MS e Debian. O que faz você pensar que os outros sistemas de arquivos desapareceriam da noite para o dia?

Não acho que alguém tenha usado o FAT32 em um novo disco rígido por 10 anos, mas ele ainda persiste como o padrão de fato para formatar drives USB, cartões SD, etc. Os fabricantes de câmeras e telefones celulares tentaram e testaram o firmware para usá-lo. Os entusiastas do Arduino têm bibliotecas estáveis ​​para usá-lo. Todos eles vão precisar de grandes incentivos para mudar.

E então você tem os problemas de compatibilidade com versões anteriores de sistemas operacionais mais antigos (especialmente o Windows, cujos usuários não desejam instalar novos drivers do sistema de arquivos).


5
é bom ter algum tipo de dispositivo externo formatado para FAT32 para capacidade de plataforma cruzada. É por isso que você verá muitos dispositivos externos formatados para o FAT32.
Matt

@ Matt, isso não é um subconjunto do que eu disse?
Peter Taylor

3
E para micros pequenos, o código para implementar o suporte básico ao FAT se encaixa em apenas alguns kbytes. Isso importa quando você tem apenas alguns kbytes no total para jogar.
rapid_now 10/10

2
@ Peter eu estava mais afirmando que você pode usá-lo em diferentes sistemas operacionais sem problemas.
Matt

4

Como costuma acontecer na computação, a resposta é (a) devido a circunstâncias históricas e à necessidade de manter a compatibilidade com versões anteriores e (b) porque alguns métodos são mais adequados para algumas tarefas do que outros.

Em (a) você precisa se lembrar de que o "drive Winchester" - eu tenho idade suficiente para lembrar que eles foram chamados assim - (o que o resto do mundo chama de 'disco rígido') existe apenas cerca de metade do tempo da computação eletrônica e, mesmo assim, ele não estava acessível à maioria dos usuários por esse período por razões de custo. O sistema de arquivos FAT funcionou bem em disquetes e também nos pequenos discos rígidos originais, pois era razoavelmente eficiente e exigia pouca sobrecarga. Uma vez que começou a ser usado - e seu uso se espalhou amplamente porque é simples de implementar - os fabricantes não puderam dizer a seus usuários que seus dados antigos eram subitamente inválidos.

Da mesma forma, para os usuários do Linux, digamos, um driver NTFS estável demorava muito tempo, portanto, manter os dispositivos formatados como FAT significava que eles poderiam ser lidos e gravados em vários sistemas.

Em (b) - pense nas diferenças entre um sistema que, digamos, armazena bilhões de registros de banco de dados baseados em texto e um que armazena arquivos de mídia com tamanho de DVD. Para o banco de dados, cada registro pode ser muito pequeno - talvez apenas 30 ou 40 bytes e certamente um sistema de arquivos que alocou todo um 'segmento' (no entanto, você deseja definir isso) de disco provavelmente desperdiçará espaço em disco. Não é assim com os DVDs - "segmentos" maiores (dentro da razão, obviamente) provavelmente são altamente eficientes em termos de espaço.

Sistemas de arquivos diferentes são projetados para diferentes propósitos.


3

Outro exemplo de por que nunca pode haver um sistema de arquivos perfeito para todos: HDDs e SSDs têm características de acesso de leitura / gravação muito diferentes. Um sistema de arquivos otimizado para SSD provavelmente funcionaria melhor fragmentando arquivos como loucos, mas com cada fragmento o tamanho da página do próprio SSD; isso teria um desempenho terrível em um disco rígido. Um sistema de arquivos otimizado para HDD tenta manter os arquivos o menos desagregados possível e até coloca os arquivos usados ​​com freqüência na área "quente" na parte externa do prato que gira mais rapidamente; essas características não ajudariam em nada a velocidade de leitura do SSD e colocariam um grande ônus sobre como elas são gravadas.


2

Eu acho que falta um fato muito importante. Na maioria das vezes, os programadores tendem a pensar que sua maneira de fazer algo é superior a todas as outras formas e, portanto, eles olham para um design de sistema de arquivos e apresentam problemas e soluções que parecem ser mais gerais, elegantes, rápidas, certas. E se esse sentimento for forte o suficiente, eles poderão criar seu próprio sistema de arquivos.

Isso se deve a concorrência, fragmentação, confusão e, no final, espero melhores soluções e mais opções para você escolher uma solução adequada.


1

Aqui está outro exemplo concreto de por que você precisaria de um sistema de arquivos separado ou estender a funcionalidade de um FS existente.

  1. Digamos que você seja um fornecedor de banco de dados e gostaria de reduzir a complexidade do gerenciamento de distribuição / espelhamento de dados para melhorar a E / S. Você sentirá a necessidade de estender a funcionalidade dos sistemas de arquivos básicos, como a Oracle fez com o ASM (Automated Storage Manager), que é como um Logical Volume Manager.

1

Na sua lista, você menciona um sistema de arquivos antigo usado porque um melhor não está disponível, mas é rápido.

Existem outros sistemas de arquivos. Eu ouvi o sistema de arquivos do google é principalmente para duplicação / redundância rápida se um disco rígido ou servidor ficar inoperante. Lembro-me de ouvir outro sistema de arquivos feito para muitos arquivos pequenos e ser usado em um sistema para muitas solicitações em arquivos pequenos (miniaturas).

Essencialmente, eles têm objetivos diferentes e podem ser propriedade versus código aberto.


0

Eu acho que o ZFS (usado pelo Solaris no sistema Sun [agora Oracle]) é a solução para o sistema de arquivos.

Infelizmente, a Oracle fecha o OpenSolaris para descoberta e teste-o.

O ZFS é de código aberto, alguns Linux estão tentando integrá-lo, procure na Wikipedia por mais informações.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.