Sistema de arquivo - File system

Na computação , o sistema de arquivos ou sistema de arquivos (geralmente abreviado como fs ) é um método e uma estrutura de dados que o sistema operacional usa para controlar como os dados são armazenados e recuperados. Sem um sistema de arquivos, os dados colocados em um meio de armazenamento seriam um grande corpo de dados sem nenhuma maneira de dizer onde um dado para e o outro começa. Ao separar os dados em partes e dar um nome a cada parte, os dados são facilmente isolados e identificados. Levando o nome da forma como o sistema de gerenciamento de dados em papel é nomeado, cada grupo de dados é chamado de " arquivo ". A estrutura e as regras lógicas usadas para gerenciar os grupos de dados e seus nomes são chamadas de "sistema de arquivos".

Existem muitos tipos diferentes de sistemas de arquivos. Cada um tem uma estrutura e lógica diferente, propriedades de velocidade, flexibilidade, segurança, tamanho e muito mais. Alguns sistemas de arquivos foram projetados para serem usados ​​em aplicativos específicos. Por exemplo, o sistema de arquivos ISO 9660 é projetado especificamente para discos ópticos .

Os sistemas de arquivos podem ser usados ​​em vários tipos diferentes de dispositivos de armazenamento que usam diferentes tipos de mídia. A partir de 2019, as unidades de disco rígido têm sido os principais dispositivos de armazenamento e devem permanecer assim no futuro previsível. Outros tipos de mídia usados ​​incluem SSDs , fitas magnéticas e discos ópticos. Em alguns casos, como com tmpfs , a memória principal do computador ( memória de acesso aleatório , RAM) é usada para criar um sistema de arquivos temporário para uso de curto prazo.

Alguns sistemas de arquivos são usados ​​em dispositivos de armazenamento de dados locais ; outros fornecem acesso a arquivos por meio de um protocolo de rede (por exemplo, clientes NFS , SMB ou 9P ). Alguns sistemas de arquivos são "virtuais", o que significa que os "arquivos" fornecidos (chamados de arquivos virtuais ) são calculados mediante solicitação (como procfs e sysfs ) ou são meramente um mapeamento para um sistema de arquivos diferente usado como armazenamento de apoio. O sistema de arquivos gerencia o acesso ao conteúdo dos arquivos e aos metadados sobre esses arquivos. É responsável por providenciar o espaço de armazenamento; confiabilidade, eficiência e ajuste em relação ao meio de armazenamento físico são considerações de design importantes.

Origem do termo

Antes do advento dos computadores, o termo sistema de arquivos era usado para descrever um método de armazenamento e recuperação de documentos em papel. Em 1961, o termo estava sendo aplicado a arquivamento computadorizado junto com o significado original. Em 1964, estava em uso geral.

Arquitetura

Um sistema de arquivos consiste em duas ou três camadas. Às vezes, as camadas são explicitamente separadas e às vezes as funções são combinadas.

O sistema de arquivos lógico é responsável pela interação com o aplicativo do usuário. Ele fornece a interface de programação de aplicativos (API) para operações de arquivo - OPEN, CLOSE, READ, etc., e passa a operação solicitada para a camada abaixo dela para processamento. O sistema de arquivos lógico "gerencia entradas da tabela de arquivos abertos e descritores de arquivos por processo". Esta camada fornece "acesso a arquivos, operações de diretório, [e] segurança e proteção".

A segunda camada opcional é o sistema de arquivos virtual . "Esta interface permite suporte para várias instâncias simultâneas de sistemas de arquivos físicos, cada um dos quais é chamado de implementação de sistema de arquivos".

A terceira camada é o sistema de arquivos físicos . Esta camada se preocupa com a operação física do dispositivo de armazenamento (por exemplo, disco). Ele processa blocos físicos sendo lidos ou gravados. Ele lida com o gerenciamento de buffer e memória e é responsável pelo posicionamento físico dos blocos em locais específicos no meio de armazenamento. O sistema de arquivos físicos interage com os drivers de dispositivo ou com o canal para conduzir o dispositivo de armazenamento.

Aspectos dos sistemas de arquivos

Gerenciamento de espaço

Nota: isso se aplica apenas a sistemas de arquivos usados ​​em dispositivos de armazenamento.

Um exemplo de espaço livre, demonstrado com clusters NTFS de 4.096 bytes : 100.000 arquivos, cada cinco bytes por arquivo, o que equivale a 500.000 bytes de dados reais, mas requerem 409.600.000 bytes de espaço em disco para armazenar

Os sistemas de arquivos alocam espaço de maneira granular, geralmente várias unidades físicas no dispositivo. O sistema de arquivos é responsável por organizar arquivos e diretórios e controlar quais áreas da mídia pertencem a quais arquivos e quais não estão sendo usadas. Por exemplo, no Apple DOS do início dos anos 1980, setores de 256 bytes em disquetes de 140 kilobytes usavam um mapa de trilha / setor .

Isso resulta em espaço não utilizado quando um arquivo não é um múltiplo exato da unidade de alocação, às vezes referido como espaço livre . Para uma alocação de 512 bytes, o espaço não utilizado médio é de 256 bytes. Para clusters de 64 KB, o espaço não utilizado médio é de 32 KB. O tamanho da unidade de alocação é escolhido quando o sistema de arquivos é criado. A escolha do tamanho da alocação com base no tamanho médio dos arquivos que se espera que estejam no sistema de arquivos pode minimizar a quantidade de espaço inutilizável. Freqüentemente, a alocação padrão pode fornecer um uso razoável. A escolha de um tamanho de alocação muito pequeno resulta em sobrecarga excessiva se o sistema de arquivos contiver principalmente arquivos muito grandes.

Os sistemas de arquivos podem ficar fragmentados

A fragmentação do sistema de arquivos ocorre quando o espaço não utilizado ou arquivos únicos não são contíguos. Conforme um sistema de arquivos é usado, os arquivos são criados, modificados e excluídos. Quando um arquivo é criado, o sistema de arquivos aloca espaço para os dados. Alguns sistemas de arquivos permitem ou requerem a especificação de uma alocação de espaço inicial e alocações incrementais subsequentes conforme o arquivo cresce. Conforme os arquivos são excluídos, o espaço que eles foram alocados eventualmente é considerado disponível para uso por outros arquivos. Isso cria áreas usadas e não usadas alternadas de vários tamanhos. Esta é a fragmentação do espaço livre. Quando um arquivo é criado e não há uma área de espaço contígua disponível para sua alocação inicial, o espaço deve ser atribuído em fragmentos. Quando um arquivo é modificado de tal forma que se torna maior, ele pode exceder o espaço inicialmente alocado para ele, outra alocação deve ser atribuída em outro lugar e o arquivo se torna fragmentado.

Em alguns sistemas operacionais, um administrador de sistema pode usar cotas de disco para limitar a alocação de espaço em disco.

Nomes de arquivo

Um nome de arquivo (ou nome de arquivo ) é usado para identificar um local de armazenamento no sistema de arquivos. A maioria dos sistemas de arquivos tem restrições quanto ao comprimento dos nomes dos arquivos. Em alguns sistemas de arquivos, os nomes dos arquivos não fazem distinção entre maiúsculas e minúsculas (ou seja, os nomes MYFILEe se myfilereferem ao mesmo arquivo em um diretório); em outros, nomes de arquivos são sensíveis caso (ou seja, os nomes MYFILE, MyFilee myfilereferem-se a três arquivos separados que estão no mesmo diretório).

A maioria dos sistemas de arquivos modernos permite que os nomes dos arquivos contenham uma ampla gama de caracteres do conjunto de caracteres Unicode . No entanto, eles podem ter restrições ao uso de determinados caracteres especiais, não permitindo-os dentro dos nomes de arquivo; esses caracteres podem ser usados ​​para indicar um dispositivo, tipo de dispositivo, prefixo de diretório, separador de caminho de arquivo ou tipo de arquivo.

Diretórios

Os sistemas de arquivos normalmente têm diretórios (também chamados de pastas ) que permitem ao usuário agrupar arquivos em coleções separadas. Isso pode ser implementado associando o nome do arquivo com um índice em um índice ou um inode em um sistema de arquivos do tipo Unix . As estruturas de diretório podem ser simples (ou seja, lineares) ou permitir hierarquias onde os diretórios podem conter subdiretórios. O primeiro sistema de arquivos a suportar hierarquias arbitrárias de diretórios foi usado no sistema operacional Multics . Os sistemas de arquivos nativos de Unix-like sistemas também suportam hierarquias de diretórios arbitrários, como fazem, por exemplo, a Apple 's hierárquica do sistema de arquivos , e seu sucessor HFS + no clássico Mac OS , o FAT sistema de arquivos em MS-DOS 2.0 e versões posteriores do MS-DOS e no Microsoft Windows , o sistema de arquivos NTFS na família de sistemas operacionais Windows NT e o ODS-2 (On-Disk Structure-2) e níveis superiores do sistema de arquivos Files-11 no OpenVMS .

Metadados

Outras informações de contabilidade são normalmente associadas a cada arquivo em um sistema de arquivos. O comprimento dos dados contidos em um arquivo pode ser armazenado como o número de blocos alocados para o arquivo ou como uma contagem de bytes . A hora em que o arquivo foi modificado pela última vez pode ser armazenada como o carimbo de data / hora do arquivo. Os sistemas de arquivos podem armazenar a hora de criação do arquivo, a hora em que foi acessado pela última vez, a hora em que os metadados do arquivo foram alterados ou a hora em que foi feito o último backup do arquivo. Outras informações podem incluir o tipo de dispositivo do arquivo (por exemplo , bloco , caractere , soquete , subdiretório , etc.), seu ID de usuário proprietário e ID de grupo , suas permissões de acesso e outros atributos de arquivo (por exemplo, se o arquivo é somente leitura, executável , etc. .).

Um sistema de arquivos armazena todos os metadados associados ao arquivo - incluindo o nome do arquivo, o comprimento do conteúdo de um arquivo e a localização do arquivo na hierarquia de pastas - separados do conteúdo do arquivo.

A maioria dos sistemas de arquivos armazena os nomes de todos os arquivos em um diretório em um lugar - a tabela de diretório para aquele diretório - que geralmente é armazenado como qualquer outro arquivo. Muitos sistemas de arquivos colocam apenas alguns dos metadados de um arquivo na tabela de diretórios e o restante dos metadados desse arquivo em uma estrutura completamente separada, como o inode .

A maioria dos sistemas de arquivos também armazena metadados não associados a nenhum arquivo específico. Esses metadados incluem informações sobre regiões não utilizadas - bitmap de espaço livre , mapa de disponibilidade de bloco - e informações sobre setores defeituosos . Freqüentemente, essas informações sobre um grupo de alocação são armazenadas dentro do próprio grupo de alocação.

Atributos adicionais podem ser associados em sistemas de arquivos, como NTFS , XFS , ext2 , ext3 , algumas versões de UFS e HFS + , usando atributos de arquivo estendidos . Alguns sistemas de arquivos fornecem atributos definidos pelo usuário, como o autor do documento, a codificação de caracteres de um documento ou o tamanho de uma imagem.

Alguns sistemas de arquivos permitem que diferentes coletas de dados sejam associadas a um nome de arquivo. Essas coleções separadas podem ser chamadas de fluxos ou bifurcações . A Apple há muito usa um sistema de arquivos bifurcado no Macintosh e a Microsoft oferece suporte a fluxos em NTFS. Alguns sistemas de arquivos mantêm várias revisões anteriores de um arquivo com um único nome de arquivo; o nome do arquivo por si só recupera a versão mais recente, enquanto a versão salva anterior pode ser acessada usando uma convenção de nomenclatura especial, como "nome do arquivo; 4" ou "nome do arquivo (-4)" para acessar a versão salva quatro atrás.

Consulte a comparação de sistemas de arquivos # Metadados para obter detalhes sobre quais sistemas de arquivos suportam quais tipos de metadados.

Sistema de arquivos como uma interface de usuário abstrata

Em alguns casos, um sistema de arquivos pode não fazer uso de um dispositivo de armazenamento, mas pode ser usado para organizar e representar o acesso a quaisquer dados, sejam eles armazenados ou gerados dinamicamente (por exemplo, procfs ).

Serviços de utilidade pública

Os sistemas de arquivos incluem utilitários para inicializar, alterar parâmetros e remover uma instância do sistema de arquivos. Alguns incluem a capacidade de estender ou truncar o espaço alocado para o sistema de arquivos.

Os utilitários de diretório podem ser usados ​​para criar, renomear e excluir entradas de diretório , que também são conhecidas como dentries (singular: dentry ), e para alterar metadados associados a um diretório. Os utilitários de diretório também podem incluir recursos para criar links adicionais para um diretório ( links físicos no Unix ), para renomear links pais (".." em sistemas operacionais semelhantes ao Unix) e para criar links bidirecionais para arquivos.

Os utilitários de arquivo criam, listam, copiam, movem e excluem arquivos e alteram metadados. Eles podem truncar dados, truncar ou estender a alocação de espaço, anexar, mover e modificar arquivos no local. Dependendo da estrutura subjacente do sistema de arquivos, eles podem fornecer um mecanismo para preceder ou truncar desde o início de um arquivo, inserir entradas no meio de um arquivo ou excluir entradas de um arquivo. Utilitários para liberar espaço para arquivos excluídos, se o sistema de arquivos fornecer uma função de recuperação, também pertencem a esta categoria.

Alguns sistemas de arquivos adiam operações como reorganização de espaço livre, apagamento seguro de espaço livre e reconstrução de estruturas hierárquicas, fornecendo utilitários para executar essas funções em momentos de atividade mínima. Um exemplo são os utilitários de desfragmentação do sistema de arquivos .

Alguns dos recursos mais importantes dos utilitários do sistema de arquivos são atividades de supervisão que podem envolver o desvio de propriedade ou acesso direto ao dispositivo subjacente. Isso inclui backup e recuperação de alto desempenho, replicação de dados e reorganização de várias estruturas de dados e tabelas de alocação dentro do sistema de arquivos.

Restringindo e permitindo o acesso

Existem vários mecanismos usados ​​pelos sistemas de arquivos para controlar o acesso aos dados. Normalmente, a intenção é evitar a leitura ou modificação de arquivos por um usuário ou grupo de usuários. Outro motivo é garantir que os dados sejam modificados de forma controlada, de forma que o acesso seja restrito a um programa específico. Os exemplos incluem senhas armazenadas nos metadados do arquivo ou em outro lugar e permissões de arquivo na forma de bits de permissão, listas de controle de acesso ou recursos . A necessidade dos utilitários do sistema de arquivos serem capazes de acessar os dados no nível da mídia para reorganizar as estruturas e fornecer backup eficiente geralmente significa que eles são eficazes apenas para usuários educados, mas não são eficazes contra intrusos.

Métodos para criptografar dados de arquivo às vezes são incluídos no sistema de arquivos. Isso é muito eficaz, pois não há necessidade de utilitários do sistema de arquivos para saber o valor inicial da criptografia para gerenciar os dados com eficácia. Os riscos de confiar na criptografia incluem o fato de que um invasor pode copiar os dados e usar força bruta para descriptografar os dados. Além disso, perder a semente significa perder os dados.

Manter a integridade

Uma responsabilidade significativa de um sistema de arquivos é garantir que as estruturas do sistema de arquivos no armazenamento secundário permaneçam consistentes, independentemente das ações dos programas que acessam o sistema de arquivos. Isso inclui ações executadas se um programa que modifica o sistema de arquivos for encerrado de forma anormal ou deixar de informar ao sistema de arquivos que concluiu suas atividades. Isso pode incluir a atualização dos metadados, a entrada do diretório e o tratamento de quaisquer dados que foram armazenados em buffer, mas ainda não atualizados na mídia de armazenamento físico.

Outras falhas com as quais o sistema de arquivos deve lidar incluem falhas de mídia ou perda de conexão com sistemas remotos.

No caso de uma falha do sistema operacional ou falha de energia "leve", rotinas especiais no sistema de arquivos devem ser chamadas de forma semelhante a quando um programa individual falha.

O sistema de arquivos também deve ser capaz de corrigir estruturas danificadas. Isso pode ocorrer como resultado de uma falha do sistema operacional para a qual o sistema operacional não conseguiu notificar o sistema de arquivos, uma falha de energia ou uma reinicialização.

O sistema de arquivos também deve registrar eventos para permitir a análise de problemas sistêmicos, bem como problemas com arquivos ou diretórios específicos.

Dados do usuário

O objetivo mais importante de um sistema de arquivos é gerenciar os dados do usuário. Isso inclui armazenamento, recuperação e atualização de dados.

Alguns sistemas de arquivos aceitam dados para armazenamento como um fluxo de bytes que são coletados e armazenados de maneira eficiente para a mídia. Quando um programa recupera os dados, ele especifica o tamanho de um buffer de memória e o sistema de arquivos transfere os dados da mídia para o buffer. Uma rotina de biblioteca de tempo de execução pode, às vezes, permitir que o programa do usuário defina um registro com base em uma chamada de biblioteca especificando um comprimento. Quando o programa do usuário lê os dados, a biblioteca os recupera por meio do sistema de arquivos e retorna um registro .

Alguns sistemas de arquivos permitem a especificação de um comprimento de registro fixo que é usado para todas as gravações e leituras. Isso facilita a localização do enésimo registro, bem como a atualização de registros.

Uma identificação para cada registro, também conhecida como chave, torna o sistema de arquivos mais sofisticado. O programa do usuário pode ler, escrever e atualizar registros independentemente de sua localização. Isso requer um gerenciamento complicado de blocos de mídia, geralmente separando blocos de chaves e blocos de dados. Algoritmos muito eficientes podem ser desenvolvidos com estruturas de pirâmide para localizar registros.

Usando um sistema de arquivos

Utilitários, bibliotecas de tempo de execução específicas de linguagem e programas de usuário usam APIs do sistema de arquivos para fazer solicitações ao sistema de arquivos. Isso inclui transferência de dados, posicionamento, atualização de metadados, gerenciamento de diretórios, gerenciamento de especificações de acesso e remoção.

Vários sistemas de arquivos em um único sistema

Freqüentemente, os sistemas de varejo são configurados com um único sistema de arquivos ocupando todo o dispositivo de armazenamento .

Outra abordagem é particionar o disco para que vários sistemas de arquivos com atributos diferentes possam ser usados. Um sistema de arquivos, para uso como cache do navegador ou armazenamento de e-mail, pode ser configurado com um tamanho de alocação pequeno. Isso mantém a atividade de criação e exclusão de arquivos típicos da atividade do navegador em uma área estreita do disco, onde não interferirá com outras alocações de arquivos. Outra partição pode ser criada para o armazenamento de arquivos de áudio ou vídeo com um tamanho de bloco relativamente grande. Ainda outro pode normalmente ser definido como somente leitura e apenas periodicamente definido como gravável.

Uma terceira abordagem, que é mais usada em sistemas em nuvem, é usar " imagens de disco " para hospedar sistemas de arquivos adicionais, com os mesmos atributos ou não, dentro de outro sistema de arquivos (host) como um arquivo. Um exemplo comum é a virtualização: um usuário pode executar uma distribuição Linux experimental (usando o sistema de arquivos ext4 ) em uma máquina virtual em seu ambiente Windows de produção (usando NTFS ). O sistema de arquivos ext4 reside em uma imagem de disco, que é tratada como um arquivo (ou vários arquivos, dependendo do hipervisor e das configurações) no sistema de arquivos host NTFS.

Ter vários sistemas de arquivos em um único sistema tem o benefício adicional de que, no caso de corrupção de uma única partição, os sistemas de arquivos restantes frequentemente ainda estarão intactos. Isso inclui a destruição por vírus da partição do sistema ou até mesmo de um sistema que não inicializa. Os utilitários do sistema de arquivos que requerem acesso dedicado podem ser concluídos de forma eficaz aos poucos. Além disso, a desfragmentação pode ser mais eficaz. Vários utilitários de manutenção do sistema, como varreduras de vírus e backups, também podem ser processados ​​em segmentos. Por exemplo, não é necessário fazer backup do sistema de arquivos que contém vídeos junto com todos os outros arquivos se nenhum foi adicionado desde o último backup. Quanto aos arquivos de imagem, pode-se facilmente "girar" imagens diferenciais que contêm apenas "novos" dados gravados na imagem mestre (original). Imagens diferenciais podem ser usadas tanto para questões de segurança (como um sistema "descartável" - podem ser rapidamente restauradas se destruídas ou contaminadas por um vírus, já que a imagem antiga pode ser removida e uma nova imagem pode ser criada em questão de segundos, mesmo sem procedimentos automatizados) e implantação rápida de máquina virtual (uma vez que as imagens diferenciais podem ser geradas rapidamente usando um script em lotes).

Limitações de design

Todos os sistemas de arquivos têm algum limite funcional que define a capacidade máxima de dados armazenáveis ​​nesse sistema . Esses limites funcionais são um esforço de melhor suposição do designer com base no tamanho dos sistemas de armazenamento no momento e no tamanho que os sistemas de armazenamento provavelmente se tornarão no futuro. O armazenamento em disco continuou a aumentar em taxas quase exponenciais (consulte a lei de Moore ), portanto, depois de alguns anos, os sistemas de arquivos continuaram atingindo as limitações de design que exigem que os usuários de computador mudem repetidamente para um sistema mais novo com capacidade cada vez maior.

A complexidade do sistema de arquivos normalmente varia proporcionalmente com a capacidade de armazenamento disponível. Os sistemas de arquivos dos computadores domésticos do início dos anos 1980 com 50 KB a 512 KB de armazenamento não seriam uma escolha razoável para sistemas de armazenamento modernos com centenas de gigabytes de capacidade. Da mesma forma, os sistemas de arquivos modernos não seriam uma escolha razoável para esses sistemas iniciais, uma vez que a complexidade das estruturas dos sistemas de arquivos modernos consumiria rapidamente ou até mesmo excederia a capacidade muito limitada dos sistemas de armazenamento anteriores.

Tipos de sistemas de arquivos

Os tipos de sistema de arquivos podem ser classificados em sistemas de arquivos de disco / fita, sistemas de arquivos de rede e sistemas de arquivos para fins especiais.

Sistemas de arquivos de disco

Um sistema de arquivos em disco se beneficia da capacidade da mídia de armazenamento em disco de endereçar dados aleatoriamente em um curto espaço de tempo. As considerações adicionais incluem a velocidade de acesso aos dados após o inicialmente solicitado e a antecipação de que os dados a seguir também possam ser solicitados. Isso permite o acesso de vários usuários (ou processos) a vários dados no disco, independentemente da localização sequencial dos dados. Os exemplos incluem FAT ( FAT12 , FAT16 , FAT32 ), exFAT , NTFS , HFS e HFS + , HPFS , APFS , UFS , ext2 , ext3 , ext4 , XFS , btrfs , Files-11 , Veritas File System , VMFS , ZFS , ReiserFS e ScoutFS . Alguns sistemas de arquivos de disco são sistemas de arquivos com diário ou sistemas de arquivos de versão .

Discos óticos

ISO 9660 e formato de disco universal (UDF) são dois formatos comuns que visam Compact Discs , DVD e Blu-ray Discs. Mount Rainier é uma extensão para UDF suportada desde a série 2.6 do kernel Linux e desde o Windows Vista que facilita a regravação em DVDs.

Sistemas de arquivos Flash

Um sistema de arquivos flash considera as habilidades especiais, o desempenho e as restrições dos dispositivos de memória flash . Freqüentemente, um sistema de arquivos de disco pode usar um dispositivo de memória flash como mídia de armazenamento subjacente, mas é muito melhor usar um sistema de arquivos projetado especificamente para um dispositivo flash.

Sistemas de arquivos em fita

Um sistema de arquivos em fita é um sistema de arquivos e formato de fita projetado para armazenar arquivos em fita. As fitas magnéticas são mídias de armazenamento sequencial com tempos de acesso a dados aleatórios significativamente mais longos do que os discos, o que representa desafios para a criação e gerenciamento eficiente de um sistema de arquivos de uso geral.

Em um sistema de arquivo de disco, normalmente há um diretório de arquivo mestre e um mapa de regiões de dados usadas e livres. Quaisquer adições, alterações ou remoções de arquivos requerem a atualização do diretório e dos mapas usados ​​/ gratuitos. O acesso aleatório às regiões de dados é medido em milissegundos, portanto, este sistema funciona bem para discos.

A fita requer movimento linear para enrolar e desenrolar bobinas de mídia potencialmente muito longas. Esse movimento da fita pode levar de vários segundos a vários minutos para mover o cabeçote de leitura / gravação de uma extremidade da fita para a outra.

Conseqüentemente, um diretório de arquivo mestre e um mapa de uso podem ser extremamente lentos e ineficientes com fita. A gravação normalmente envolve a leitura do mapa de uso de bloco para localizar blocos livres para gravação, atualização do mapa de uso e diretório para adicionar os dados e, em seguida, avançar a fita para gravar os dados no local correto. Cada gravação de arquivo adicional requer a atualização do mapa e do diretório e a gravação dos dados, o que pode levar vários segundos para ocorrer para cada arquivo.

Em vez disso, os sistemas de arquivos em fita normalmente permitem que o diretório de arquivo seja espalhado pela fita misturado com os dados, conhecido como streaming , de forma que movimentos repetidos e demorados da fita não sejam necessários para gravar novos dados.

No entanto, um efeito colateral desse design é que a leitura do diretório de arquivos de uma fita geralmente requer a varredura de toda a fita para ler todas as entradas de diretório espalhadas. A maioria dos softwares de arquivamento de dados que funcionam com armazenamento em fita armazenará uma cópia local do catálogo de fitas em um sistema de arquivos em disco, de forma que a adição de arquivos a uma fita possa ser feita rapidamente, sem a necessidade de verificar novamente a mídia de fita. A cópia do catálogo da fita local geralmente é descartada se não for usada por um período de tempo especificado, momento em que a fita deve ser digitalizada novamente se for usada no futuro.

A IBM desenvolveu um sistema de arquivos para fita chamado Linear Tape File System . A implementação IBM deste sistema de arquivos foi lançada como o produto IBM Linear Tape File System - Single Drive Edition (LTFS-SDE) de código aberto . O Linear Tape File System usa uma partição separada na fita para registrar os metadados do índice, evitando assim os problemas associados à dispersão de entradas de diretório por toda a fita.

Formatação de fita

Gravar dados em uma fita, apagar ou formatar uma fita costuma ser um processo muito demorado e pode levar várias horas em fitas grandes. Com muitas tecnologias de fita de dados, não é necessário formatar a fita antes de sobrescrever novos dados nela. Isso se deve à natureza inerentemente destrutiva de sobrescrever dados em mídia sequencial.

Devido ao tempo que pode levar para formatar uma fita, normalmente as fitas são pré-formatadas para que o usuário da fita não precise perder tempo preparando cada nova fita para uso. Tudo o que geralmente é necessário é gravar um rótulo de mídia de identificação na fita antes do uso, e mesmo isso pode ser gravado automaticamente pelo software quando uma nova fita é usada pela primeira vez.

Sistemas de arquivos de banco de dados

Outro conceito para gerenciamento de arquivos é a ideia de um sistema de arquivos baseado em banco de dados. Em vez de, ou além de, gerenciamento hierárquico estruturado, os arquivos são identificados por suas características, como tipo de arquivo, tópico, autor ou metadados ricos semelhantes .

IBM DB2 for i (anteriormente conhecido como DB2 / 400 e DB2 for i5 / OS) é um sistema de arquivos de banco de dados como parte do sistema operacional IBM i baseado em objeto (anteriormente conhecido como OS / 400 e i5 / OS), incorporando um único nível armazenar e executar em IBM Power Systems (anteriormente conhecido como AS / 400 e iSeries), projetado por Frank G. Soltis, ex-cientista-chefe da IBM para IBM i. Por volta de 1978 a 1988, Frank G. Soltis e sua equipe no IBM Rochester projetaram e aplicaram com sucesso tecnologias como o sistema de arquivos de banco de dados, onde outros como a Microsoft mais tarde não conseguiram realizar. Essas tecnologias são informalmente conhecidas como 'Fortress Rochester' e foram em alguns aspectos básicos estendidas das primeiras tecnologias de mainframe, mas em muitos aspectos mais avançadas de uma perspectiva tecnológica.

Alguns outros projetos que não são sistemas de arquivos de banco de dados "puros", mas que usam alguns aspectos de um sistema de arquivos de banco de dados:

  • Muitos sistemas de gerenciamento de conteúdo da Web usam um DBMS relacional para armazenar e recuperar arquivos. Por exemplo, os arquivos XHTML são armazenados como campos XML ou de texto, enquanto os arquivos de imagem são armazenados como campos de blob; As instruções SQL SELECT (com XPath opcional ) recuperam os arquivos e permitem o uso de uma lógica sofisticada e associações de informações mais ricas do que os "sistemas de arquivos usuais". Muitos CMSs também têm a opção de armazenar apenas metadados no banco de dados, com o sistema de arquivos padrão usado para armazenar o conteúdo dos arquivos.
  • Sistemas de arquivos muito grandes, incorporados por aplicativos como Apache Hadoop e Google File System , usam alguns conceitos de sistema de arquivos de banco de dados .

Sistemas de arquivos transacionais

Alguns programas precisam fazer várias alterações no sistema de arquivos ou, se uma ou mais alterações falharem por qualquer motivo, não faça nenhuma delas. Por exemplo, um programa que está instalando ou atualizando software pode gravar executáveis, bibliotecas e / ou arquivos de configuração. Se parte da gravação falhar e o software for deixado parcialmente instalado ou atualizado, o software pode estar danificado ou inutilizável. Uma atualização incompleta de um utilitário principal do sistema, como o shell de comando , pode deixar todo o sistema inutilizável.

O processamento da transação introduz a garantia de atomicidade , garantindo que as operações dentro de uma transação sejam todas confirmadas ou que a transação possa ser abortada e o sistema descarta todos os seus resultados parciais. Isso significa que se houver um travamento ou falha de energia, após a recuperação, o estado armazenado será consistente. O software será completamente instalado ou a falha na instalação será completamente revertida, mas uma instalação parcial inutilizável não será deixada no sistema. As transações também fornecem a garantia de isolamento , o que significa que as operações dentro de uma transação são ocultadas de outros encadeamentos no sistema até que a transação seja confirmada e que as operações interferentes no sistema sejam devidamente serializadas com a transação.

O Windows, começando com o Vista, adicionou suporte a transações ao NTFS , em um recurso chamado NTFS Transacional , mas seu uso agora é desencorajado. Existem vários protótipos de pesquisa de sistemas de arquivos transacionais para sistemas UNIX, incluindo o sistema de arquivos Valor, Amino, LFS e um sistema de arquivos ext3 transacional no kernel TxOS, bem como sistemas de arquivos transacionais direcionados a sistemas embarcados, como TFFS.

Garantir a consistência em várias operações do sistema de arquivos é difícil, senão impossível, sem as transações do sistema de arquivos. O bloqueio de arquivo pode ser usado como um mecanismo de controle de simultaneidade para arquivos individuais, mas normalmente não protege a estrutura do diretório ou os metadados do arquivo. Por exemplo, o bloqueio de arquivo não pode impedir as condições de corrida TOCTTOU em links simbólicos. O bloqueio de arquivo também não pode reverter automaticamente uma operação com falha, como uma atualização de software; isso requer atomicidade.

O registro em diário dos sistemas de arquivos é uma técnica usada para introduzir consistência no nível da transação nas estruturas do sistema de arquivos. As transações de diário não são expostas a programas como parte da API do sistema operacional; eles são usados ​​apenas internamente para garantir a consistência na granularidade de uma única chamada do sistema.

Os sistemas de backup de dados normalmente não oferecem suporte para backup direto de dados armazenados de maneira transacional, o que dificulta a recuperação de conjuntos de dados confiáveis ​​e consistentes. A maioria dos softwares de backup simplesmente observa quais arquivos foram alterados desde um determinado momento, independentemente do estado transacional compartilhado entre vários arquivos no conjunto de dados geral. Como solução alternativa, alguns sistemas de banco de dados simplesmente produzem um arquivo de estado arquivado contendo todos os dados até aquele ponto, e o software de backup apenas faz backup disso e não interage diretamente com os bancos de dados transacionais ativos. A recuperação requer a recriação separada do banco de dados do arquivo de estado após o arquivo ser restaurado pelo software de backup.

Sistemas de arquivos de rede

Um sistema de arquivos de rede é um sistema de arquivos que atua como um cliente para um protocolo de acesso remoto a arquivos, fornecendo acesso a arquivos em um servidor. Os programas que usam interfaces locais podem criar, gerenciar e acessar de forma transparente diretórios e arquivos hierárquicos em computadores remotos conectados em rede. Exemplos de sistemas de arquivos de rede incluem clientes para os protocolos NFS , AFS , SMB e clientes do tipo sistema de arquivos para FTP e WebDAV .

Sistemas de arquivos de disco compartilhados

Um sistema de arquivo de disco compartilhado é aquele em que várias máquinas (geralmente servidores) têm acesso ao mesmo subsistema de disco externo (geralmente uma SAN). O sistema de arquivos arbitra o acesso a esse subsistema, evitando colisões de gravação. Os exemplos incluem GFS2 da Red Hat , GPFS , agora conhecido como Spectrum Scale, da IBM, SFS da DataPlow, CXFS da SGI , StorNext da Quantum Corporation e ScoutFS da Versity.

Sistemas de arquivos especiais

Um sistema de arquivos especial apresenta elementos que não são de arquivo de um sistema operacional como arquivos, para que possam ser atuados usando APIs do sistema de arquivos. Isso é mais comumente feito em sistemas operacionais semelhantes ao Unix, mas os dispositivos também recebem nomes de arquivo em alguns sistemas operacionais não semelhantes ao Unix.

Sistemas de arquivos do dispositivo

Um sistema de arquivos de dispositivo representa dispositivos de E / S e pseudo-dispositivos como arquivos, chamados de arquivos de dispositivo . Exemplos em sistemas do tipo Unix incluem devfs e, em sistemas Linux 2.6, udev . Em sistemas não semelhantes ao Unix, como TOPS-10 e outros sistemas operacionais influenciados por ele, onde o nome do arquivo completo ou o nome do caminho de um arquivo pode incluir um prefixo de dispositivo, outros dispositivos além daqueles que contêm sistemas de arquivos são referidos por um prefixo de dispositivo especificando o dispositivo, sem nada o seguindo.

Outros sistemas de arquivos especiais

  • No kernel do Linux, configfs e sysfs fornecem arquivos que podem ser usados ​​para consultar o kernel em busca de informações e configurar entidades no kernel.
  • procfs mapeia processos e, no Linux, outras estruturas de sistema operacional em um espaço de arquivo.

Armazenamento mínimo de sistema de arquivos / cassete de áudio

Na década de 1970, os dispositivos de disco e fita digital eram muito caros para alguns dos primeiros usuários de microcomputadores . Um sistema de armazenamento básico de dados barato foi desenvolvido, usando uma fita cassete de áudio comum .

Quando o sistema precisava gravar dados, o usuário era notificado para pressionar "RECORD" no gravador de fita cassete e, em seguida, pressionar "RETURN" no teclado para notificar o sistema de que o gravador estava gravando. O sistema gravou um som para fornecer sincronização de tempo e, em seguida, modulou sons que codificaram um prefixo, os dados, uma soma de verificação e um sufixo. Quando o sistema precisava ler os dados, o usuário era instruído a pressionar "PLAY" no gravador de fita cassete. O sistema ouviria os sons na fita esperando até que uma explosão de som pudesse ser reconhecida como a sincronização. O sistema então interpretaria os sons subsequentes como dados. Quando a leitura dos dados era concluída, o sistema notificava o usuário para pressionar "STOP" no gravador de fita cassete. Era primitivo, mas (principalmente) funcionava. Os dados eram armazenados sequencialmente, geralmente em um formato sem nome, embora alguns sistemas (como a série de computadores Commodore PET ) permitissem que os arquivos fossem nomeados. Vários conjuntos de dados podem ser gravados e localizados avançando rapidamente a fita e observando no contador da fita para encontrar o início aproximado da próxima região de dados na fita. O usuário pode ter que ouvir os sons para encontrar o ponto certo para começar a tocar a próxima região de dados. Algumas implementações até incluíram sons audíveis intercalados com os dados.

Sistemas de arquivos simples

Em um sistema de arquivos simples, não há subdiretórios ; entradas de diretório para todos os arquivos são armazenadas em um único diretório.

Quando a mídia de disquete foi disponibilizada pela primeira vez, esse tipo de sistema de arquivos era adequado devido à quantidade relativamente pequena de espaço para dados disponível. As máquinas CP / M apresentavam um sistema de arquivos simples, onde os arquivos podiam ser atribuídos a uma das 16 áreas de usuário e as operações de arquivo genérico reduzidas para funcionar em uma em vez de padronizar para trabalhar em todas elas. Essas áreas de usuário não eram mais do que atributos especiais associados aos arquivos; ou seja, não era necessário definir uma cota específica para cada uma dessas áreas e os arquivos podiam ser adicionados aos grupos enquanto ainda houvesse espaço de armazenamento livre no disco. O primeiro Apple Macintosh também apresentava um sistema de arquivos simples, o Macintosh File System . Era incomum, pois o programa de gerenciamento de arquivos ( Macintosh Finder ) criava a ilusão de um sistema de arquivamento parcialmente hierárquico no topo do EMFS. Essa estrutura exigia que cada arquivo tivesse um nome exclusivo, mesmo que parecesse estar em uma pasta separada. IBM DOS / 360 e OS / 360 armazenam entradas para todos os arquivos em um pacote de disco ( volume ) em um diretório do pacote denominado Índice de Volume (VTOC).

Embora simples, os sistemas de arquivos simples tornam-se estranhos à medida que o número de arquivos aumenta e torna difícil organizar os dados em grupos de arquivos relacionados.

Uma adição recente à família de sistemas de arquivos simples é o S3 da Amazon , um serviço de armazenamento remoto, que é intencionalmente simplista para permitir que os usuários personalizem como seus dados são armazenados. As únicas construções são baldes (imagine uma unidade de disco de tamanho ilimitado) e objetos (semelhantes, mas não idênticos ao conceito padrão de um arquivo). O gerenciamento avançado de arquivos é permitido por ser capaz de usar quase qualquer caractere (incluindo '/') no nome do objeto e a capacidade de selecionar subconjuntos do conteúdo do intervalo com base em prefixos idênticos.

Sistemas de arquivos e sistemas operacionais

Muitos sistemas operacionais incluem suporte para mais de um sistema de arquivos. Às vezes, o SO e o sistema de arquivos estão tão intimamente interligados que é difícil separar as funções do sistema de arquivos.

Deve haver uma interface fornecida pelo software do sistema operacional entre o usuário e o sistema de arquivos. Essa interface pode ser textual (como fornecida por uma interface de linha de comando , como o shell Unix ou OpenVMS DCL ) ou gráfica (como fornecida por uma interface gráfica do usuário , como navegadores de arquivo ). Se gráfica, a metáfora da pasta , contendo documentos, outros arquivos e pastas aninhadas é freqüentemente usada (consulte também: diretório e pasta).

Unix e sistemas operacionais semelhantes ao Unix

Os sistemas operacionais do tipo Unix criam um sistema de arquivos virtual, que faz com que todos os arquivos em todos os dispositivos pareçam existir em uma única hierarquia. Isso significa que, nesses sistemas, há um diretório raiz e cada arquivo existente no sistema está localizado em algum lugar sob ele. Os sistemas do tipo Unix podem usar um disco RAM ou recurso compartilhado de rede como seu diretório raiz.

Os sistemas do tipo Unix atribuem um nome de dispositivo a cada dispositivo, mas não é assim que os arquivos desse dispositivo são acessados. Em vez disso, para obter acesso aos arquivos em outro dispositivo, o sistema operacional deve primeiro ser informado onde na árvore de diretórios esses arquivos devem aparecer. Este processo é chamado de montagem de um sistema de arquivos. Por exemplo, para acessar os arquivos em um CD-ROM , deve-se dizer ao sistema operacional "Pegue o sistema de arquivos deste CD-ROM e faça-o aparecer sob tal e tal diretório." O diretório fornecido ao sistema operacional é chamado de ponto de montagem  - pode, por exemplo, ser / media . O diretório / media existe em muitos sistemas Unix (conforme especificado no Filesystem Hierarchy Standard ) e destina-se especificamente ao uso como ponto de montagem para mídia removível como CDs, DVDs, unidades USB ou disquetes. Ele pode estar vazio ou pode conter subdiretórios para a montagem de dispositivos individuais. Geralmente, apenas o administrador (ou seja, usuário root ) pode autorizar a montagem de sistemas de arquivos.

Os sistemas operacionais do tipo Unix geralmente incluem software e ferramentas que auxiliam no processo de montagem e fornecem novas funcionalidades. Algumas dessas estratégias foram cunhadas como "montagem automática" como um reflexo de seu propósito.

  • Em muitas situações, os sistemas de arquivos diferentes do root precisam estar disponíveis assim que o sistema operacional for inicializado . Todos os sistemas do tipo Unix, portanto, fornecem um recurso para montar sistemas de arquivos no momento da inicialização. Os administradores de sistema definem esses sistemas de arquivos no arquivo de configuração fstab ( vfstab no Solaris ), que também indica opções e pontos de montagem.
  • Em algumas situações, não há necessidade de montar certos sistemas de arquivos no momento da inicialização , embora seu uso possa ser desejado posteriormente. Existem alguns utilitários para sistemas do tipo Unix que permitem a montagem de sistemas de arquivos predefinidos sob demanda.
  • A mídia removível permite que programas e dados sejam transferidos entre máquinas sem uma conexão física. Exemplos comuns incluem unidades flash USB , CD-ROMs e DVDs . Portanto, os utilitários foram desenvolvidos para detectar a presença e disponibilidade de uma mídia e, em seguida, montá-la sem qualquer intervenção do usuário.
  • Os sistemas progressivos do tipo Unix também introduziram um conceito chamado supermontagem ; veja, por exemplo, o projeto Linux supermount-ng . Por exemplo, um disquete que foi supermontado pode ser removido fisicamente do sistema. Em circunstâncias normais, o disco deve ser sincronizado e, em seguida, desmontado antes de sua remoção. Desde que a sincronização tenha ocorrido, um disco diferente pode ser inserido na unidade. O sistema automaticamente percebe que o disco foi alterado e atualiza o conteúdo do ponto de montagem para refletir a nova mídia.
  • Um montador automático montará automaticamente um sistema de arquivos quando uma referência for feita ao diretório sobre o qual ele deve ser montado. Isso geralmente é usado para sistemas de arquivos em servidores de rede, em vez de depender de eventos como a inserção de mídia, como seria apropriado para mídia removível.

Linux

O Linux oferece suporte a vários sistemas de arquivos, mas as escolhas comuns para o disco do sistema em um dispositivo de bloco incluem a família ext * ( ext2 , ext3 e ext4 ), XFS , JFS e btrfs . Para flash bruto sem uma camada de tradução de flash (FTL) ou Dispositivo de tecnologia de memória (MTD), existem UBIFS , JFFS2 e YAFFS , entre outros. SquashFS é um sistema de arquivos compactado somente leitura comum.

Solaris

Solaris em versões anteriores padronizadas para UFS (sem diário ou sem registro) para sistemas de arquivos inicializáveis ​​e suplementares. Solaris padronizado, com suporte e UFS estendido.

Suporte para outros sistemas de arquivos e melhorias significativas foram adicionadas ao longo do tempo, incluindo Veritas Software Corp. (registro) VxFS , Sun Microsystems (agrupamento) QFS , Sun Microsystems (registro) UFS e Sun Microsystems (código aberto, agrupável, compactável de 128 bits, e correção de erros) ZFS .

Extensões de kernel foram adicionadas ao Solaris para permitir a operação inicializável do Veritas VxFS . Logging ou journaling foi adicionado em UFS no Sun Solaris 7 . Versões do Solaris 10 , Solaris Express, OpenSolaris e outras variantes de código aberto do sistema operacional Solaris posteriormente suportaram ZFS inicializável .

O Logical Volume Management permite estender um sistema de arquivos em vários dispositivos com o objetivo de adicionar redundância, capacidade e / ou rendimento. Ambientes legados no Solaris podem usar o Solaris Volume Manager (anteriormente conhecido como Solstice DiskSuite ). Vários sistemas operacionais (incluindo Solaris) podem usar o Veritas Volume Manager . Os sistemas operacionais modernos baseados em Solaris eclipsam a necessidade de gerenciamento de volume por meio do aproveitamento de pools de armazenamento virtual no ZFS .

Mac OS

O macOS (antigo Mac OS X) usa o Apple File System (APFS), que em 2017 substituiu um sistema de arquivos herdado do Mac OS clássico chamado HFS Plus (HFS +). A Apple também usa o termo "Mac OS Extended" para HFS +. O HFS Plus é um sistema de arquivos rico em metadados e que preserva maiúsculas e minúsculas, mas (geralmente) não faz distinção entre maiúsculas e minúsculas . Devido às raízes Unix do macOS, as permissões Unix foram adicionadas ao HFS Plus. Versões posteriores do HFS Plus adicionaram journaling para evitar a corrupção da estrutura do sistema de arquivos e introduziram uma série de otimizações para os algoritmos de alocação em uma tentativa de desfragmentar arquivos automaticamente sem a necessidade de um desfragmentador externo.

Os nomes dos arquivos podem ter até 255 caracteres. O HFS Plus usa Unicode para armazenar nomes de arquivos. No macOS, o tipo de arquivo pode vir do código do tipo , armazenado nos metadados do arquivo ou da extensão do nome do arquivo .

HFS Plus tem três tipos de links: Unix de estilo ligações duras , Unix de estilo ligações simbólicas , e aliases . Os aliases são projetados para manter um link para seu arquivo original, mesmo se eles forem movidos ou renomeados; eles não são interpretados pelo próprio sistema de arquivos, mas pelo código do gerenciador de arquivos no espaço do usuário .

O macOS 10.13 High Sierra, que foi anunciado em 5 de junho de 2017 no evento WWDC da Apple, usa o Apple File System em unidades de estado sólido .

O macOS também oferece suporte ao sistema de arquivos UFS , derivado do BSD Unix Fast File System via NeXTSTEP . No entanto, a partir do Mac OS X Leopard , o macOS não podia mais ser instalado em um volume UFS, nem um sistema pré-Leopard instalado em um volume UFS pode ser atualizado para o Leopard. A partir do Mac OS X Lion, o suporte a UFS foi completamente abandonado.

As versões mais recentes do macOS são capazes de ler e gravar nos sistemas de arquivos legados FAT (16 e 32) comuns no Windows. Eles também são capazes de ler os sistemas de arquivos NTFS mais recentes para Windows. Para gravar em sistemas de arquivos NTFS em versões macOS anteriores ao Mac OS X Snow Leopard , é necessário software de terceiros. O Mac OS X 10.6 (Snow Leopard) e posterior permitem a gravação em sistemas de arquivos NTFS, mas somente após uma alteração não trivial da configuração do sistema (existe um software de terceiros que automatiza isso).

Por fim, o macOS oferece suporte à leitura e gravação do sistema de arquivos exFAT desde o Mac OS X Snow Leopard, a partir da versão 10.6.5.

OS / 2

OS / 2 1.2 introduziu o High Performance File System (HPFS). HPFS oferece suporte a nomes de arquivo de maiúsculas e minúsculas em diferentes páginas de código , nomes de arquivo longos (255 caracteres), uso mais eficiente de espaço em disco, uma arquitetura que mantém itens relacionados próximos uns dos outros no volume de disco, menos fragmentação de dados, espaço baseado em extensão alocação, uma estrutura de árvore B + para diretórios e o diretório raiz localizado no ponto médio do disco, para acesso médio mais rápido. Um sistema de arquivos com jornal (JFS) foi lançado em 1999.

PC-BSD

PC-BSD é uma versão desktop do FreeBSD, que herda o suporte ZFS do FreeBSD , de forma semelhante ao FreeNAS . O novo instalador gráfico do PC-BSD pode manipular / ( root ) em instalações de pool ZFS e RAID-Z e criptografia de disco usando Geli desde o início de uma maneira fácil e conveniente ( GUI ). O atual PC-BSD 9.0+ 'Isotope Edition' tem o sistema de arquivos ZFS versão 5 e o pool de armazenamento ZFS versão 28.

Plano 9

O Plan 9 da Bell Labs trata tudo como um arquivo e acessa todos os objetos como um arquivo seria acessado (ou seja, não há ioctl ou mmap ): rede, gráficos, depuração, autenticação, recursos, criptografia e outros serviços são acessados ​​via I / O operações em descritores de arquivo . O protocolo 9P remove a diferença entre arquivos locais e remotos. Os sistemas de arquivos no Plan 9 são organizados com a ajuda de namespaces privados por processo, permitindo que cada processo tenha uma visão diferente dos vários sistemas de arquivos que fornecem recursos em um sistema distribuído.

O sistema operacional Inferno compartilha esses conceitos com o Plano 9.

Microsoft Windows

Lista de diretórios em um shell de comando do Windows

O Windows usa os sistemas de arquivos FAT , NTFS , exFAT , Live File System e ReFS (o último deles só é compatível e pode ser usado no Windows Server 2012 , Windows Server 2016 , Windows 8 , Windows 8.1 e Windows 10 ; o Windows não pode inicializar a partir dele).

O Windows usa uma abstração de letra de unidade no nível do usuário para distinguir um disco ou partição de outro. Por exemplo, o caminho C: \ WINDOWS representa um diretório WINDOWS na partição representada pela letra C. Unidade C: é mais comumente usada para a partição da unidade de disco rígido principal , na qual o Windows é geralmente instalado e a partir da qual ele inicializa. Essa "tradição" se tornou tão arraigada que existem bugs em muitos aplicativos que fazem suposições de que a unidade em que o sistema operacional está instalado é C. O uso de letras de unidade e a tradição de usar "C" como a letra da unidade para a partição primária da unidade de disco rígido pode ser rastreada até o MS-DOS , onde as letras A e B foram reservadas para até duas unidades de disquete. Isso, por sua vez, derivou do CP / M na década de 1970 e, por fim, do CP / CMS da IBM de 1967.

GORDURA

A família de sistemas de arquivos FAT é suportada por quase todos os sistemas operacionais para computadores pessoais, incluindo todas as versões do Windows e MS-DOS / PC DOS , OS / 2 e DR-DOS . (PC DOS é uma versão OEM de MS-DOS, MS-DOS foi inicialmente baseada na SCP 's 86-DOS . DR-DOS foi baseado em Digital Research ' s concomitante DOS , um sucessor de CP / M-86 ). O Os sistemas de arquivos FAT são, portanto, adequados como formato de intercâmbio universal entre computadores e dispositivos de quase todos os tipos e idades.

O sistema de arquivos FAT tem suas raízes em um precursor FAT de 8 bits (incompatível) no Standalone Disk BASIC e no projeto MDOS / MIDAS de curta duração .

Com o passar dos anos, o sistema de arquivos foi expandido de FAT12 para FAT16 e FAT32 . Vários recursos foram adicionados ao sistema de arquivos, incluindo subdiretórios , suporte a página de códigos , atributos estendidos e nomes extensos de arquivos . Terceiros, como a Digital Research, incorporaram suporte opcional para rastreamento de exclusão e esquemas de segurança multiusuário baseados em volume / diretório / arquivo para oferecer suporte a arquivos e senhas de diretório e permissões, como direitos de acesso de leitura / gravação / execução / exclusão. A maioria dessas extensões não é compatível com o Windows.

Os sistemas de arquivos FAT12 e FAT16 tinham um limite no número de entradas no diretório raiz do sistema de arquivos e restrições no tamanho máximo de discos ou partições formatados em FAT .

FAT32 aborda as limitações em FAT12 e FAT16, exceto para o limite de tamanho de arquivo de quase 4 GB, mas permanece limitado em comparação com NTFS.

FAT12, FAT16 e FAT32 também têm um limite de oito caracteres para o nome do arquivo e três caracteres para a extensão (como .exe ). Isso é comumente referido como o limite de nome de arquivo 8.3 . VFAT , uma extensão opcional para FAT12, FAT16 e FAT32, introduzida no Windows 95 e Windows NT 3.5 , permitia que nomes de arquivo longos ( LFN ) fossem armazenados no sistema de arquivos FAT de maneira compatível com versões anteriores.

NTFS

O NTFS , introduzido com o sistema operacional Windows NT em 1993, permitia o controle de permissão baseado em ACL . Outros recursos também suportados pelo NTFS incluem links físicos, vários fluxos de arquivos, indexação de atributos, rastreamento de cota, arquivos esparsos, criptografia, compactação e pontos de nova análise (diretórios que funcionam como pontos de montagem para outros sistemas de arquivos, links simbólicos, junções, links de armazenamento remoto) .

exFAT

O exFAT tem certas vantagens sobre o NTFS no que diz respeito à sobrecarga do sistema de arquivos .

exFAT não é compatível com sistemas de arquivos FAT como FAT12, FAT16 ou FAT32. O sistema de arquivos é compatível com os sistemas Windows mais recentes, como Windows XP, Windows Server 2003, Windows Vista, Windows 2008, Windows 7, Windows 8 e Windows 10.

O exFAT é compatível com o macOS a partir da versão 10.6.5 (Snow Leopard). O suporte em outros sistemas operacionais é escasso, pois a implementação do suporte para exFAT requer uma licença. exFAT é o único sistema de arquivos totalmente compatível com macOS e Windows e que pode conter arquivos maiores que 4 GB.

OpenVMS

MVS

Antes da introdução do VSAM , os sistemas OS / 360 implementavam um sistema de arquivos híbrido. O sistema foi projetado para suportar facilmente pacotes de discos removíveis , de modo que as informações relacionadas a todos os arquivos em um disco ( volume na terminologia da IBM) são armazenadas nesse disco em um arquivo de sistema simples denominado Volume Table of Contents (VTOC). O VTOC armazena todos os metadados do arquivo. Posteriormente, uma estrutura de diretório hierárquica foi imposta com a introdução do Catálogo do Sistema , que pode opcionalmente catalogar arquivos (conjuntos de dados) em volumes residentes e removíveis. O catálogo contém apenas informações para relacionar um conjunto de dados a um volume específico. Se o usuário solicitar acesso a um conjunto de dados em um volume offline e tiver privilégios adequados, o sistema tentará montar o volume necessário. Conjuntos de dados catalogados e não catalogados ainda podem ser acessados ​​usando informações no VTOC, ignorando o catálogo, se o id de volume necessário for fornecido para a solicitação OPEN. Posteriormente, o VTOC foi indexado para agilizar o acesso.

Sistema de Monitor de Conversação

O componente IBM Conversational Monitor System (CMS) do VM / 370 usa um sistema de arquivo simples separado para cada disco virtual ( minidisco ). Os dados do arquivo e as informações de controle são espalhados e misturados. A âncora é um registro denominado Master File Directory (MFD), sempre localizado no quarto bloco do disco. Originalmente, o CMS usava blocos de 800 bytes de comprimento fixo, mas as versões posteriores usavam blocos de tamanho maior de até 4K. O acesso a um registro de dados requer dois níveis de indireção , onde a entrada de diretório do arquivo (chamada de entrada File Status Table (FST)) aponta para blocos contendo uma lista de endereços dos registros individuais.

Sistema de arquivos AS / 400

Os dados no AS / 400 e seus sucessores consistem em objetos do sistema mapeados no espaço de endereço virtual do sistema em um armazenamento de nível único . Muitos tipos de objetos são definidos, incluindo os diretórios e arquivos encontrados em outros sistemas de arquivos. Objetos de arquivo, junto com outros tipos de objetos, formam a base do suporte do AS / 400 para um banco de dados relacional integrado .

Outros sistemas de arquivos

  • O Prospero File System é um sistema de arquivos baseado no modelo de sistema virtual. O sistema foi criado pelo Dr. B. Clifford Neuman, do Information Sciences Institute da University of Southern California.
  • Sistema de arquivos RSRE FLEX - escrito em ALGOL 68
  • O sistema de arquivos do Michigan Terminal System (MTS) é interessante porque: (i) fornece "arquivos de linha" onde comprimentos de registro e números de linha são associados como metadados a cada registro no arquivo, linhas podem ser adicionadas, substituídas, atualizadas com registros do mesmo comprimento ou de tamanhos diferentes, e excluídos em qualquer lugar do arquivo sem a necessidade de ler e reescrever todo o arquivo; (ii) usando chaves de programa, os arquivos podem ser compartilhados ou permitidos para comandos e programas, além de usuários e grupos; e (iii) há um mecanismo de bloqueio de arquivo abrangente que protege os dados do arquivo e seus metadados.

Limitações

Convertendo o tipo de um sistema de arquivos

Pode ser vantajoso ou necessário ter arquivos em um sistema de arquivos diferente do que existe atualmente. As razões incluem a necessidade de um aumento nos requisitos de espaço além dos limites do sistema de arquivos atual. A profundidade do caminho pode precisar ser aumentada além das restrições do sistema de arquivos. Pode haver considerações de desempenho ou confiabilidade. Fornecer acesso a outro sistema operacional que não oferece suporte ao sistema de arquivos existente é outro motivo.

Conversão no local

Em alguns casos, a conversão pode ser feita no local, embora a migração do sistema de arquivos seja mais conservadora, pois envolve a criação de uma cópia dos dados e é recomendada. No Windows, os sistemas de arquivos FAT e FAT32 podem ser convertidos em NTFS por meio do utilitário convert.exe, mas não o contrário. No Linux, ext2 pode ser convertido para ext3 (e convertido de volta), e ext3 pode ser convertido para ext4 (mas não de volta), e ambos ext3 e ext4 podem ser convertidos para btrfs e convertidos de volta até que as informações de desfazer sejam excluídas. Essas conversões são possíveis devido ao uso do mesmo formato para os próprios dados do arquivo e à realocação dos metadados no espaço vazio, em alguns casos usando suporte a arquivos esparsos .

Migrando para um sistema de arquivos diferente

A migração tem a desvantagem de exigir espaço adicional, embora possa ser mais rápida. O melhor caso é se houver espaço não utilizado na mídia que conterá o sistema de arquivos final.

Por exemplo, para migrar um sistema de arquivos FAT32 para um sistema de arquivos ext2. Primeiro crie um novo sistema de arquivos ext2, depois copie os dados para o sistema de arquivos e exclua o sistema de arquivos FAT32.

Uma alternativa, quando não há espaço suficiente para reter o sistema de arquivos original até que o novo seja criado, é usar uma área de trabalho (como uma mídia removível). Isso leva mais tempo, mas um backup dos dados é um bom efeito colateral.

Caminhos de arquivo longos e nomes de arquivo longos

Em sistemas de arquivos hierárquicos, os arquivos são acessados ​​por meio de um caminho que é uma lista ramificada de diretórios que contém o arquivo. Sistemas de arquivos diferentes têm limites diferentes na profundidade do caminho. Os sistemas de arquivos também têm um limite para o comprimento de um nome de arquivo individual.

Copiar arquivos com nomes longos ou localizados em caminhos de profundidade significativa de um sistema de arquivos para outro pode causar resultados indesejáveis. Isso depende de como o utilitário que faz a cópia lida com a discrepância.

Veja também

Notas

Referências

Fontes

Leitura adicional

Livros

Conectados

links externos