thumb|direita|250px|Representação visual de um sistema de ficheiros, contanto com diretórios (pastas) e ficheiros (arquivos) Em computação, (também conhecido por sistema de gestão de ficheiros) é a forma de organização de dados em algum meio de armazenamento de dados em massa, frequentemente feito em discos magnéticos. Ele controla como os dados são armazenados e recuperados, possibilitando ao sistema operacional decodificar os dados armazenados e lê-los ou gravá-los. Sem um sistema de arquivos, as informações colocadas em um meio de armazenamento seriam um grande corpo de dados, sem nenhuma maneira de dizer onde uma parte da informação termina e a próxima começa. Ao separar os dados em pedaços e dar um nome a cada peça, a informação é facilmente isolada e identificada. Tomando seu nome a partir do modo como os sistemas de informação baseados em papel são nomeados, cada grupo de dados é chamado de "arquivo". A estrutura e as regras lógicas usadas para gerenciar os grupos de informações e seus nomes são chamadas de "sistema de arquivos".
Existem muitos tipos diferentes de sistemas de arquivos. Cada um tem estrutura e lógica diferentes, 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 foi 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. O dispositivo de armazenamento mais comum em uso hoje é uma unidade de disco rígido. Outros tipos de mídia usados incluem memória flash, fitas magnéticas e discos ópticos. Em alguns casos, como no 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 a curto prazo.
Alguns sistemas de arquivos são usados em dispositivos locais de armazenamento de dados, 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 computados mediante solicitação (como procfs e sysfs) ou são apenas um mapeamento em um sistema de arquivos diferente usado como armazenamento de backup. O sistema de arquivos gerencia o acesso ao conteúdo dos arquivos e aos metadados sobre esses arquivos. É responsável por organizar o espaço de armazenamento. A confiabilidade, eficiência e ajuste com relação ao meio físico de armazenamento são importantes considerações de projeto.
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 ao arquivamento computadorizado ao lado do significado original. Em 1964, já era de uso geral.
Fazendo analogias, tal organização assemelha-se a uma biblioteca escolar. O bibliotecário organiza os livros conforme um padrão, cuja busca, convenientemente, procura deixar mais fácil, sem ocupar muitas prateleiras e assegurando a integridade deste. Ainda, certamente, organiza os livros segundo suas características (assunto, censura, etc.). Depois de organizados, ou durante a organização, o bibliotecário cria uma lista com todos os livros da biblioteca, com seus assuntos, localizações e códigos respectivos.
Aplicando a analogia à informática, o sistema operacional seria o bibliotecário da "biblioteca de dados" do computador, o disco de armazenamento. Exatamente igual à organização de uma biblioteca, o sistema operacional guarda os dados nos espaços vazios do disco, rotulando-os com um FCB (File Control Block, Bloco de Controle de Arquivo) e ainda criando uma lista com a posição deste dado, chamada de MFT (Master File Table, Tabela de Arquivos Mestre). Sabendo a posição do arquivo a ser aberto/gravado, o sistema operacional solicita a leitura desta, decodifica/codifica e realiza a abertura/gravação do dado.
Um sistema de ficheiro é assim: uma forma de criar uma estrutura lógica de acesso a dados numa partição. Sendo assim, também é importante referir que nunca poderá ter dois ou mais tipos de sistemas de ficheiros (formatos) numa mesma partição.
O MBR (Master Boot Record) é um arquivo de dados interligado com a BIOS cuja importância é o reconhecimento do sistema de arquivos, como também na inicialização do sistema operacional.
Para a maioria dos usuários, o sistema de arquivos é o aspecto mais visível de um sistema operacional. Ele fornece o mecanismo para o armazenamento online e o acesso relacionado tantos aos dados como aos programas do sistema operacional e de todos os usuários do sistema de computação. O sistema de arquivos consiste em duas partes distintas: uma coleção de arquivos, cada um deles armazenando dados relacionados, e uma estrutura de diretórios, que organiza e fornece informação sobre todos os arquivos do sistema. Alguns sistemas de arquivos têm uma terceira parte, as partições, utilizadas para separar física ou logicamente grandes coleções de diretórios.
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 aplicações (API) para operações de arquivo - OPEN, CLOSE, READ, etc. e passa a operação solicitada para a camada abaixo para processamento. O sistema de arquivos lógico "gerencia as entradas da tabela de arquivos abertos e os descritores de arquivos por processo." Esta camada fornece "acesso a arquivos, operações de diretório, segurança e proteção".
A segunda camada opcional é o sistema de arquivos virtual. "Esta interface permite o suporte para múltiplas 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ísico. Esta camada está relacionada com o funcionamento físico do dispositivo de armazenamento (por exemplo, disco). Ele processa blocos físicos que estão sendo lidos ou gravados. Ele lida com o gerenciamento de buffer e de memória e é responsável pelo posicionamento físico de blocos em locais específicos no meio de armazenamento. O sistema de arquivos físico interage com os drivers de dispositivo ou com o canal para controlar o dispositivo de armazenamento.
Aspectos de sistemas de arquivos Gerenciamento de espaço Observação: isto aplica-se somente a sistemas de arquivos usados em dispositivos de armazenamento.
Os sistemas de arquivos alocam o espaço de maneira granular, geralmente várias unidades físicas no dispositivo. O sistema de arquivos é responsável por organizar os arquivos e diretórios e manter o controle de quais áreas da mídia pertencem a qual arquivo e quais não estão sendo usadas. Por exemplo, no Apple DOS do início dos anos 80, os 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 de folga. Para uma alocação de 512 bytes, o espaço médio não utilizado é de 256 bytes. Para clusters de 64 KB, o espaço médio não utilizado é de 32 KB. O tamanho da unidade de alocação é escolhido quando o sistema de arquivos é criado. Escolher o tamanho da alocação com base no tamanho médio dos arquivos que se espera estar no sistema de arquivos pode minimizar a quantidade de espaço inutilizável. Frequentemente, a alocação padrão pode fornecer uso razoável. Escolher um tamanho de alocação que seja muito pequeno resulta em sobrecarga excessiva se o sistema de arquivos contiver arquivos na maioria muito grandes.
A fragmentação de sistema de arquivos ocorre quando o espaço não utilizado ou os arquivos individuais não são contíguos. Como 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 exigem a especificação de uma alocação de espaço inicial e alocações incrementais subsequentes à medida que o arquivo cresce. À medida que 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 utilizadas e não utilizadas 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íguo disponível para sua alocação inicial, o espaço deve ser atribuído em fragmentos. Quando um arquivo é modificado de modo a ficar maior, ele pode exceder o espaço inicialmente alocado a ele, outra alocação deve ser atribuída em outro lugar e o arquivo se torna fragmentado.
Nomes de arquivo Um nome de arquivo é usado para identificar uma localização de armazenamento no sistema de arquivos. A maioria dos sistemas de arquivos possuem restrições de comprimento de nomes de arquivo. Em alguns sistemas de arquivos, nomes de arquivos não são sensíveis a caixa (isto é, os nomes MEUARQUIVO e meuarquivo referem-se ao mesmo arquivo), em outros, os nomes de arquivos são sensíveis a caixa (isto é, os nomes MEUARQUIVO, MeuArquivo e meuarquivo referem-se a três arquivos separados).
A maioria dos sistemas de arquivos modernos permitem que nomes de arquivos contenham uma grande variedade de caracteres do conjunto de caracteres Unicode. Entretanto, eles podem possuir restrições no uso de certos caracteres especiais, impedindo-os de serem usados dentro de nomes de arquivos. 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 geralmente possuem 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 a um índice em uma tabela de conteúdos ou a um inode em um sistema de arquivos do tipo Unix. As estruturas de diretórios podem ser planas (ou seja, lineares) ou permitir hierarquias nas quais 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 sistemas semelhantes ao Unix também suportam hierarquias de diretórios arbitrários, como, por exemplo, o Hierarchical File System da Apple e seu sucessor HFS+ no Mac OS clássico, o sistema de arquivos FAT no MS-DOS 2.0, e versões posteriores, e no Microsoft Windows, o sistema de arquivos NTFS na família Windows NT de sistemas operacionais e o ODS-2 (On-Disk Structure-2) e níveis mais altos do sistema de arquivos Files-11 no OpenVMS.
Metadados Outras informações de escrituração contábil normalmente são associadas a cada arquivo dentro de 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 registro de data e hora do arquivo. Os sistemas de arquivos podem armazenar o horário de criação do arquivo, a hora em que ele foi acessado pela última vez, a hora em que os metadados do arquivo foram alterados ou a hora em que o arquivo foi copiado pela última vez. Outras informações podem incluir o tipo de dispositivo do arquivo (por exemplo, bloco, caractere, soquete, subdiretório etc.), seu ID de usuário e ID de grupo de proprietário, suas permissões de acesso e outros atributos de arquivo (por exemplo, se o arquivo é somente leitura, executável, etc.).