ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Ext2 - Wikipédia, a enciclopédia livre

Ext2

Origem: Wikipédia, a enciclopédia livre.

O Ext2 (second extended file system) é um sistema de arquivos para dispositivos de blocos (disco rígido, disquete, pen drive). Foi desenvolvido para o Linux por Rémy Card e Stephen Tweedie para substituir o Ext (extended file system), que havia sido criado por Rémy Card.

Índice

[editar] História

Linus Torvalds adaptou o sistema de arquivos do Minix, de Andrew Tanenbaum, para o Linux. Entretanto, aquele sistema tinha várias limitações, como o tamanho do volume suportado (máximo de 64 MiB) e nome de arquivos (até 14 caracteres).

Após a inclusão do VFS (Virtual Filesystem) no kernel, inicialmente por Chris Provenzano, depois reescrito por Torvalds, Rémy Card criou o Ext em 1992, que foi incluído no kernel 0.96c. Esse sistema de arquivos estendeu o limite do volume para 2 GiB e o tamanho do nome de arquivo para 255 caracteres.

O Ext ainda tinha alguns problemas, como a falta de suporte a modificação em nós-i e no tempo de modificação do arquivo. E com o uso, o sistema ficava fragmentado e lento. No início 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 instalações Linux.

[editar] Características técnicas

O Ext2 foi projetado e implementado para corrigir as deficiências do Ext e prover um sistema que respeitasse a semântica Unix. Essa influência do Unix pode ser vista na utilização de grupos de blocos, que são análogos aos grupos de cilindros utilizados pelo UFS (FreeBSD, Solaris).

O bloco, que consiste num conjunto de setores (cada setor tem 512 bytes), é a menor unidade de alocação para o Ext2. O tamanho pode ser de 1.024, 2.048 ou 4.096 bytes e é definido na formatação. Quando é usado o tamanho de 4.096 bytes (4 KiB), o volume suportado é de 16 TiB e um arquivo pode ter até 2 TiB.

[editar] Grupos de blocos

Um volume (partição ou unidade lógica) Ext2 é dividido em grupos de blocos de mesmo tamanho (à exceção do último, que pode ser menor). Com um tamanho de bloco de 4 KiB, um grupo contém 32.768 blocos.

Cada grupo de blocos possui uma tabela de descritores que endereçam os mapas de bits dos blocos e dos nós-i e a tabela de nós-i. O primeiro grupo contém o superbloco, que possui cópia em alguns outros grupos. No mapa de bits de blocos, cada byte mapeia 8 blocos (um por bit). O bit menos significativo identifica o bloco de menor número. O mapa de bits de nós-i é análogo.

Quando um arquivo é criado, o sistema tenta alocar o nó-i e os blocos no mesmo grupo que contém o diretório-pai do arquivo.

[editar] Superbloco

O superbloco é único para o volume formatado. Ele fica no primeiro grupo de blocos, e possui cópia em alguns outros. Seu tamanho é de 1.024 bytes. No superbloco são definidas, dentre outras informações, as seguintes: tamanho do bloco; números de blocos; endereço do primeiro bloco do grupo 0; número de blocos em cada grupo; número de nós-i; número de nós-i em cada grupo.

[editar] Nó-i

O nó-i (inodes ou index nodes) é uma estrutura com tamanho definido de 128 bytes. Alguns parâmetros são obrigatórios (ou essenciais), como as permissões, o tamanho e o endereçamento dos blocos. Outros, embora úteis e quase sempre definidos, são opcionais, como o UID, GID, rótulos de tempo, etc. A seguir serão mostrados alguns dos parâmetros mais importantes (essenciais ou não).

Os primeiros 2 bytes (16 bits) são descritivos (flags): 9 bits de permissão “rwx” - leitura, escrita e execução para o dono, grupo e outros; 3 bits definem o sticky bit, SGID e SUID; 4 bits identificam os tipos de arquivo (regular, diretório, dispositivo, link simbólico, etc.).

Existem 4 campos, cada um com 4 bytes, para contar o tempo, em segundos, desde primeiro de janeiro de 1970 – isso permite que o tempo seja contado até janeiro de 2038. Os 4 tempos marcados são: access time – atime (marca o último acesso ao arquivo); change time – ctime (tempo de alteração do nó-i); modification time – mtime (tempo de modificação do arquivo); deletion time (marca quando o arquivo foi apagado, enquanto o nó-i não for reaproveitado).

4 bytes identificam o usuário (UID) e outros 4 bytes o grupo (GID).

São usados 48 bytes para o endereçamento direto de 12 blocos. Caso o arquivo ocupe mais espaço, os 4 bytes seguintes do nó-i endereçam um bloco indireto simples, que contém os endereços de blocos de dados; se ainda não for suficiente, os próximos 4 bytes identificam um bloco indireto duplo (o qual endereça blocos indiretos simples); finalmente, há 4 bytes para um bloco indireto triplo (que endereça blocos indiretos duplos).

Um sistema Ext2 poderia endereçar arquivos com tamanho máximo um pouco maior que 4 TiB, quando utilizados blocos de 4 KiB. Entretanto, o tamanho de arquivo é limitado por um contador, cujo tamanho é de 4 bytes e informa o número de setores alocados para o arquivo. Esse número limita o tamanho do arquivo a 2 TiB. Existe outro número, que usa 8 bytes (64 bits) e armazena o tamanho do arquivo em bytes.

[editar] Tabela de nós-i

A tabela de nós-i é formada por blocos consecutivos após os mapas de bits. Cada entrada na tabela é um nó-i, que ocupa 128 bytes; assim, um bloco de 4 KiB pode conter 32 nós-i.

[editar] Otimizações de Performance

Esta página ou secção foi marcada para revisão, devido a inconsistências e dados de confiabilidade duvidosa. Se tem algum conhecimento sobre o tema, por favor verifique e melhore a consistência e o rigor deste artigo. Considere utilizar {{revisão-sobre}} para associar este artigo com um WikiProjeto.

O ext2 oferece o melhor desempenho (em termos de velocidade e uso da CPU) entre todos os sistemas de arquivos suportados pelo Linux. Ele é um sistema de arquivos muito rápido pelo fato de não suportar journaling, sendo assim, os dados são gravados diretamente no disco. Quando ocorre alguma parada súbita no sistema, o fsck é acionado para a verificação dos dados no sistema de arquivos, corrigindo eventuais perdas de informação.

O código do kernel do sistema de arquivos Ext2 contêm muitas otimizações de performance, que visam melhorar a velocidade de E/S durante a leitura e escrita de arquivos. O Ext2 traz a vantagem do gerenciamento de buffer por executar leitura de cabeçalhos: quando um bloco tem que ser lido, o código do kernel requisita a E/S em blocos contíguos. Assim, ele tenta assegurar que o próximo bloco a ser lido já estará carregado no buffer. As leituras de cabeçalhos normalmente são executadas durante leituras seqüenciais em arquivos e Ext2 as estende à leitura de diretórios. O Ext2 também contém muitas otimizações de alocação. Grupos de blocos são usados para deixar juntos inodes e dados relacionados: o código do kernel sempre tenta alocar blocos de dados para um arquivo no mesmo grupo bem como seu inode. Isso foi planejado para reduzir as buscas em disco quando o kernel lê um inode e seus blocos de dados. Quando necessita realizar a escrita de dados em arquivos, o ext2 pré-aloca até 8 blocos adjacentes na alocação de um novo bloco. A taxa de acerto da pré-alocação gira em torno de 75 % equiparado com muitos sistemas de arquivos. Essa pré-alocação possibilita boa performance na escrita, menores até mesmo que o carregamento. Ele também permite que blocos contíguos sejam alocados para arquivos e portanto aumenta sua velocidade em leituras seqüenciais futuras. Essas duas otimizações de alocação produzem as boas características de: - arquivos relacionados através de grupos de blocos; - blocos relacionados através do agrupamento de 8 bits das alocações dos mesmos.

[editar] 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 escalabilidade. Mesmo a introdução do journaling com o Ext3 não foi suficiente para sanar essas limitações. Assim, o esforço da comunidade agora é para implementar o Ext4.

[editar] Referências

  • [1] CARD, Rémy; TS'O, Theodore; TWEEDIE, Stephen. Design and implementation of the Second Extended Filesystem. Proceedings of the First Dutch International Symposium on Linux. 1994. Disponível em http://web.mit.edu/tytso/www/linux/ext2intro.html. Acessado em 01 de outubro de 2007.
  • [2] BOVET, Daniel P.; CESATI, Marco. Understanding the Linux kernel. 3.ed. Sebastopol: O'Reilly. 2005.
  • [3] CARRIER, Brian. File system forensic analysis. Upper Saddle River: Addison-Wesley. 2005.


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -