Autor Tópico: Artigo - Ext2  (Lida 11087 vezes)

Offline lacerdabh

  • Usuário Ubuntu
  • *
  • Mensagens: 40
    • Ver perfil
    • Adesivos de Parede
Artigo - Ext2
« Online: 08 de Junho de 2008, 22:21 »
Escrevi este meio artigo em um trabalho acadêmico e estou compartilhando com a comunidade..

Link para o Original  http://docs.google.com/Doc?id=dfrw3n25_20cb8tmxfk

Abraços.....


Second Extended File System (EXT2)


Lucas Peixoto Sepe e Lucas Lacerda Madeira

Centro Universitário de Belo Horizonte

Resumo

Os sistemas de arquivos do GNU/Linux sempre foram conhecidos por sua robustez, segurança e tolerância a falhas. O GNU/Linux também se destaca pela grande variedade de sistemas de arquivos suportados. Neste artigo será abordado o Ext2. Serão vistos alguns conceitos básicos, fundamentais para entender como o Ext2 se comporta no GNU/Linux, a história do Ext2, seu funcionamento e limitações e principais características.
1.1. História

Linux Torvalds adaptou o sistema de arquivos do Mimix, de Andrew Tanenbaum, para Linux, mas aquele sistema de arquivos tinha várias limitações, como o tamanho do volume que suportava apenas 64 Mega Bytes e nome de arquivos de no Maximo 14 caracteres.

Depois da inserção do sistema de arquivos virtual, que consiste em uma camada de abstração em cima de um sistema de arquivos, no kernel, Rémy Card criou o Ext no ano de 1992, esse sistema de arquivos aumentou o limite do volume para 2 Giba Bytes e o tamanho do nome de arquivos para 255 caracteres.

O Ext ainda possui algumas limitações, como a fatal de suporte a modificação em nós-i e o tempo de modificação de arquivos. No inicio de 1993 foram disponibilizados 2 novos sistemas: o XiaFS, de Frank Xia, também baseado no Minix; e o Ext2, de Rémy Card e Stephen Tweedie, baseado no Ext, que tornou-se o sistema de arquivos padrão para Linux.
1.2. Ficha técnica


●Oferece suporte aos tipos de arquivos UNIX padrão: arquivos, diretórios, arquivos especiais de dispositivos e links simbólicos.

●Suporta 4 também para o sistema de arquivos.

● Pode-se estender o tamanho do nome de arquivos para no máximo 1012 caracteres.

● Reserva de 5% dos blocos para o ROOT.

● Pode-se escolher o tamanho do bloco lógico na criação do sistema de arquivos.

● Bloco que indica o status do sistema de arquivo: "NOT CLEAN", "CLEAN" ou "ERRONEOUS".

● Contador de mount/unmount para força verificação de integridade (presente no Ubuntu mesmo sendo EXT3).

● Quando um bloco é lido vários blocos contíguos também são lidos para aumentar a performance.

● O Kernel sempre tenta alocar o bloco de dados do arquivo no mesmo grupo que seu Inode.

● Na escrita de dados, até 8 blocos adjacentes são pré-alocados quando um novo bloco é alocado, permitindo que blocos contíguos sejam alocados e facilite uma futura leitura.

● A estrutura foi fortemente influenciada pelo layout do BSD filesystem, onde o sistema de arquivos está disposto em grupos de blocos.

● O EXT3 é fortemente baseado no EXT2, o que significa que um sistema EXT2 pode ser desmontado e remontado como EXT3 e vice-versa, tendo inclusive compatibilidade de metadados.
1.3. Optimações

O sistema de ficheiros Ext2 foi projetado e implementado para suprir deficiências do Ext, no qual se baseou. Dentre estes avanços se destaca o esforço para sanar problemas de fragmentação e de desempenho, o aumento do tamanho máximo da partição para 4TB e o uso de 3 timestamps nos arquivos (criação, modificação e acesso).
1.4. Características Avançadas


O Ext2 compartilha muitas propriedades do sistema de arquivos UNIX tradicional, dentre elas podemos citar os conceitos de blocos, inodes e diretórios, especificação de controle de listas de acesso (ACL’s), fragmentos, restauração e compressão de arquivos.


O Sistema de arquivos Ext2 oferece a sua montagem em duas semânticas: ou BSD ou System V Release 4 – SVR4. Tal semântica escolhida influenciará na criação do arquivo, onde a BSD os arquivos são criados com a mesma identificação de grupo do diretório pai, e já na semântica SVR4, há uma complexidade, pois um diretório tem um bit de identificação de configuração, os novos arquivos herdam a identificação do grupo do diretório pai e os diretórios herdam o bit de identificação da configuração do diretório pai e a identificação do grupo. Em outros casos, os arquivos e diretórios são criados com a identificação do grupo primário do processo chamado.


A semântica BSD permite ao Administrador requisitar que metadados (informações sobre os dados, ou seja, inodes, mapa dos blocos de bits, blocos de indiretos e blocos de diretórios) sejam escritos de forma síncrona no disco quando eles são modificados. Isto pode ser útil para manter a consistência dos metadados, mas pode levar a um baixo desempenho. Este tipo de característica é pouco usado, pois a perda de desempenho associada com a utilização de atualizações síncronas dos metadados pode causar corrupção nos dados do usuário que não serão sinalizados pelo Sistema de Arquivos.


O Administrador pode definir o tamanho máximo da unidade de alocação ao criar o Sistema de Arquivo. Caso seja utilizado uma unidade de alocação grande, o Ext2 fornece técnicas de pré- alocação, otimizando assim o desempenho, mas se o acesso de entrada e saída for grande esta escolha prejudicará o desempenho.


Ferramentas, como tune2fs, e2fsck e o debugfs são fornecidas pelo Ext2. O tune2fs pode modificar os parâmetros do Sistema de Arquivos. Esta ferramenta pode alterar erros de comportamento do Sistema de Arquivos, contagem máxima e montagem, intervalo máximo de checagem e o número de blocos lógicos reservados ao super usuário. Já o e2fsck realiza a recuperação do Sistema de Arquivos quando o mesmo está sujeito, por

exemplo a uma queda brusca de energia. Para complementar o e2fsck o Administrador pode utilizar o debugfs, o qual o ajudará a examinar a estrutura interna do Sistema de Arquivos, reparando algumas inconsistência. Esta última ferramenta é muito perigosa podendo destruir facilmente o Sistema de Arquivos.
1.5. Estrutura do Ext2


Além das características do padrão UNIX, o Ext2 suporta algumas extensões que não estão normalmente presentes em sistemas de arquivos UNIX.

O espaço em um disco é dividido em blocos, que tem tamanho fixo de 1024, 2048 ou 4096 bytes e podem ser fragmentados em 2, 4 ou 8 partes.


Os blocos são agrupados formando os grupos de blocos que reduzirão a fragmentação, e as informações sobre cada grupo de bloco é mantida em uma tabela armazenada no bloco imediatamente após o superbloco.

O superbloco contém todas as informações sobre a configuração do sistema de arquivamento. Uma cópia primária do superbloco é armazenada em 1024 bytes a partir do início do disco, e isto é para a montagem do sistema de arquivos. As informações do superbloco são tão importantes que são armazenadas em grupos de blocos ao longo do sistema de arquivos.

As informações de um superbloco possuem campos com o total de inodes e blocos em um sistema de arquivos, quantos estão livres , quantos inodes e blocos estão em um grupo de blocos, quando o sistema de arquivos foi montado ( e se foi desmontado corretamente), quando foi modificado, qual a versão do sistema de arquivos e qual Sistema Operacional em que o sistema de arquivos foi criado. Se for a primeira vez o sistema de arquivos está sendo revidado, ou se já foi outras vezes, então são criados campos extras como um nome de volume, um número único de identificação, tamanho do inode e um espaço opcional para o armazenamento de informações de configuração das características do sistema de arquivos.

Todos os campos em um superbloco são armazenados no disco em formato little endian (forma de organização dos bytes em uma palavra de memória), facilitando a portabilidade do sistema de arquivos para outra máquina.


O inode (nó de índice) é um conceito fundamental no Ext2, de forma que cada objeto em um sistema de arquivos é representado por um inode. Um arquivo ou diretório é descrito por um e somente um inode, o qual possui um

grupo de blocos que mantém uma tabela de inodes junto com uma mapa de bits que permite o sistema saber como alocar ou apagar uma alocação de um inode. O inode possui alguns campos como:


Modo: campo que possui a descrição do inode (se é um arquivo, diretório, link simbólico, bloco de desipositivo, dispositivo de caracter ou FIFO) e permissões de usuários (leitura, escrita ou execução).

Informações do Propritetátio: identificação do usuário e do grupo do proprietário do arquivo ou diretório. Isto permite que o sistema de arquivos faça uma classificação correta dos acessos.

Tamanho: tamanho do arquivo em bytes.

Controle de data e hora: controla a criação e alteração de um arquivo ou diretório.

Bloco de Dados: ponteiros para os blocos em que o inode está descrito. Os vinte primeiros apontam para os blocos físicos que possuem os dados descritos pelo inode e os três últimos apontam para blocos que possuem subníveis, ou seja, o primeiro aponta para

o bloco indireto simples que possuem endereços de disco. Se não for suficiente existe o bloco indireto duplo que contém vários blocos indiretos simples que apontam para centenas de blocos em disco. E se mesmo assim não for suficiente um bloco indireto triplo também

poderá ser utilizado. Estes três últimos são mais usados em arquivos que possuem muitos dados.


Um diretório é um objeto, ou seja, é um arquivo especialmente formatado contendo registros os quais associam cada nome com o número do inode. O Ext2 mantém uma lista isolada com o nome dos arquivos do diretório evitando uma varredura em todo o diretório.

Um outro tipo de objeto utilizado pelo Ext2 são os arquivos especiais, ou links simbólicos. O tratamento com estes tipos de arquivos é diferenciado, pois os blocos que seriam utilizados como ponteiros são usados para armazenamento de dados.

O Ext2 mantém uma certa quantidade de blocos livres, os quais são reservados ao super-usuário (root). Desta maneira se o sistema utilizar todos os blocos, o super-usuário poderá ainda continuar utilizando o sistema.

O sistema de segurança aos arquivos e diretórios do Ext2 recebem três tipos diferentes de privilégio, como podemos ver a seguir:


Privilégio de proprietário: somente o dono do arquivo ou diretório poderá acessá- lo;

Privilégio de grupo: somente poderão acessar o arquivo ou diretório os usuários que fazem parte do grupo;

Privilégio de outros: neste caso qualquer usuário poderá acessar o arquivo ou diretório.


Uma vez recebido o privilégio o usuário poderá acessar o arquivo ou diretório de três formas: leitura, escrita ou execução. Esses acessos têm diferentes significados quando aplicados a diretórios ou arquivos.

No caso do Arquivo o acesso leitura permite copiar ou visualizar o conteúdo de um arquivo; o acesso escrita pode- se editar, apagar e sobrepor arquivos e o de execução permite rodar um arquivo programa ou um arquivo script.

Já no caso do Diretório o acesso leitura permite listar o conteúdo de um diretório, o acesso escrita permite criar, editar, renomear e deletar arquivos e subdiretórios contidos em um diretório e o acesso execução permite mover entre diretórios, criar, editar, renomear e deletar arquivos e subdiretórios e rodar um programa ou scripts contidos em um diretório.

Um Administrador de um sistema UNIX, neste caso o Linux, possui privilégio total sobre qualquer arquivo ou diretório podendo se tornar dono quanto alterar as formas de acesso.
1.6. Conclusão

O sistema de arquivos Ext2, que já foi o padrão da maioria das distribuições, ainda é um dos mais utilizados na comunidade Linux. Ele provê padrões de semântica de arquivos Unix e características avançadas. Além disso, graças às otimizações incluídas no código do kernel, ele é robusto e oferece ótima performance.

Entretanto, algumas características, como o número pré-determinado de nós-i, o uso de listas encadeadas e a alocação por blocos estão limitando a sua estalabilidade. O sucessor do Ext2 ( Ext3) implementou poderosas ferramentas, como o Fsck e suporte à Journaling, mas mesmo assim ainda não foi suficiente para sanar todas suas limitações.


Referencias

Rémy Card, Theodore Ts'o e Stephen Tweedie Design and Implementation of

the Second Extended Filesystem. (http://web.mit.edu/tytso/www/linux/ext2intro.html)

Boulic, R. and Renault, O. (1991) “3D Hierarchies for Animation”, In: New Trends in Animation and Visualization, Edited by Nadia Magnenat-Thalmann and Daniel Thalmann, John Wiley & Sons ltd., England.

Dyer, S, Martin, J. and Zulauf, J. (1995) “Motion Capture White Paper”, http://reality.sgi.com/employees/jam_sb/mocap/MoCapWP_v2.0.html, December.

Holton, M. and Alexander, S. (1995) “Soft Cellular Modeling: A Technique for the Simulation of Non-rigid Materials”, Computer Graphics: Developments in Virtual Environments, R. A. Earnshaw and J. A. Vince, England, Academic Press Ltd., p. 449-460.

Knuth, D. E., The TeXbook, Addison Wesley, 1984.

RUSLING, David A. de The Linux Kernel. Version 0.8-3. 1988.

(http:/ /www.tldp.org/LDP/tlk/tlk.html),

VLECK, Tom Van Unix and Multics. (http:/ /www.multicians.org/unix.html)

M. McKusick, W. Joy, S. Leffler, and R. Fabry. A Fast File System for UNIX, Fevereiro de 1984

TANENBAUM, Andrew S.; WOODHULL, Albert S. de Sistemas Operacionais: Projeto e Implementação. 2 ed. Bookman, 2000, 759 p.