9
Sistema de arquivos Ext Gustavo Henrique Gomes 1 , Jo ˜ ao Batista P. Matos Jr. 1 , Pedro Antˆ onio Braganick Costa 1 , Vin´ ıcius de Sousa Coelho 1 1 Instituto de Inform´ atica – Universidade Federal de Goi´ as (UFG) Goiˆ ania – GO – Brasil {joaobatistamatos, pedrobraganick, viniciuscoelho}@inf.ufg.br {gustavogomes582}@gmail.com Abstract. This article was developed and presented as seminary in Operational Systems II class, for the course of Computer Science. The theme is related to ExtFS, a file system developed essentially for Linux. Resumo. Este artigo foi desenvolvido e apresentado como semin´ ario na dis- ciplina de Sistemas Operacionais II, referente ao curso de Ciˆ encias da Computac ¸˜ ao. O tema abordado ´ e relacionado ao ExtFS, um sistema de arquivos desenvolvido especificamente para Linux. 1. Introduc ¸˜ ao Historicamente, o Extfs foi desenvolvido em 1992 por R´ emy Card. Foi o primeiro sis- tema de arquivos desenvolvido especificamente para Linux, substituindo as limitac ¸˜ oes do sistema de arquivo Minix, conhecido como MinixFS. Entre elas podemos citar: O tamanho das partic ¸˜ oes era limitado para 64MB; Os nomes de arquivos n˜ ao podiam ultrapassar os 14 bytes. O MinixFS foi desenvolvido para uso no Minix, um sistema operacional criado por Andrew Tanenbaum em meados de 1980, como um sistema operacional Unix-like (que tem comportamento semelhante ao Unix), cujo c´ odigo fonte era livre. O MinixFS copiava a estrutura b´ asica do UFS (Sistema de Arquivos do Unix, em portuguˆ es), mas sem muitos m´ etodos complexos, deixando o c´ odigo enxuto. O formato ainda ´ e utilizado em algumas distribuic ¸˜ oes Linux para discos boot´ aveis e outras situac ¸˜ oes onde um sistema de arquivos simples e compacto ´ e necess´ ario.[MinixFS at Wikipedia ] O Extfs encontrou sua inspirac ¸˜ ao no tradicional UFS e consequentemente usa o mesmo tipo de metadados, chamados i-nodes, que podem ser considerados a base do sistema de arquivos. Ele foi simplificado, embora todas estruturas obsoletas do UFS mantidas para compatibilidade foram removidas. Os tamanho limite de 64MB para as partic ¸˜ oes do MinixFS n˜ ao existia mais, passando a ter limite de at´ e 2GB e o nome dos arquivos poderiam ent˜ ao conter at´ e 255 caracteres. R´ emy Card, n˜ ao satisfeito com o ext, substituiu-o em 1993 pelo sistema de arquivo ext2, cujo objetivo era prover um sistema de arquivos poderoso, que imple- mentasse semˆ anticas de arquivos Unix e oferecer caracter´ ısticas avanc ¸adas. J´ a em 2001, foi lanc ¸ado o ext3, que ´ e um ext2 com journal e outras caracter´ ısticas, como por exemplo, suporte a arquivos grandes. Em 2006, em fase experimental, foi lanc ¸ado o ext4 usando o extents, grac ¸as as melhorias de velocidade nos dispositivos de I/O, al´ em de suportar arquivos individuais na casa de TB. Em 2008 saiu a primeira vers˜ ao est´ avel do ext4, mas, ainda hoje, muitos usu´ arios ainda utilizam o ext3. Maiores detalhes ser˜ ao discutidos pos- teriormente. [Framework ]

Ext

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Ext

Sistema de arquivos ExtGustavo Henrique Gomes 1, Joao Batista P. Matos Jr.1,

Pedro Antonio Braganick Costa1, Vinıcius de Sousa Coelho1

1Instituto de Informatica – Universidade Federal de Goias (UFG)Goiania – GO – Brasil

{joaobatistamatos, pedrobraganick, viniciuscoelho}@inf.ufg.br

{gustavogomes582}@gmail.com

Abstract. This article was developed and presented as seminary in OperationalSystems II class, for the course of Computer Science. The theme is related toExtFS, a file system developed essentially for Linux.

Resumo. Este artigo foi desenvolvido e apresentado como seminario na dis-ciplina de Sistemas Operacionais II, referente ao curso de Ciencias daComputacao. O tema abordado e relacionado ao ExtFS, um sistema de arquivosdesenvolvido especificamente para Linux.

1. IntroducaoHistoricamente, o Extfs foi desenvolvido em 1992 por Remy Card. Foi o primeiro sis-tema de arquivos desenvolvido especificamente para Linux, substituindo as limitacoes dosistema de arquivo Minix, conhecido como MinixFS. Entre elas podemos citar:

• O tamanho das particoes era limitado para 64MB;• Os nomes de arquivos nao podiam ultrapassar os 14 bytes.

O MinixFS foi desenvolvido para uso no Minix, um sistema operacional criadopor Andrew Tanenbaum em meados de 1980, como um sistema operacional Unix-like(que tem comportamento semelhante ao Unix), cujo codigo fonte era livre. O MinixFScopiava a estrutura basica do UFS (Sistema de Arquivos do Unix, em portugues), massem muitos metodos complexos, deixando o codigo enxuto. O formato ainda e utilizadoem algumas distribuicoes Linux para discos bootaveis e outras situacoes onde um sistemade arquivos simples e compacto e necessario.[MinixFS at Wikipedia ] O Extfs encontrousua inspiracao no tradicional UFS e consequentemente usa o mesmo tipo de metadados,chamados i-nodes, que podem ser considerados a base do sistema de arquivos. Ele foisimplificado, embora todas estruturas obsoletas do UFS mantidas para compatibilidadeforam removidas. Os tamanho limite de 64MB para as particoes do MinixFS nao existiamais, passando a ter limite de ate 2GB e o nome dos arquivos poderiam entao conter ate255 caracteres. Remy Card, nao satisfeito com o ext, substituiu-o em 1993 pelo sistemade arquivo ext2, cujo objetivo era prover um sistema de arquivos poderoso, que imple-mentasse semanticas de arquivos Unix e oferecer caracterısticas avancadas. Ja em 2001,foi lancado o ext3, que e um ext2 com journal e outras caracterısticas, como por exemplo,suporte a arquivos grandes. Em 2006, em fase experimental, foi lancado o ext4 usandoo extents, gracas as melhorias de velocidade nos dispositivos de I/O, alem de suportararquivos individuais na casa de TB. Em 2008 saiu a primeira versao estavel do ext4, mas,ainda hoje, muitos usuarios ainda utilizam o ext3. Maiores detalhes serao discutidos pos-teriormente. [Framework ]

Page 2: Ext

2. Limite de arquivos

2.1. Ext

O Ext limita o tamanho dos nomes em apenas 255 caracteres, para tamanho de arquivo olimite maximo e de 2GB, o mesmo para particao de sistema.

2.2. Ext2

Second Extended File System ou Ext2, foi criado para corrigir deficiencias encontradasno seu antecessor, que era apenas uma adaptacao de outro sistema de arquivos. O ext2procurou seguir a mesma semantica do UNIX. Houve melhorias consideraveis no Ext2:

• Nao ha limites para o tamanho de extensoes de arquivos;• Um arquivo pode ter varias extensoes ao mesmo tempo;• O tamanho maximo de arquivos passou de 2GB para 16GB a 2TB, dependendo

do tamanho dos blocos que e variavel sendo 1KB, 2KB, 4KB ou 8KB.

O volume maximo do Ext2 e de 32TB. No Linux esse tamanho e limitado pelotamanho do superbloco que e 32 bits, fazendo teoricamente o Ext2 poder armazenar ate16TB com 32 bits, mas e limitado pelo numero de grupo de blocos (65.536), que ocupa 16bits. Fazendo uma conta simples para blocos de 4KB com cada grupo de blocos contendono maximo 32.768 blocos e o limite de grupo sendo 65 536, temos 4 ∗ 32.768 ∗ 65.536 =8TB. O numero maximo de sub-nıveis de diretorio e de 31.998, nao existindo indexacaode arquivo no Ext2. Sendo assim, existe perca de desempenho em diretorios com mais de10.000 arquivos.

2.3. Ext3

Third Extended File System ou Ext3 e o sucessor do Ext2. Sua mudanca mais relevantee a introducao do journaling, que e usado pelo kernel linux. Isso torna o Ext3 muito maisconfiavel e elimina a necessidade de checar o sistema de arquivos apos um desligamentoinesperado do sistema. Ha uma queda na performance em comparacao com o Ext2, maspossui vantagens em confiabilidade, crescimento do sistema de arquivo de forma onlinee indexacao por H-Tree (versao especial de B-Tree) para diretorios com muitos arquivos.Existem 3 tipos de journaling:

• Menor risco, que grava tudo em um journal antes de passar para o sistema dearquivos. Isso geralmente causa perca de performance, pois os dados acabamsendo escritos duas vezes: uma para o journal e outra para o sistema de arquivos.• Risco medio, onde apenas os metadados sao escritos no journal e o conteudo dos

arquivos nao, mas e garantido que este conteudo seja escrito no disco antes que osmetadados correspondentes sejam marcados como submetidos no journal. Casohaja erro no sistema, o arquivo sera limpado pelo processo de cleanup; no casode arquivos sendo sobrescritos, podem ser corrompidos porque a versao originaldo arquivo nao for guardada, o que acaba colocando o arquivo em um estadoinconsistente e sem informacao suficiente para restaurar completamente nenhumdos dois estados. Sendo assim, pode haver mistura de dados novos e antigos, poisa ordem escrita e controlada pelo propio hardware do disco.

Page 3: Ext

• Risco mais alto, somente os metadados sao escritos no journal, o conteudo dosarquivos nao. Assim o conteudo pode ser escrito antes ou depois que o journal eatualizado, tendo como consequencia arquivos corrompidos em caso de erro. Umarquivo pode ser marcado no journal como sendo maior do que ele realmente e,causando inconsistencias. Versoes antigas podem sobrescrever novas pois podehaver falta de sincronizacao entre dados e journal.

Ext3 possui blocos de ate 8KB, cujo numero maximo de blocos e de 232. No ext2,para cada tamanho de bloco existe um tamanho de arquivo e sistema maximo, sendo que otamanho e de 16GB a 2TB e de 2TB a 32TB respectivamente. O tamanho dos superblocosainda permanece 32 bits.

2.4. Ext4

Ext4 e sucessor do Ext3 criado para remover alguns limites do armazenamento em 64 bits.Usa blocos de 4KB, o tamanho de arquivos pode ser de ate 16TB e de particao de sistemaate 1EB. E introduzido extends para substituir o tradicional esquema de mapeamento deblocos usado pelo Ext2 e Ext3. Um extends e uma serie de blocos fısicos que melhoraa performance de arquivos grandes, reduzindo fragmentacao. Uma unica extensao podemapear ate 128MB de espaco com um tamanho de bloco de 4KB, podendo haver ate4 extensoes armazenados em um unico i-node. Quando ha mais que 4 extensoes paraum arquivo, elas sao indexados em uma H-Tree. Nao ha mais limite de 32.000 sub-diretorios; no Ext4 e aumentado para 64.000, sendo possıvel ir alem com a funcionalidade”dir nlink”. No Ext4, um grupo de blocos nao alocados e secoes da tabela de i-node saomarcados como tal. Com isso, o e2fsck pode pular inteiramente em uma checagem osblocos, o que reduz muito o tempo para uma particao do tamanho que existe no Ext4. Hatambem o acrescimo de 2 bits no campo do timestamp, em virtude de adiar o problemado ano 2038 por mais 204 anos.

3. Entradas e Performance

Algumas comparacoes entre as variacoes do ext [fsck time vs. inode count ], [Dell ]:

Figure 1. Grafico de uma checagem de arquivos para Ext2, Ext3 e Ext4

Page 4: Ext

Figure 2. Grafico de desempenho em escrita em Raid feito IOZone

Figure 3. Grafico de desempenho em leitura em Raid feito IOZone

4. Gerenciamento de Blocos

De modo geral no sistema de arquivos Ext2, arquivos sao guardados (armazenados) emblocos, estes por sua vez sao agrupados em grupos de blocos. E todas as informacoessobre a configuracao do sistema de arquivos esta presente no superbloco e i-nodes. Obloco e a menor unidade de alocacao e possuem tamanhos fixos que podem ser de 1024,2048 ou 4096 bytes. Esses tamanhos sao definidos no momento da criacao do sistemade arquivo, e impactam diretamente na organizacao, controle e ocupacao do disco. Otamanho do bloco e proporcional ao desperdıcio de espaco por arquivo, contudo e inver-samente proporcional a sobregaca de contagem e ao numero de blocos para gerenciar.Os grupos de blocos sao implementados (de uma forma organizacional) para minimizara fragmentacao, por consequencia isso tambem diminui o tempo de seek, uma vez quese possibilita ler um volume muito maior de dados contıuos, agilizando a leitura de umarquivo, e/ou blocos. Cada grupo possui um bloco com uma copia do superbloco do sis-tema de arquivos, n blocos para uma copia do descritor de grupos, um bloco para mapa debits dos bloco, outro bloco para o mapa de bits de i-nodes e mais n blocos para a tabelade i-nodes.

O descritor de grupos mantem as informacoes sobre todo o conteudo de grupode blocos, [de grupos EXT2 ]. Os mapas de bits(bitmap) de blocos e mapas de bits dei-nodes guardam a informacao sobre quais blocos estao em uso e quais i-nodes estao emuso, valor 0 indica bloco vazio e valor um bloco ocupado, bitmap de i-nodes funcionade forma analoga. Tanto no mapa de bits de bloco quanto no de i-nodes, cada byte podereferenciar oito blocos, ou seja um bit para cada bloco.

Page 5: Ext

Figure 4. Representacao de uma particao EXT2 e de um Grupo de blocos

Figure 5. Tabela com os campos de um descritor de grupos EXT2

Quanto ao superbloco [EXT2 ], diz-se que e uma estrutura essencial para a mon-tagem do sistema de arquivos e ocupa um espaco de 1024 bytes do inicio do dispositivo.Devido a sua importancia tem-se uma copia para cada grupo de blocos existente no sis-tema de arquivos. As principais informacoes do superbloco sao o numero total de blocose i-nodes no sistema de arquivos e quanto deles estao livres, o numero de i-nodes e blocospara cada grupo de blocos. Todos os campos do superbloco sao preenchidos usando aarquitetura little endian.

I-node (index node) e uma estrutura de dados de tamanho 128 fundamental ao sis-tema de arquivos EXT2. Para qualquer objeto presente neste sistema de arquivos, haveraum i-node o representando. Cada i-node contem ponteiros que para os blocos onde estaoas informacoes do objeto, como os dados nele armazenados e metadados tais como per-missoes, dono, tamanho, ultima modificacao, numero de blocos, fragmentos, versao e etc;as unicas informacoes que nao sao encontradas no i-node sao o nome do objeto e o nomedo seu diretorio pai. O i-node [I-node ] contem ainda ponteiros para blocos indiretos,que por sua vez podem conter ponteiros para mais blocos indiretos, antes de terem pon-teiros para dados necessariamente. Este apontamento indireto permitem arquivos muitoextensos.

No EXT2, os dados tendem a ser colocados no mesmo grupo de blocos, para tentardiminuir o efeito da fragmentacao, que e inevitavel. Nem sempre arquivos terao mesmotamanho dos blocos, ou nao caberam todos exatamente em um grupo de blocos, o quedeixara certo desperdıcio em cada bloco e/ou grupo de blocos. A fragmentacao se divideem dois casos; interna e externa. Na fragmentacao interna, um arquivo cabe dentro de umgrupo de blocos, mas nao e capaz de ocupar todos os blocos do grupo deixando um espacolivre que nao podera ser ocupado por outro arquivo. Na externa, ocorre que o arquivo emuito grande e tem-se a necessidade de dividı-los em mais de um grupo de blocos. Assolucao para fragmentacao interna e diminuir o tamanho do blocos, contudo isso nao einteressante pois pode afetar a performance do sistema, pois como visto anteriormente

Page 6: Ext

Figure 6. Tabela com os campos de um Superbloco EXT2

aumentaria o numero de blocos para gerenciar. Quanto a externa o Ext2 disponibilizaate oito blocos, tentando disponibilizar todos em sequencia, para um arquivo aberto paragravacao. O sistema de arquivos Ext4, apresenta um mecanismo de alocacao atrasada epre-alocacao persistente de espaco em disco. Na pre-alocacao persistente usa-se agora afuncao fallocate() que alocara um espaco continuo no disco para a alocacao, nao necessi-tando de gerar um arquivo vazio preenchido com zeros como era feito anteriormente. Naalocacao atrasada utiliza-se a tecnica allocate-on-flush, essa tecnica funciona atrasando aalocacao de blocos ate que toda a informacao esteja disponıvel para gravar no disco.

5. Aspecto de seguranca e Diretorios

5.1. Evolucao em cada versao

Com relacao a diretorios o ext era extremamente limitado quando comparado as demaisversoes desse sistema, o ext2 passa a enxergar os diretorios como um arquivo especialque contem uma lista dos subdiretorios e arquivos subordinados a ele, o ext2 tambemconta com um maximo de 31.998 subdiretorios, alem disso no ext2 cada diretorio temno maximo 32TB de tamanho. A versao ext3 nao aumentou o tamanho do diretorio etao pouco o numero de subdiretorios que continuaram na faixa de 32.000, ao inves dissonessa versao os diretorios passaram a ser representados por uma H-tree que consiste emuma arvore especializada em dados utilizada para a indexacao do diretorio. O ext4 por suavez ampliou muito as limitacoes de seus antecessores com um limite maximo de tamanhopara os diretorios de 1EB e cerca de 64.000 diretorios de sub-nıvel e esse numero podeser ainda maior com a funcionalidade ”dir nlink” onde embora o numero de subdiretorios

Page 7: Ext

Figure 7. I-node EXT2

possa ser maior a contagem de diretorios na pasta pai congele em 64.000. Ja com relacaoa seguranca e confiabilidade a principal mudanca ocorreu entre o ext2 e o ext3 com aadicao do journaling, uma ferramenta que funciona como um log de todas as atividadesocorrentes no sistema de arquivos ou em alguns casos um log parcial das ocorrencias, oque facilita na deteccao e correcao de erros, mas que por sua vez pode comprometer odesempenho.

5.2. JournalingBasicamente o journaling e um jornal, ou seja, um log dos eventos do sistema de arquivo,atraves do armazenamento de dados sobre todas as operacoes feitas no sistema de arquivosate que as mesmas sejam completamente realizadas esse metodo e capaz de detectar ecorrigir erros sem a necessidade de verificar todo o disco, precavendo o sistema de percamesmo que o sistema seja desligado incorretamente. A desvantagem desse metodo estano desempenho das atividades, uma vez que cada atividade deve especificar no log oquevai ocorrer e so depois a mesma sera realmente executada. Esse metodo foi incluıdo noext3 e melhorado no ext4, e pode ser utilizado em tres variacoes:

• Journal: Nesse caso todas as atividades e modificacoes feitas no sistema de ar-quivos sao adicionadas ao log o que deixa o sistema mais seguro em relacao asoutras duas variacoes mas que por sua vez com o menor desempenho.• Write Back: Esse por sua vez gera uma confiabilidade mais baixa que os de-

mais uma vez que armazena no log somente mudancas em arquivos que possuemmetadados, porem isso faz com que o desempenho seja maior.• Ordered: O meio termo entre as tres variacoes e a comumente usada no ext3,

nessa variacao e armazenado no log somente modificacoes feitas em arquivos commetadados, mas alem disso guarda no arquivo de dados as atualizacoes antes defazer as mudancas associadas ao sistema de arquivos.

O ext3 possui tambem uma camada chamada ”Journaling Block Device” (JDB),essa camada funciona com o objetivo unico de facilitar o journaling no sistema de arquivos

Page 8: Ext

de forma a tratar os dados a serem armazenados no log como blocos, fazendo com queos dados guardados sejam replicas perfeitas dos blocos que estao sendo modificados, ojdb entao gerencia o jornal mantendo a log (replica dos blocos) na memoria ate que aoperacao seja confirmada. E importante ressaltar que o JDB nao faz parte do sistema dearquivos ele e uma ferramenta independente e pode inclusive ser usado por mais de umsistema de arquivo.

5.3. H-TreeAte a versao ext2 os diretorios armazenavam seus subdiretorios e arquivos em uma listaligada, porem a busca linear feita sobre essa lista comecou a comprometer o desempenhodo sistema de arquivo, entao a partir do ext3 foi implementada a H-tree como estruturade dados para armazenamento dos subordinados de determinado diretorio. A H-Tree ebasicamente uma arvore B, porem possui 32 bits para hash dos elementos, onde cadachave referencia um conjunto de entradas guardado em um no folha. Como na H-Treecada no interno tem 8 bytes sabemos que o espalhamento dos blocos e muito grande,pode-se referenciar 500 blocos usando um bloco com 4K entradas, apenas dois nıveis daarvores sao suficientes para armazenar 16 milhoes de nomes contendo 52 caracteres, poresse motivo em geral as H-Trees tem no maximo dois nıveis. Como o espalhamento naarvore h e muito grande e ao mesmo tempo o diretorio possui um hash direcionado a elepelo nome nao e necessario um balanceamento nessa arvore.

6. ConclusaoO sistema de arquivos Ext2 e um sistema confiavel estavel que surgiu com o propositode corrigir os erros apresentados pelo sistema proposto anteriormente, o Ext. O sistemae hoje usado em grande escala pelos sistemas Linux. O Ext2 e a principal base dossistemas seguintes Ext3, Ext4. Salvas algumas melhorias no Ext3 como a implementacaodo journaling, e algumas outras mudancas como a possibilidade de se ter blocos de 8KB,seu funcionamento e praticamente o mesmo do Ext2, perdendo pouco em desempenho.O sistema de arquivos Ext4, veio para solucionar o problema de enderecamento de 64bits, tambem trouxe algumas melhorias no tempo de checagem, uso de blocos de 4KB,e a introducao de um novo mecanismo de mapeamento que melhora a performance paraarquivos grande e diminiu a fragmentacao.

Referencesde grupos EXT2, D. Descritor de grupos EXT2 http://www.makelinux.net/books/ulk3/understandlk-CHP-18-SECT-2.

Dell, T. C. Tech Center Dell http://en.community.dell.com/techcenter/high-performance-computing/w/wiki/2290.aspx.

EXT2, S. Campos Superbloco EXT2 http://pt.wikipedia.org/wiki/Ext2.

Framework, D. F. Digital Forensics http://wiki.digital-forensic.org/index.php/Extended_File_System/.

fsck time vs. inode count. Wiki E2fsck http://en.wikipedia.org/wiki/File:E2fsck-uninit.svg.

I-node, E. EXT2 I-node http://www.science.unitn.it/˜fiorella/guidelinux/tlk/node96.html.

Page 9: Ext

MinixFS at Wikipedia, t. F. E. Wikipedia http://en.wikipedia.org/wiki/MINIX_file_system/.