A arquitetura do sistema de arquivos ext2. Organização física da partição ext2 dos sistemas de arquivos ext2, ext3, ext4

14 Junho

Sistemas de arquivos ext2, ext3, XFS, ReiserFS, NTFS

Sistema de arquivoé um procedimento que determina a forma de organizar, armazenar e nomear dados em qualquer meio de armazenamento eletrônico em computadores.

A variedade de sistemas de arquivos é explicada pelo fato de que cada um foi inventado para seu próprio pacote específico de tarefas. Alguns escrevem arquivos pequenos muito rapidamente (digamos, até 1 GB), mas ao mesmo tempo não interagem bem com arquivos grandes ou nem funcionam com eles. Alguns são bons em termos de segurança, outros em termos de velocidade de gravação / leitura. Cada sistema de arquivos tem seus próprios prós, contras, vulnerabilidades e características distintas.

NO Linux os seguintes tipos de sistemas de arquivos são os mais comumente usados:

  1. ext2 - apoia Segundo sistema de arquivos estendido (segundo sistema de arquivos estendido). Desenvolvido por Remy Card em 1993 como o sistema de arquivos do kernel do Linux, foi o principal sistema de arquivos de 1993-2001 Linux.
    A vantagem é a alta velocidade de leitura / gravação.
    A principal desvantagem do sistema ext2 é que não é diário, mas é por isso que tem ótimo desempenho ( exploração madeireira É o processo de registro, armazenando uma lista de mudanças que ajuda a preservar a integridade do sistema de arquivos durante várias falhas do sistema);
  2. ext3 - apoia Terceiro sistema de arquivos estendido (a terceira versão do sistema de arquivos estendido). Desenvolvido por Stephen Tweedy em 2001, ainda é usado em distribuições hoje Linux... Nasceu como um melhor ext2.
    A vantagem deste sistema é que ele é diário, ou seja, sua confiabilidade aumenta significativamente em comparação ext2.
    A desvantagem é um desempenho ligeiramente inferior e velocidade de leitura / gravação.
  3. XFS - Desenvolvido pela empresa Silicon Graphics em 1993, foi adicionado ao núcleo Linux como um sistema de arquivos em 2002 para toda a família de distribuições Linux, atualmente usado como "nativo" na distribuição chapéu vermelho.
    A vantagem é a presença de diário de metadados, alta estabilidade de trabalho, a distribuição de fluxos de I / O em grupos é suportada, uma alta velocidade de leitura / gravação, há a possibilidade de desfragmentação mesmo com uma partição montada e você pode aumentar o tamanho do sistema de arquivos. Funciona de forma mais eficaz com arquivos grandes.
    A desvantagem é que o tamanho da partição não pode ser reduzido, o processamento dos metadados não é tão rápido, ele funciona muito mais lento com arquivos pequenos do que outros tipos de sistemas de arquivos.
  4. ReiserFS - desenvolvido pela empresa Namesys sob a liderança de Hans Reiser em 2001. Usado apenas em sistemas operacionais Linux... Foi o primeiro sistema de arquivos com registro de mudanças a ser adotado no kernel.
    A vantagem deste sistema de arquivos é que funciona muito rapidamente com arquivos pequenos (a velocidade de leitura / gravação é maior do que a da família ext4), suporta registro.
    A desvantagem é que seu desenvolvimento desacelerou visivelmente devido à prisão do chefe Hans Reiser e não há criptografia de fundo.
  5. NTFS - apoia novo Sistema de Tecnologia de Arquivos (Novo Sistema de Tecnologia de Arquivos). Desenvolvido em julho de 1993 pela corporação Microsoft... É amplamente utilizado em vários sistemas operacionais, bem como em várias mídias de armazenamento.
    A vantagem é a capacidade integrada de diferenciar o acesso aos dados para diferentes usuários, bem como atribuir restrições à quantidade máxima de espaço em disco, uso do sistema de registro em diário e alta velocidade de leitura / gravação de pequenos arquivos.
    A desvantagem é que, para uma operação estável, não é necessário um pequeno PC RAM, ele funciona lentamente com arquivos grandes, o comprimento do caminho para os arquivos é limitado (32.767 caracteres Unicode).

De maneira tão simples, descobrimos os "sistemas de arquivos ext2, ext3, XFS, ReiserFS, NTFS«!

Como tornar possível acessar uma partição de disco ou mídia removível com sistemas de arquivos em um ambiente Windows Ext2 / 3/4 ? Se, por exemplo, houver também um segundo sistema no computador Linux... E você precisa trabalhar com seus dados do ambiente janelas... Ou outro exemplo - quando discos virtuais com sistemas instalados em máquinas virtuais são montados dentro do Windows Linux ou Android ... Com Ext2 / 3 / 4 O Windows não sabe trabalhar nativamente, para isso precisa de ferramentas de terceiros. Quais são esses meios? Considere os abaixo.

***
Os três primeiros meios tornarão possível ler apenas dispositivos de informação de Ext2 / 3/4 ... A última solução permitirá a leitura e gravação de dados. Todas as ferramentas discutidas abaixo são gratuitas.

1. DiskInternals Linux Reader

Um programa simples é um gerenciador de arquivos primitivo, feito como o Windows Explorer padrão, com suporte para sistemas de arquivos Ext 2/3/4 , Reiser4 , HFS , UFS2 ... Na janela do programa, veremos partições e dispositivos com Linux ou Android.

Para copiar, selecione uma pasta ou arquivo, pressione o botão "Salve ".

Em seguida, especifique o caminho da cópia.

2. Plugin para Total Commander DiskInternals Reader

Os amantes do popular podem extrair dados Linux ou Android dentro do Windows usando este gerenciador de arquivos. Mas tendo instalado anteriormente um plugin especial nele. Um desses plug-ins é, ele pode conectar e ler dispositivos de informação formatados em Ext2 / 3/4 , Gordura / exFAT , HFS / HFS + , ReiserFS ... Baixe o plugin, descompacte seu arquivo dentro , confirmamos a instalação.

Lançamento (importante) como administrador. Vamos para a seção. Clique.

Aqui, junto com outras partições do disco e da mídia, aquele com Ext2 / 3/4 .

Os dados são copiados pelo tradicional maneira - pressionando F5 no segundo painel.

3. Plugin para Total Commander ext4tc

Uma alternativa simplificada para a solução anterior - ext4tc, outro plugin para ... Ele pode se conectar para leitura de dispositivos de informação formatados apenas em Ext2 / 3/4 ... Baixe o plugin, descompacte seu arquivo dentro do gerenciador de arquivos, inicie a instalação.

Lançamento (importante) como administrador. Nós clicamos. Nós vamos para.

Se você precisar copiar dados, use o método usual com a tecla F5.

4. Driver de suporte Ext2Fsd

Programa Ext2Fsd É o motorista Ext2 / 3/4 , ele implementa suporte para esses sistemas de arquivos no nível do sistema operacional. Você pode trabalhar com partições de disco e unidades formatadas nesses sistemas de arquivos como dispositivos de informação comuns com suporte do Windows na janela do Explorer ou programas de terceiros. O driver permite a leitura e gravação de dados.

Baixe a última versão atual Ext2Fsd.

Ao instalar, ative (se for para trabalho de longo prazo) três caixas de seleção sugeridas:

1 - Autorun do driver junto com o Windows;
2 - Suporte de gravação para Ext2;
3 - Suporte de formatação para Ext3.

No estágio de pré-acabamento, ativamos a opção de iniciar a janela do gerenciador de driver - - com a atribuição de informações aos dispositivos Ext2 / 3/4 letras de unidade.

Na janela que abriu veremos o médium com a letra já atribuída. Por exemplo, em nosso caso, a operadora com Ext4 a primeira letra livre é especificada F.

Agora podemos trabalhar com o disco F na janela do explorer.

Atribuir uma carta a novos dispositivos conectados com Ext2 / 3/4 usando o menu de contexto chamado em cada um dos exibidos na janela dispositivos. Mas simplesmente atribuindo uma letra de unidade, tal dispositivo não será exibido após a reinicialização do Windows, esta é uma solução para apenas uma sessão com o computador. Para fazer um novo dispositivo com Ext2 / 3/4 permanentemente visível no ambiente Windows, você precisa clicar duas vezes nele para abrir a janela de configuração e definir os parâmetros de conexão permanente. Na segunda coluna, você precisa:

Para mídia removível, ative a caixa de seleção, indicada pelo número 1 na captura de tela, e especifique a letra da unidade;
Para discos internos e partições, ative a caixa de seleção, indicada na imagem abaixo pelo número 2, e também especifique a letra da unidade.

Agora descrevemos o sistema de arquivos em disco mais popular do Linux, ext2. A primeira versão do Linux usou o sistema de arquivos MINIX 1, que tinha nomes de arquivo curtos e um tamanho máximo de arquivo de 64 MB. O sistema de arquivos MINIX 1 foi eventualmente substituído pelo primeiro sistema de arquivos estendido, ext, que permitia nomes e tamanhos de arquivos mais longos. Devido à sua baixa eficiência (em termos de desempenho), ext foi substituído por seu sucessor ext2, que ainda é muito usado hoje.

Uma partição de disco ext2 contém o sistema de arquivos mostrado na Fig. Layout 10.17. O Bloco 0 não é usado pelo Linux e contém o código de inicialização do computador. Após o bloco 0, a partição do disco é dividida em grupos de blocos (excluindo os limites do cilindro do disco). Cada grupo é organizado da seguinte forma.


O primeiro bloco é o superbloco, que armazena informações sobre o layout do sistema de arquivos, incluindo o número de i-nodes, o número de blocos de disco, o início da lista de blocos de disco livres (geralmente várias centenas de elementos). Isso é seguido por um descritor de grupo contendo informações sobre a localização dos bitmaps, o número de blocos livres e i-nodes no grupo e o número de diretórios no grupo. Esta informação é importante porque o sistema de arquivos ext2 tenta distribuir os diretórios uniformemente no disco.

Os dois bitmaps controlam blocos livres e i-nodes livres (isso também é herdado do sistema de arquivos MINIX 1 e o distingue da maioria dos sistemas de arquivos UNIX, que usam uma lista de blocos livres). O tamanho de cada bitmap é um bloco. Com um tamanho de bloco de 1 KB, este esquema limita o tamanho do grupo de blocos a 8.192 blocos e 8.192 i-nodes. O primeiro número é uma limitação real e o segundo é praticamente nenhum. Para blocos de 4 KB, os números são quatro vezes maiores.

Em seguida, os próprios i-nodes são localizados. Eles são numerados de 1 a no máximo. O tamanho de cada nó-i é de 128 bytes e descreve exatamente um arquivo. O i-node contém as informações de contabilidade (incluindo tudo retornado por stat, que simplesmente as obtém do i-node), bem como informações suficientes para localizar todos os blocos de disco que contêm os dados do arquivo.

Os i-nodes são seguidos por blocos de dados. Todos os arquivos e diretórios são armazenados aqui. Se um arquivo ou diretório consistir em mais de um bloco, esses blocos não precisam ser contíguos no disco. Na realidade, é provável que blocos de um arquivo grande estejam espalhados pelo disco.

Os i-nodes correspondentes estão espalhados por todos os grupos de blocos de disco. Ext2 tenta colocar arquivos regulares no mesmo grupo de blocos que o diretório pai, e arquivos de dados no mesmo bloco que o nó i do arquivo de origem (assumindo que há espaço suficiente). Essa ideia foi emprestada do Berkeley Fast File System (McKusick et al., 1984). Os bitmaps são usados \u200b\u200bpara tomar decisões de alocação rápidas

espaço para novos dados do sistema de arquivos.

Quando novos blocos de arquivo são alocados, ext2 também pré-alocará alguns (oito) blocos adicionais para o mesmo arquivo (para minimizar a fragmentação do arquivo devido a gravações futuras). Este esquema distribui o sistema de arquivos por todo o disco. Também apresenta bom desempenho (devido à sua tendência contígua e fragmentação reduzida).

Para acessar o arquivo, você deve primeiro usar uma das chamadas de sistema Linux (como abrir), para a qual você precisa especificar o caminho para o arquivo. Este caminho é analisado e seus diretórios constituintes são extraídos dele. Se um caminho relativo for especificado, a pesquisa começa no diretório atual do processo, caso contrário - no diretório raiz. Em qualquer caso, o i-node para o primeiro diretório é fácil de encontrar: há um ponteiro para ele no descritor do processo ou (no caso do diretório raiz) é armazenado em um bloco específico no disco.

O diretório permite que você use nomes de arquivos de até 255 caracteres (Fig. 10.18). Cada diretório consiste em vários blocos de disco (para que o diretório possa ser gravado no disco atomicamente). Em um diretório, os itens de arquivos e diretórios estão em ordem não classificada (cada item segue imediatamente o anterior). Os elementos não podem cruzar os limites do bloco, então geralmente há alguns bytes não utilizados no final de cada bloco do disco.


Cada entrada de diretório na Fig. 10.18 consiste em quatro campos de comprimento fixo e um campo de comprimento variável. O primeiro campo é o número do i-node 19 para o arquivo colossal, 42 para o arquivo volumoso e 88 para o diretório bigdir. Isso é seguido pelo campo rec_len que fornece o tamanho de toda a entrada do diretório em bytes (possivelmente com marcadores de posição adicionais após o nome). Este campo é necessário para encontrar o próximo registro (no caso em que o nome do arquivo é anexado com um número desconhecido de bytes). Na figura, este campo é indicado por uma seta. Em seguida, há um campo do tipo arquivo, diretório, etc. O último campo de comprimento fixo contém o comprimento do nome do arquivo em bytes (8, 10 e 6 para este exemplo). Por fim, há o próprio nome do arquivo, terminado em um byte nulo e preenchido até um limite de 32 bits. Podem seguir-se bytes de preenchimento adicionais.

Na fig. 10.18b mostra o mesmo diretório depois que o item para volumoso foi removido. Tudo o que ele faz no diretório é incrementar o número no campo de tamanho do registro do arquivo colossal anterior, e os bytes do registro do diretório para o arquivo volumoso remoto tornam-se espaços reservados para o primeiro registro. Posteriormente, esses bytes podem ser usados \u200b\u200bpara escrever ao criar um novo arquivo.

Como os diretórios são pesquisados \u200b\u200bde maneira linear, pode levar muito tempo para localizar uma entrada no final de um diretório grande. Portanto, o sistema mantém um cache de diretórios acessados \u200b\u200brecentemente. A pesquisa no cache é realizada pelo nome do arquivo e, se for encontrado, a cara pesquisa linear não será mais necessária. Um dentry é inserido no cache de entrada de diretório para cada um dos componentes do caminho e (por meio de seu i-node) o diretório é pesquisado por entradas de caminho subsequentes (até que o arquivo i-node real seja encontrado).

Por exemplo, para localizar um arquivo especificado por um caminho absoluto (como / usr / ast / file), siga estas etapas. Primeiro, o sistema encontra o diretório raiz, que normalmente usa o i-node número 2 (especialmente quando o i-node número 1 é reservado para blocos defeituosos). Ele armazena em cache o item correspondente no cache de entrada do diretório (para pesquisas futuras do diretório raiz). Em seguida, ele procura no diretório raiz a string "usr" para obter o número do nó i para o diretório / usr (que também é armazenado em cache na entrada do diretório). Este i-node é então lido e os blocos de disco extraídos dele, para que você possa ler o diretório / usr e procurar pela string "ast". Assim que o elemento correspondente for encontrado, ele pode ser usado para determinar o número do nó i para o diretório / usr / ast. Dado este número de i-node, ele pode ser lido e encontrado nos blocos de diretório. Finalmente, procuramos por "arquivo" e encontramos seu número de nó-i. Assim, usar um caminho relativo não é apenas mais conveniente para o usuário, mas também reduz a quantidade de trabalho para o sistema.

Se o arquivo estiver disponível, o sistema extrai o número do i-node e o usa como um índice da tabela do i-node (no disco) para encontrar o i-node correspondente e lê-lo na memória. Este i-node é colocado na tabela de i-node, uma estrutura de dados do kernel que contém todos os i-nodes para os arquivos e diretórios abertos no momento. O formato dos elementos do nó i deve conter (no mínimo) todos os campos retornados pela chamada do sistema stat para que o stat funcione (consulte a Tabela 10.10). Tabela 10.13 mostra alguns dos campos na estrutura de i-node suportada pelo sistema de arquivos Linux. A estrutura real do i-node contém muito mais campos, já que essa mesma estrutura é usada para representar diretórios, dispositivos e outros arquivos especiais. A estrutura do i-node também contém campos reservados para uso futuro. A história mostra que bits não utilizados não permanecem ociosos por muito tempo.

Agora vamos ver como o sistema lê o arquivo. Lembre-se de que uma chamada de procedimento de biblioteca típica para iniciar a chamada de sistema de leitura se parece com isto:

n \u003d leitura (fd, buffer, nbytes);


Quando o kernel ganha controle, tudo o que pode começar são esses três parâmetros e as informações em suas tabelas internas (pertencentes ao usuário). Um dos elementos dessas tabelas internas é uma matriz de descritores de arquivo. É indexado por descritores de arquivo e contém um elemento para cada arquivo aberto (até um determinado número máximo, o padrão é geralmente 32).

A ideia é começar com este descritor de arquivo e terminar com o nó apropriado. Vamos considerar um esquema totalmente possível: colocar um ponteiro para um nó na tabela do descritor de arquivo. Apesar de sua simplicidade, esse método (infelizmente) não funciona. O problema é o seguinte. Cada descritor de arquivo deve ser associado a um ponteiro de arquivo que identifica o byte no arquivo a partir do qual a próxima operação de leitura ou gravação começará. Onde esse ponteiro deve ser armazenado? Uma opção é colocá-lo em uma tabela de nós. No entanto, essa abordagem não funcionará se vários processos não relacionados abrirem o mesmo arquivo ao mesmo tempo, já que cada processo deve ter seu próprio ponteiro.

A segunda solução é colocar o ponteiro na tabela do descritor de arquivo. Além disso, cada processo que abre o arquivo tem sua própria posição no arquivo. Infelizmente, esse esquema também não funciona, mas o motivo da falha neste caso não é tão óbvio e tem a ver com a natureza do compartilhamento de arquivos no Linux. Considere um script de shell 5 que consiste em dois comandos (p1 e p2) que devem ser executados sucessivamente. Se o script for invocado pela linha de comando

então espera-se que p1 grave sua saída no arquivo x, e então p2 também gravará sua saída no arquivo x, começando de onde p1 parou.

Quando o shell inicia o processo p1, o arquivo x estará vazio no início, então o comando p1 apenas começará a escrever no arquivo na posição 0. No entanto, quando p1 termina seu trabalho, algum mecanismo é necessário para garantir que o processo p2 veja como sua posição inicial não 0 (mas isso é exatamente o que acontecerá se a posição no arquivo for armazenada na tabela do descritor de arquivo), mas o valor no qual pi parou.

Como isso é feito é mostrado na Fig. 10,19. O truque é introduzir uma nova tabela - a tabela de descrição de arquivo aberto - entre a tabela de descritor de arquivo e a tabela de nó-i e armazenar o ponteiro do arquivo (e o bit de leitura / gravação) lá. Na figura, o processo pai é o shell, e o filho é primeiro o processo pi e depois o processo p2. Quando o shell cria um processo pi, sua estrutura de usuário (incluindo a tabela do descritor de arquivo) é uma cópia exata da mesma estrutura do shell, de modo que ambos contêm ponteiros para a mesma tabela de descrição de arquivo aberto. Quando o processo pi sai, o descritor de arquivo shell continua a apontar para a tabela do descritor de arquivo aberto, que contém a posição do processo p1 no arquivo. Quando o shell agora cria o processo p2, o novo processo filho herdará automaticamente a posição no arquivo, e nem o novo processo nem o shell são obrigados a saber o valor atual dessa posição.


Se qualquer processo estranho abrir o arquivo, ele receberá sua própria entrada na tabela de descrição de arquivo aberto com sua posição no arquivo, que é exatamente o que é necessário. Portanto, o objetivo da tabela de descrição de arquivo aberto é permitir que os processos pai e filho compartilhem o mesmo ponteiro em um arquivo, mas alocar ponteiros pessoais para processos externos.

Então (voltando ao problema de fazer uma leitura), mostramos como a posição do arquivo e o nó-i são determinados. O nó I contém os endereços de disco dos primeiros 12 blocos do arquivo. Se a posição no arquivo cair nos primeiros 12 blocos, o bloco de arquivo necessário será lido e os dados serão copiados para o usuário. Para arquivos com mais de 12 blocos, o nó-i contém o endereço do disco do bloco indireto único (Figura 10.19). Este bloco contém os endereços de disco de blocos de disco adicionais. Por exemplo, se o tamanho do bloco for 1 KB e o endereço do disco for 4 bytes, um único bloco indireto pode armazenar até 256 endereços do disco. Este esquema permite que você ofereça suporte a arquivos de até 268 KB.

Se você tiver dois sistemas operacionais instalados, Windows e Linux, com certeza gostaria de estar contido em partições de um sistema operacional gratuito diretamente do Windows, sem reiniciar o computador.

Infelizmente, não há suporte para partições Linux no Windows. Mas em vão. Parece-me que este poderia ser um gesto simpático da Microsoft.

O cerne do problema reside no fato de que o Windows usa o sistema de arquivos NTFS, enquanto o Linux tem sua própria maneira de organizar arquivos, o sistema de arquivos estendido, cuja versão mais recente é o número de série 4.

O Linux é mais amigável do que seu irmão comercial: o Linux oferece suporte ao sistema de arquivos NTFS do Windows por padrão. Claro, você não poderá instalar o Linux em uma partição NTFS, mas pode ler e gravar dados a partir dela.

Ext2 IFS

Ext2 IFS suporta Windows NT4.0 / 2000 / XP / 2003 / Vista / 2008 versões x86 e x64 e permite que você visualize o conteúdo de partições Linux ext2, e também pode escrever nelas. O utilitário instala o driver do sistema ext2fs.sys, que estende os recursos do Windows e inclui suporte completo para ext2: letras de unidade são atribuídas a partições ext2 e arquivos e pastas nelas são exibidos em caixas de diálogo de todos os aplicativos, por exemplo, no Explorer.

Ext2 FSD

Ext2 FSD é um driver gratuito para sistemas Windows (2K / XP / VISTA / 7 versões x86 e x64). Como o utilitário anterior, que em sua essência também é um driver, inclui suporte total para o sistema de arquivos ext2 no Windows.

LTOOLS é um conjunto de utilitários de linha de comando que permite a você ler e gravar dados para / de partições Linux ext2, ext3 e ReiserFS (sistemas de arquivos Linux padrão) de uma máquina DOS ou Windows.

Existe uma versão do programa com shell gráfico (escrito em Java) - LTOOLSgui, bem como uma versão com shell gráfico escrito em.

Ext2Read

Para sobremesa, como sempre, o mais delicioso.

Ext2Read é um utilitário gerenciador de arquivos que permite a visualização e gravação em partições ext2 / ext3 / ext4. Suporta LVM2 e, ao contrário de outros programas nesta revisão, o sistema de arquivos ext4. O suporte para cópia recursiva de diretório está integrado.

E aqui está a segunda sobremesa. No início, foi dito que seria um bom gesto da Microsoft habilitar o suporte para partições Linux no Windows por padrão.

O gesto foi feito para o 20º aniversário do Linux. Veja por si mesmo.

Isso é tudo. Obrigado pela atenção. Vou lutar contra os besouros de maio. Há tantos deles nesta primavera. 🙂

Sistema de arquivo (Sistema de arquivos em inglês) - uma ordem que determina a forma de organizar, armazenar e nomear dados em mídias de armazenamento de equipamentos de TI (usando cartões de memória flash portáteis em dispositivos eletrônicos portáteis para gravação e armazenamento repetido de informações: câmeras digitais, telefones celulares, etc.) ) e tecnologia informática. Define o formato do conteúdo e armazenamento físico das informações, que geralmente são agrupadas na forma de arquivos. O sistema de arquivos específico determina o tamanho do nome do arquivo (pasta), o arquivo máximo possível e o tamanho da seção e um conjunto de atributos de arquivo. Alguns sistemas de arquivos fornecem recursos de serviço, como controle de acesso ou criptografia de arquivos.

Tarefas do sistema de arquivos

As principais funções de qualquer sistema de arquivos são destinadas a resolver as seguintes tarefas:

nomeação de arquivo;

interface de software para trabalhar com arquivos para aplicativos;

mapear o modelo lógico do sistema de arquivos para a organização física do data warehouse;
organização da resiliência do sistema de arquivos a falhas de energia, erros de hardware e software;

Em sistemas multiusuário, outra tarefa surge: proteger os arquivos de um usuário do acesso não autorizado de outro usuário, bem como garantir o trabalho conjunto com os arquivos, por exemplo, ao abrir um arquivo por um dos usuários, para outros o mesmo arquivo ficará temporariamente disponível em modo somente leitura ...

O sistema de arquivos é a estrutura básica usada por um computador para organizar informações em um disco rígido. Ao instalar um novo disco rígido, ele deve ser particionado e formatado para um sistema de arquivos específico, após o qual os dados e programas podem ser armazenados nele. Existem três sistemas de arquivos possíveis no Windows: NTFS, FAT32 e o sistema FAT legado raramente usado (também conhecido como FAT16).

NTFS é o sistema de arquivos preferido para esta versão do Windows. Ele tem muitas vantagens sobre o sistema FAT32 anterior; alguns deles estão listados abaixo.

Capacidade de se recuperar automaticamente de alguns erros de disco (o FAT32 não tem essa capacidade).
Suporte aprimorado para grandes discos rígidos.
Maior grau de segurança. É possível usar permissões e criptografia para negar o acesso do usuário a certos arquivos.

O sistema de arquivos FAT32 e o sistema FAT raramente usado foram usados \u200b\u200bem versões anteriores do Windows, incluindo Windows 95, Windows 98 e Windows Millenium Edition. O sistema de arquivos FAT32 não fornece o nível de segurança fornecido pelo NTFS, portanto, se o seu computador tiver uma partição ou volume formatado para FAT32, os arquivos nessa partição ficarão visíveis para qualquer pessoa com acesso ao computador. O sistema de arquivos FAT32 também possui limites de tamanho de arquivo. Não é possível criar uma partição FAT32 com mais de 32 GB nesta versão do Windows. Além disso, uma partição FAT32 não pode conter um arquivo maior que 4 GB.

A principal razão para usar o sistema FAT32 é que o computador pode rodar tanto Windows 95, Windows 98 ou Windows Millenium Edition, e esta versão do Windows (configuração com múltiplos sistemas operacionais). Para criar tal configuração, é necessário instalar a versão anterior do sistema operacional em uma partição formatada para FAT32 ou FAT, tornando-a a principal (a partição principal pode conter o sistema operacional). Outras partições acessadas de versões anteriores do Windows também devem ser formatadas para FAT32. As versões anteriores do Windows só podem acessar partições ou volumes NTFS de rede. As partições NTFS no computador local ficarão inacessíveis.

FAT - prós:

Requer um pouco de RAM para funcionar de forma eficaz.
Trabalho rápido com catálogos pequenos e médios.
O disco faz menos movimentos de cabeça em média (em comparação com NTFS).
Trabalho eficiente em discos lentos.

FAT - contras:

Perda catastrófica de desempenho com o aumento da fragmentação, especialmente para grandes unidades (somente FAT32).
Dificuldades com acesso aleatório a arquivos grandes (digamos, 10% ou mais do tamanho do disco).
Trabalho muito lento com diretórios que contêm um grande número de arquivos.

NTFS - prós:

A fragmentação de arquivos quase não tem consequências para o sistema de arquivos em si - o desempenho de um sistema fragmentado é degradado apenas em termos de acesso aos próprios dados do arquivo.
A complexidade da estrutura do diretório e o número de arquivos em um diretório também não representam nenhum obstáculo específico ao desempenho.
Acesso rápido a um fragmento arbitrário de um arquivo (por exemplo, edição de arquivos .wav grandes).
Acesso muito rápido a arquivos pequenos (várias centenas de bytes) - o arquivo inteiro está no mesmo lugar que os dados do sistema (registro MFT).

NTFS - contras:

Requisitos significativos para a memória do sistema (64 MB é o mínimo absoluto, melhor é mais).
Drives e controladores lentos sem Bus Mastering degradam gravemente o desempenho do NTFS.
Os diretórios de tamanho médio são difíceis de trabalhar porque quase sempre estão fragmentados.
Um disco que funciona por muito tempo em um estado de 80% a 90% cheio apresentará desempenho extremamente baixo.

Os seguintes sistemas de arquivos são considerados "nativos" para Linux (ou seja, aqueles nos quais podem ser instalados e a partir dos quais podem ser iniciados): ext2fs, ext3fs, ext4fs, ReiserFS, XFS, JFS. Geralmente são eles que podem escolher ao instalar a grande maioria das distribuições. Claro, existem maneiras de instalar o Linux em sistemas de arquivos FAT / VFAT / FAT32, mas isso é apenas para aqueles moleques e monsieurs que entendem muito sobre perversões, e não vou falar sobre isso.

Os principais critérios ao escolher um sistema de arquivos geralmente são confiabilidade e desempenho. Em alguns casos, você também deve levar em consideração o fator de compatibilidade - neste caso, significa a capacidade de outros sistemas operacionais de acessar um sistema de arquivos específico.
Vou começar com ReiserFS - porque a razão para escrever esta nota foi a pergunta: o que deve ser considerado arquivos pequenos? Afinal, é sabido que é a eficiência de trabalhar com pequenos arquivos o ponto forte deste sistema de arquivos.

Portanto, arquivos pequenos significam arquivos menores que o bloco lógico do sistema de arquivos, que no Linux na maioria dos casos é igual a quatro kilobytes, embora possa ser definido durante a formatação dentro de certos limites (dependendo do FS específico). Existem incontáveis \u200b\u200barquivos pequenos em qualquer sistema operacional semelhante ao Unix. Exemplos típicos são os arquivos que compõem a árvore de portas do FreeBSD, portas do Gentoo e sistemas de portas semelhantes.
Na maioria dos sistemas de arquivos, esses mini-arquivos têm seu próprio inode (um nó de informações contendo metainformações sobre um arquivo) e um bloco de dados, o que leva ao desperdício de espaço em disco e à diminuição da velocidade das operações de arquivo. Em particular, esta é a razão para o devaneio catastrófico do sistema de arquivos FreeBSD (antigo, UFS e novo, UFS2) ao trabalhar com seu próprio sistema de portas.

No sistema de arquivos ReiserFS, em tais casos, blocos de dados separados não são alocados - ele consegue empinar os dados do arquivo diretamente em sua área de inode. Devido a isso, o espaço em disco é economizado e o desempenho aumenta - literalmente várias vezes em comparação com todos os outros FS.
Esse manuseio de pequenos arquivos do ReiserFS deu origem à lenda de sua falta de confiabilidade. De fato, no caso de uma falha do sistema de arquivos (ou seja, a destruição de áreas de serviço), os dados co-localizados com seus inodes desaparecem junto com eles - e irrevogavelmente. Enquanto nos sistemas de arquivos em que inodes e blocos de dados são sempre separados espacialmente, os últimos podem ser restaurados teoricamente. Portanto, para ext2 / ext3 existem até ferramentas para fazer isso.

No entanto, como qualquer lenda, esta apenas dá a impressão de confiabilidade. Primeiro, a perda irrecuperável de dados se aplica apenas a arquivos muito pequenos. Praticamente não existem tais usuários entre os usuários, enquanto todos os outros são facilmente restaurados a partir do kit de distribuição.
Em segundo lugar, falando sobre a possibilidade de recuperar dados de blocos que perderam sua ligação com seus inodes, não usei acidentalmente a palavra "teórico". Porque na prática esta atividade é extremamente trabalhosa e não dá um resultado garantido. Todos os que tiveram que fazer isso concordarão que só é possível se render a isso por completo desespero. E isso se aplica a todos os sistemas de arquivos Linux. Portanto, este aspecto pode ser negligenciado ao escolher um sistema de arquivos.

Em termos de desempenho geral, o ReiserFS é definitivamente mais rápido do que todos os outros FS com registro em diário e, em alguns aspectos, supera o ext2. A comparação da velocidade de algumas operações de arquivo de arquivo comuns pode ser encontrada aqui.
Mas com a compatibilidade do ReiserFS, a situação é um pouco pior. Pelo que eu sei, é impossível acessá-lo do sistema operacional Windows. Alguns sistemas operacionais BSD (DragonFlyBSD, FreeBSD) suportam este sistema de arquivos, mas no modo somente leitura. Mesmo as chances de que um LiveCD Linux arbitrário do passado não tenha suporte ReiserFS não é zero.

E aqui é certo lembrar ext3fs. Sua vantagem não é de forma alguma uma maior confiabilidade - essa é a mesma lenda que a instabilidade do ReiserFS. Já ouvi falar tanto sobre travamentos do ext3fs quanto do ReiserFS. Eu mesmo não poderia destruir nem um nem outro. A menos que funcionasse com ext2 - mas isso foi há muito tempo, na época do kernel 2.2 (ou mesmo 2.0).

Não, a principal vantagem do ext3fs é sua compatibilidade - é garantido que ele seja lido por qualquer sistema Linux. Por exemplo, ao me recuperar de algum antigo capanga do LiveCD - uma situação que praticamente não é tão incrível, eu tive que entrar nisso. Novamente, a maioria dos sistemas BSD entende ext3fs facilmente (embora sem journaling). Para Windows, também existem, até onde eu sei, todos os tipos de drivers e plug-ins para gerenciadores de arquivos comuns (como o Total Commander) que fornecem acesso a partições com ext2fs / ext3fs.

Em termos de desempenho, ext3fs deixa uma impressão controversa. Primeiro, seu desempenho é altamente dependente do modo de registro, que é três: com registro de dados completo, registro de dados parcial e apenas registro de metadados. Em cada um dos modos, ele mostra diferentes desempenhos em diferentes tipos de operações de arquivo. No entanto, em nenhum caso o desempenho é um recorde.

Porém, se o requisito de desempenho for colocado em primeiro lugar, o ext2fs ficará fora da competição - entretanto, neste caso, você terá que aceitar a ausência de registro em diário. E, conseqüentemente, com verificações demoradas do sistema de arquivos em caso de desligamento incorreto - e com o tamanho dos discos modernos, isso pode levar quanto tempo ...

O seguinte pode ser dito sobre o XFS. Em termos de compatibilidade, tudo o que é escrito para ReiserFS se aplica a ele - além disso, até algum tempo não era suportado pelo kernel Linux padrão. Do ponto de vista do desempenho, ele também não brilha o XFS, falando no total aproximadamente no mesmo nível do ext3fs. E na operação de exclusão de arquivos geralmente mostra uma lentidão deprimente.
Na minha experiência, o uso do XFS compensa ao trabalhar não apenas com arquivos grandes, mas também muito grandes - que na verdade são apenas imagens de DVD e arquivos de vídeo.

Voltando à questão da confiabilidade. Um desligamento banal durante o trabalho normal do usuário, como regra, transfere sem dor todos os sistemas de arquivos registrados (e nenhum deles garante a segurança das operações do usuário não gravadas no disco - resgatar pessoas que estão se afogando aqui continua sendo o trabalho dos próprios afogamentos). É verdade que, para qualquer sistema de arquivos, você pode simular uma situação em que desligar a energia causará danos mais ou menos graves a ele. No entanto, na vida real, essas situações são improváveis \u200b\u200bde ocorrer. E você pode eliminá-los completamente comprando uma fonte de alimentação ininterrupta - ela dará mais confiança na segurança dos dados do que no tipo de sistema de arquivos. Bem, a garantia de recuperação de dados danificados em qualquer caso só pode ser seu backup regular ...

Acho que as informações acima são suficientes para uma escolha informada. Minha escolha pessoal nos últimos anos foi ReiserFS. Ocasionalmente, em sistemas onde é justificado mover tudo para fora da partição raiz, faz sentido usar ext3fs para o sistema de arquivos raiz e ReiserFS para todos os outros.

Se uma partição separada for fornecida para o diretório / boot (e isso é recomendado quando o carregador de boot GRUB é usado por seus desenvolvedores) - para ele nenhum outro sistema de arquivos, exceto ext2fs, é justificado, qualquer journaling não faz sentido aqui. Finalmente, se você criar uma seção separada para todos os tipos de materiais multimídia, poderá pensar no XFS.

Se você abordar a explicação de forma mais metódica

ext - Nos primeiros dias do Linux, o sistema dominante era o ext2 (sistema de arquivos estendido, versão 2). Desde 2002, ele foi substituído pelo sistema ext3, que é amplamente compatível com ext2, mas também oferece suporte a funções de journaling e, ao trabalhar com versões de kernel 2.6 e superiores, também oferece suporte a ACL. O tamanho máximo do arquivo é 2 TB e o tamanho máximo do sistema de arquivo é 8 TB. No final de 2008, o lançamento de uma versão do ext4 foi anunciado oficialmente, que é compatível com versões anteriores do ext3, mas muitos recursos são implementados de forma mais eficiente do que antes. Além disso, o tamanho máximo do sistema de arquivos é 1 EB (1.048.576 TB), que pode durar algum tempo. Sobre reiser - O sistema recebeu o nome de seu fundador, Hans Reiser, e foi o primeiro sistema de registro a acessar o kernel Linux para dados. A versão Zn no SUSE já foi considerada padrão por algum tempo. As principais vantagens do reiser em relação ao ext3 são a maior velocidade e eficiência de posicionamento ao trabalhar com arquivos pequenos (e no sistema de arquivos, como regra, a maioria dos arquivos são pequenos). Com o tempo, entretanto, o desenvolvimento de reisefers parou. Há muito foi anunciado o lançamento da versão 4, que ainda não está pronta, e o suporte para a versão 3 terminou. Sobre xfs - O sistema de arquivos xfs foi originalmente desenvolvido para estações de trabalho SGI em execução no sistema operacional IRIX. Xfs é especialmente bom para trabalhar com arquivos grandes, em particular ideal para streaming de vídeo. O sistema oferece suporte a cotas e atributos estendidos (ACL).
jfs

jfs - a66peBHaTypaJFS significa Sistema de Arquivos Registrados. Ele foi originalmente desenvolvido para IBM e depois adaptado para Linux. Jfs nunca teve muito reconhecimento no Linux e atualmente está arrastando uma existência miserável, inferior a outros sistemas de arquivos.
brtfs

brtfs - Se for a vontade dos principais desenvolvedores do kernel, o sistema de arquivos brtfs no Linux tem um futuro brilhante. Este sistema foi desenvolvido do zero na Oracle. Inclui suporte para mapeador de dispositivos e RAID. Brtfs é mais semelhante ao ZFS da Sun. Seus recursos mais interessantes incluem a verificação do sistema de arquivos em trânsito e o suporte para SSDs (unidades de estado sólido são unidades de disco rígido baseadas em flash). Infelizmente, o trabalho no brtfs não será concluído em um futuro previsível. O Fedora 11 vem com a opção de instalar brtfs, mas eu só o recomendo para desenvolvedores de sistema de arquivos!
Não existe um sistema de arquivos "mais rápido" ou "melhor" - a estimativa depende para que você pretende usar o sistema. Usuários locais novatos em Linux são aconselhados a trabalhar com ext3, e administradores de servidor com ext4. Claro, com ext4 a velocidade de trabalho é maior do que com ext3, mas ao mesmo tempo no sistema ext4 a situação com a confiabilidade dos dados é muito pior - você pode perder informações se o sistema for desligado repentinamente.

Se você instalou um segundo sistema operacional semelhante ao UNIX em seu computador, os seguintes sistemas de arquivos serão úteis ao trocar dados (de um sistema operacional para outro).

sysv - Usado pelos sistemas operacionais SCO, Xenix e Coherent.

ufs - Usado por FreeBSD, NetBSD, NextStep e SunOS. O Linux só pode ler informações de tais sistemas de arquivos, mas não pode fazer alterações nos dados. Para acessar segmentos do BSD, você precisará adicionalmente da extensão de disklabel do BSD. Existe uma extensão semelhante para tabelas de partição SunOS.

ZFS é um sistema relativamente novo desenvolvido pela Sun para Solaris. Visto que o código ZFS não é licenciado pela GPL, ele não pode ser integrado ao kernel Linux. Por este motivo, o Linux só suporta este sistema de arquivos indiretamente, através do FUSE.
Windows, Mac OS X

Os sistemas de arquivos a seguir serão úteis na comunicação com MS DOS, Windows, OS / 2 e Macintosh.

vfat - usado no Windows 9x / ME. O Linux pode ler informações de tais partições e fazer alterações nelas. Os drivers do sistema vfat também permitem trabalhar com sistemas de arquivos antigos do MS DOS (8 + 3 caracteres).

ntfs - o sistema é usado em todas as versões modernas do Windows: otNT e superior. O Linux pode ler e modificar seus arquivos.

hfs e hfsplus - Esses sistemas de arquivos são usados \u200b\u200bem computadores Apple. O Linux pode ler e modificar seus arquivos.

Os CDs e DVDs de dados geralmente usam seus próprios sistemas de arquivos.

iso9660 - O sistema de arquivos para CD-ROMs é descrito no padrão ISO-9660, que permite apenas nomes de arquivo curtos. Nomes longos têm suporte diferente em sistemas operacionais diferentes, com uma variedade de extensões incompatíveis. O Linux é capaz de funcionar tanto com a extensão Rockridge, comum no UNIX, quanto com a extensão Joliet, desenvolvida pela Microsoft.

udf - este formato (formato de disco universal) apareceu e se desenvolveu como o sucessor do ISO 9660.

Sistemas de arquivos de rede

Os sistemas de arquivos não precisam estar no disco local - eles
pode se conectar a um computador e em uma rede. O kernel Linux suporta uma variedade de sistemas de arquivos de rede, dos quais os seguintes são os mais comumente usados.

smbfs / cifs - ajuda a mapear compartilhamentos de rede do Windows ou Samba para uma árvore de diretório.

nfs é o sistema de arquivos de rede mais importante no UNIX.

coda - Este sistema é muito semelhante ao NFS. Possui muitos recursos avançados, mas não é muito comum.

ncpfs - roda no protocolo de kernel NetWare; oH é usado pelo Novell Netware.

Sistemas de arquivos virtuais

No Linux, existem vários sistemas de arquivos projetados não para armazenar dados em um disco rígido (ou outro meio), mas apenas para trocar informações entre o kernel e os programas do usuário.
devpts - Este sistema de arquivos fornece acesso a pseudo-terminais (PTY para abreviar) via / dev / pts / * de acordo com a especificação UNIX-98. (Os pseudo-terminais emulam uma interface serial. Em sistemas UNIX / Linux, essas interfaces são usadas por emuladores de terminal como o xterm. Normalmente, são usados \u200b\u200bdispositivos como / dev / ttypn. Em contraste, a especificação UNIX-98 define novos dispositivos. as informações são relatadas no terminal de texto H0WT0.)
proc e sysfs - O sistema de arquivos proc é usado para exibir informações de serviço relacionadas ao kernel e gerenciamento de processos. Além disso, o sistema de arquivos sysfs constrói relacionamentos entre o kernel e o hardware. Ambos os sistemas de arquivos são montados em / proc e / sys.
tmpfs - Este sistema é construído com base na memória compartilhada de acordo com o Sistema V. Geralmente é montado em / dev / shm e fornece troca de informações eficiente entre dois programas. Em algumas distribuições (por exemplo, Ubuntu), os diretórios / var / run e / var / lock também são criados usando o sistema de arquivos tmpfs. Os arquivos nesses diretórios são usados \u200b\u200bpor alguns daemons de rede para armazenar números de identificação do processo, bem como informações de acesso ao arquivo. Graças ao tmpfs, esses dados agora são refletidos na RAM. O método garante alta velocidade, e também que após desligar o computador, nenhum arquivo permanecerá nos diretórios / var / run ou / var / lock.

usbfs - O sistema de arquivos usbfs, começando com kernel 2.6 e superior, fornece informações sobre dispositivos USB conectados. Geralmente é integrado ao sistema de arquivos proc. Sobre o suporte a dispositivos USB no Linux.

Outros sistemas de arquivos

auto - na verdade, não existe um sistema de arquivos com esse nome. No entanto, auto pode ser usado em / etc / fstab ou com o comando mount para especificar um sistema de arquivos. Nesse caso, o Linux tentará reconhecer o sistema de arquivos por conta própria. Este método funciona com a maioria dos sistemas de arquivos críticos.
autofs, autofs4

autofs, autofs4 também não são sistemas de arquivos, mas extensões de kernel que executam automaticamente o comando de montagem para os sistemas de arquivos selecionados. Se o sistema de arquivos não tiver sido usado por algum tempo, o comando umount será executado automaticamente nele. Este método é conveniente principalmente nos casos em que apenas alguns dos muitos diretórios NFS são usados \u200b\u200bativamente ao mesmo tempo.

Para fazer isso, o script /etc/init.d/ autofs executa automaticamente o programa de montagem automática na inicialização do sistema. Ele é configurado usando o arquivo /etc/auto.master. O software correspondente é instalado automaticamente em, por exemplo, Red Hat e Fedora. Em qualquer caso, o autofs só é ativado após a configuração de /etc/auto.master ou /etc/auto.misc.
cramfs e squashfs

cramfs e squashfs - os sistemas de arquivos Cram e Squash são somente leitura. Eles são usados \u200b\u200bpara "empacotar" tantos arquivos compactados quanto possível na memória flash ou ROM (memória somente leitura).

fuse - FUSE significa Filesystem in Userspace e permite desenvolver e usar drivers de sistema de arquivos fora do kernel. Portanto, o FUSE é sempre usado com um driver de sistema de arquivos externo. O FUSE funciona em particular com o driver NTFS ntfs-3g.

gfs e ocfs - O Global File System e o Oracle Cluster File System permitem que você crie sistemas de arquivos gigantes em rede que podem ser acessados \u200b\u200bpor vários computadores em paralelo ao mesmo tempo.

jffs e yaffs - Journaling Flash File System e Yet Another Flash File System são especialmente otimizados para funcionar com unidades de estado sólido e mídia flash. Usando algoritmos especiais, eles tentam usar todas as células de memória uniformemente (tecnologia de "nivelamento de desgaste") para evitar falha prematura do sistema.
ciclo

loop - usado para trabalhar com pseudo dispositivos. Um dispositivo de loopback é um adaptador que pode acessar um arquivo regular como um dispositivo de bloco. Graças a ele, qualquer sistema de arquivos pode ser localizado em qualquer arquivo e, em seguida, montá-lo na árvore de diretórios usando mount. A função do kernel responsável por isso - suporte a pseudo-dispositivo - é implementada no módulo de loop.

Existem várias maneiras de usar pseudo dispositivos. Em particular, eles podem ser usados \u200b\u200bao criar discos RAM iniciais para GRUB ou LILO, ao implementar sistemas de arquivos criptografados ou testar imagens ISO para CDs.

Sistemas de arquivos de mídia de armazenamento

Sistemas de arquivos
ISO 9660
Extensão Joliet do sistema de arquivos ISO 9660.
Rock Ridge (RRIP, IEEE P1282) é uma extensão de sistema de arquivo ISO 9660 projetada para armazenar atributos de arquivo usados \u200b\u200bem sistemas operacionais POSIX
Extensões Amiga Rock Ridge
El Torito
Extensões Apple ISO9660
HFS, HFS +
Especificação do Universal Disk Format de um formato de sistema de arquivos independente do sistema operacional para armazenar arquivos em mídia ótica. UDF é uma implementação do padrão ISO / IEC 13346
Monte mais chuvoso