1. “Centro Paula Souza”
ETEC Vasco Antônio Venchiarutti
Sistemas de Arquivos Linux
GSII - Gestão de Sistemas Operacionais
Turma: 2H
Jefferson Henrique dos Santos
João Victor Salla Daniel
Luciano Cricco Peraro
Ronildo Aparecido Ferreira
Jundiaí/2009
2. Sumário
Introdução.............................................................................................................................................3
Os Sistemas de Arquivos......................................................................................................................3
Journaling.............................................................................................................................................3
Reiser FS..............................................................................................................................................4
Ext2.......................................................................................................................................................4
Ext3.......................................................................................................................................................5
Ext4.......................................................................................................................................................5
JFS........................................................................................................................................................6
XFS.......................................................................................................................................................6
SWAP...................................................................................................................................................7
Conclusões............................................................................................................................................7
Conclusão Jefferson:.............................................................................................................................7
Conclusão João Victor:.........................................................................................................................7
Bibliografia...........................................................................................................................................8
3. Introdução
É por meio de um sistema de arquivos que ocorre a gravação e a recuperação dos dados em um
dispositivo de armazenamento em um computador.
O sistema de arquivos é independente do hardware e da BIOS, sendo especificado pelo software do
sistema operacional no momento da instalação do sistema ou na configuração de dispositivos de
armazenamento adicionais posteriormente à instalação.
Segundo WIRZENIUS (1998), o dispositivo de armazenamento comumente usado em um
computador é o disco rígido. Ele é formado por pratos magnetizáveis onde os dados são gravados e
recuperados por leitores eletrônicos denominados "cabeças" de leitura e gravação. O disco possui
vários desses pratos giratórios. Cada face do prato possui uma cabeça de leitura e gravação
exclusiva. O disco possui também uma geometria lógica que permite ao computador gravar e
recuperar dados nessa estrutura física.
Uma vez que o sistema operacional precisa conhecer essa geometria do sistema, é necessário
submeter o disco a um processo denominado formatação lógica para gravar uma estrutura de
sistema de arquivos nele.
Assim, o disco possui uma formatação determinada por um sistema de arquivos. Esse formato
especifica o modo como os arquivos são gravados e recuperados, além de outros detalhes técnicos
sobre os mesmos.
Os Sistemas de Arquivos
Os sistemas de arquivos do GNU/Linux estão evoluindo juntamente com o kernel e outros
subsistemas de forma constante. Melhorias são introduzidas em todos os formatos de sistemas
suportados pelo GNU/Linux para torná-los mais seguros, rápidos e estáveis.
Dentre os mais de 20 sistemas de arquivos suportados pelo GNU/Linux, se destacam o EXT3 e o
ReiserFS. Diversas distribuições do GNU/Linux como Conectiva, Kurumin, SuSE, Fedora, Gentoo,
Linspire, Slackware e Debian utilizam esses sistemas como sistema de arquivos padrão na
instalação.
Este artigo apresenta uma descrição das características funcionais e estruturais de cada sistema, bem
como um comparativo dessas propriedades. O entendimento dessas características é essencial para a
escolha entre um ou outro formato por um administrador de sistemas GNU/Linux que tenha a tarefa
de configurar um sistema de arquivos ou montar partições com finalidades específicas. Palavras-
chave: Sistema de arquivos, Journaling, árvores balanceadas, inode.
Journaling
O fsck consegue prover resultados satisfatórios, mas a correção de erros pode levar muito tempo,
algo inaceitável em aplicações críticas. Além disso, se o desligamento incorreto do computador
ocorreu quando dados estavam sendo gravados no disco, o fsck não conseguirá completar esses
processos, ocasionando a perda das informações que estavam sendo gravadas.
Diante desses problemas, foi apresentada uma solução viável: a utilização de sistemas de arquivos
com a tecnologia "Journaling", que possuem a capacidade de acompanhar as mudanças que serão
4. feitas no sistema de arquivos (por exemplo, gravações/atualizações de dados) antes que realmente
sejam feitas. Essas informações que o Journaling captura são então armazenadas em uma parte
separada do sistema de arquivos, denominada "Journal" (mas também conhecida por "registros de
log"). Quando as informações são armazenadas no Journal, o sistema de arquivos aplica as
mudanças registradas nele e então, remove as informações do Journal.
Agora, entenda o porquê do Journaling ser uma solução eficiente para os problemas de erro. Os
registros de log são escritos antes que as mudanças efetivamente ocorram no sistema de arquivos e
esses registros somente são eliminados quando as mudanças são feitas. Assim, se o computador é
indevidamente desligado, o processo de montagem no próximo startup verificará se há mudanças
gravadas no Journal "marcadas" como não feitas. Se houver, tais mudanças são então aplicadas ao
sistema de arquivos. Isso faz com que os riscos de perda de dados sejam reduzidos drasticamente.
Reiser FS
Criado por Hans Reiser e inicialmente mantido pela empresa The Naming System Venture
(Namesys), o ReiserFS foi o primeiro sistema de arquivos com suporte a “journaling” incluído no
kernel do Linux 2.4. São seus patrocinadores as empresas Novell e Linspire, embora a Novell tenha
anunciado em Outubro de 2006 que o sistema de arquivos selecionado por "default" no Suse Linux
passou a ser o ext3.
Entre suas principais características, possui tamanho de blocos variáveis, suporte a arquivos de até 1
EiB de tamanho e o acesso mhash à árvore de diretórios é um pouco mais rápido que o ext3.
ReiserFS usa árvores balanceadas para tornar o processo de busca de arquivos, informações sobre
segurança e outros metadados mais eficientes. Para arquivos muito pequenos, seus dados podem ser
armazenados próximos aos metadados, então, ambos podem ser recuperados com um pequeno
movimento do mecanismo da "cabeça" de leitura do disco. Essa propriedade vai contribuir para um
melhor desempenho caso uma aplicação necessite abrir muitos arquivos pequenos rapidamente.
Ext2
Esta seção é baseada no documento de Card, Ts'o e Tweedie (1994).
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.
O Ext2 foi projetado e implementado para corrigir as deficiências do Ext e prover um sistema que
5. respeitasse a semântica UNIX (CARD, TS'O e TWEEDIE, 1994). 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.
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.
Ext3
Existem vários sistemas de arquivos disponíveis com a tecnologia Journaling, como o XFS,
desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado com código
aberto, o ReiserFS, desenvolvido especialmente para Linux, JFS, desenvolvido originalmente pela
IBM mas também liberado com código aberto, e o mais conhecido deles: o ext3, desenvolvido pelo
Dr. Stephen Tweedie juntamente com outros colaboradores, na Red Hat, e que veremos agora.
O sistema de arquivos ext3 é basicamente o sistema de arquivos ext2 com recursos de Journaling.
Talvez, essa seja a razão de seu uso amplo: ele é totalmente compatível com ext2 (que foi um
sistema de arquivos muito usado), o que nenhum outro sistema de arquivos baseado em Journaling
é.
O ext3 passou a ser efetivamente suportado pelo kernel do Linux a partir da versão 2.4.
Conseqüentemente, todas as distribuições Linux lançadas com esse kernel ou superior, tem suporte
padrão para ext3.
No ext3, o código de Journaling usa uma camada chamada "Journaling Block Device" (JBD). A
JBD foi criada com o propósito de implementar Journal em qualquer tipo de dispositivo com base
em blocos de dados. Por exemplo, o código ext3 informa e "pede autorização" à JDB para efetuar as
mudanças, antes de modificar/adicionar qualquer dado no disco. Sendo assim, é o JDB que
verdadeiramente "gerencia" o Journal. O fato mais interessante disso é que, a JDB funciona como
uma entidade independente, permitindo que não só o ext3 a use, mas também outros sistemas de
arquivos.
A JDB utiliza um método diferente de outros Journalings para recuperação de informações. Ao
invés de armazenar as informações em bytes que depois devem ser implementados, a JDB grava os
próprios blocos modificados do sistema de arquivos. Assim, o ext3 também armazena "réplicas"
completas dos blocos modificados em memória para rastrear as operações que ficaram pendentes. A
desvantagem desta forma de trabalho é que o Journal acaba sendo maior. No entanto, o ext3 não
precisa lidar com a complexidade dos Journalings que trabalham gravando bytes.
Ext4
Em junho de 1996, Theodore Ts'o propôs a divisão (fork) do desenvolvimento do Ext3. Esse passo
foi necessário para atender às discussões em torno da evolução do Ext3. Mingming Cao, dentre
outros, citou a limitação desse sistema de arquivos por causa do uso de variáveis de 32 bits e
indicou que já haviam esforços para aumentar o tamanho daquelas variáveis para 48 bits. O Ext4 foi
incluído (marcado como "em desenvolvimento") no kernel 2.6.19.
Mathur et al, no "Ottawa Linux Symposium" de 2007, descreveram as principais características a
6. serem implementadas no Ext4, e mostraram a razão de não desenvolverem um sistema de arquivos
inteiramente novo -- a compatibilidade com o Ext3, por causa de sua base instalada.
O Ext3 suporta sistemas de arquivos com tamanho menor que 16 TiB, usando blocos de 4 KiB (212
bytes). Esse limite é definido por uma variável de 32 bits no superbloco -- o valor máximo
suportado exato é de (232-1) * 212 bytes. O tamanho de arquivo é limitado por uma variável de 32
bits no nó-i -- um contador de setores, daí a limitação em 2 TiB ((232 - 1) * 512 bytes).
A primeira providência para aumentar aqueles valores foram: (i) aumentar o contador de blocos no
superbloco para 64 bits -- isso permitiria um sistema de arquivos com ~64 ZiB (~276 bytes = ~264
* 212 bytes); (ii) alterar a contagem de setores para blocos no nó-i -- permitindo arquivos com até
~16 TiB ((232-1) * 212 bytes).
Entretanto, o limite para o tamanho do volume é determinado pela alocação de espaço, que no Ext4
é definido por extensões, que usam 48 bits, o limite para o volume é de 1 EiB ((248-1) * 212 bytes).
A partir do kernel 2.6.25, em 2008, foram adicionados 16 bits ao contador de blocos do arquivo, no
nó-i. Assim um arquivo no Ext4 tem um limite atual de 1 EiB, o mesmo do volume.
JFS
O JFS (Journaling FileSystem) é um sistema de arquivos desenvolvido pela IBM, disponível em
licença open-source, com o intuito de ser utilizado nos "UNIXes" que a IBM vendia. Além de
possuir journal, ele permite que as partições do sistema sejam redimensionadas sem que seja
necessário desligar o computador.
O sistema de arquivos JFS também usa a estrutura inode para armazenar a localização dos blocos de
cada arquivo nas estruturas físicas do disco, a versão JFS2 armazena esses inodes em uma árvore
binária para acelerar o acesso a essas informações. Esses blocos podem variar de 512 a 4096 bytes,
e a alocação dos inodes é feita conforme é necessário.
Entretanto, inicialmente o JFS sofreu uma perda de credibilidade devido a constantes instabilidades
e bugs, caso este que atualmente encontra-se resolvido e assim muito estável.
XFS
O XFS é um sistema de arquivos inicialmente desenvolvido pela Silicon Graphics, Inc. para o seu
sistema operacional IRIX. Posteriormente teve seu código fonte liberado e foi adaptado para
funcionar no Linux.
O XFS é um sistema de arquivos desenvolvido em 64 bits, compatível com sistemas de 32 bits. Em
plataformas de 64 bits, possui um limite de tamanho de 8 EiB para um volume e para cada arquivo;
em 32 bits, usando moldura de página de 4 KiB, o tamanho máximo do volume ou de um arquivo é
limitado a 16 TiB.
Efetua alocação por extensões (v. abaixo) em vez de alocação por blocos.
Usa alocação dinâmica de nós-i.
É um sistema de arquivos com journaling.
7. SWAP
No Linux, a partição swap é uma extensão da sua memória RAM. Se você tem 16 Mb de RAM e 16
MB de Swap, você possui 32 Mb de memória virtual. Uma partição swap única pode ter no máximo
128Mb. Na verdade ela pode até ser maior, mas o espaço extra não será usado. Se você planeja ter
mais do que 128 Mb de swap, crie partições múltiplas de swap. O tamanho da sua swap você tem
que decidir, essa decisão vai depender do que pretende rodar no seu computador. Para uma
utilização doméstica recomenda-se o dobro da sua memória RAM.
Para grandes servidores com troca de arquivos (emails, news, arquivos temporários) grande, são
recomendados uma série de cuidados para criação da tabela de partições. Sempre tendo em mente
que memória RAM é rápida e swap é muito mais lento. É usado uma partição para os arquivos
binários do Linux, os diretorios /bin, /sbin/, /usr/bin/, /usr/sbin e outros. Arquivos que raramente (ou
nunca) são alterados. Coloca-se a partição SWAP no meio do disco. E o restante para arquivos que
irão sair tão rápido como chegaram, como: /var/spool/mail, /var, /var/spool/lpd.
A partição SWAP no meio do Disco é recomendado para que a distancia entre qualquer parte do
disco até ela seja rápido. Então, se o ponteiro do HD estiver na última track do Disco vai andar até a
metade para ler a SWAP. Assim como se estiver no inicio, vai andar até a metade.
Conclusões
Conclusão Jefferson:
Em sistemas EXT2 sem journal as falhas e erros são corrigidos com o utilitário fsck. Apesar dos
resultados satisfatórios de correção e recuperação desse utilitário, em sistemas de alta
disponibilidade o tempo gasto para solucionar inconsistências é um transtorno. Há uma demora para
concluir a checagem, já que todos os arquivos são analisados por referências cruzadas. Essa
abordagem somente funciona bem para inconsistências comuns.
Conclui-se desta forma que o uso de um sistema de arquivos sem journal é atualmente inaceitável
para os padrões de disponibilidade e principalmente em relação à questão de segurança dos dados.
Eu escolheria o Sistema de arquivos ReiserFs ou Ext3 para a instalação do meu Linux.
Conclusão João Victor:
A abordagem dos sistemas com "journal" economiza bastante tempo e contribui para melhorar o
índice de disponibilidade de sistemas críticos que não podem ficar indisponíveis por muito tempo.
Essa característica é atendida satisfatoriamente tanto pelo EXT3 quanto pelo ReiserFS.
No quesito velocidade de acesso à árvore de diretórios, o ReiserFS é mais rápido que o EXT3
devido aos algoritmos otimizados. Conforme PISZCZ (2004) em seus testes comparativos.
8. Bibliografia
INFOWESTER. Sistema de Arquivo EXT3. Disponível em
http://www.infowester.com/linext3.php
Acesso em Abril de 2009
WIKIPEDIA. Sistema de Arquivo EXT2. Disponível em
http://pt.wikipedia.org/wiki/Ext2
Acesso em Abril de 2009
WIKIPEDIA. Sistema de Arquivo EXT4. Disponível em
http://pt.wikipedia.org/wiki/Ext4
Acesso em Abril de 2009.
WIKIPEDIA. Sistema de Arquivo JFS. Disponível em
http://pt.wikipedia.org/wiki/JFS
Acesso em Abril de 2009.
WIKIPEDIA. Sistema de Arquivo XFS. Disponível em
http://pt.wikipedia.org/wiki/XFS
Acesso em Abril de 2009.
Viva o Linux. Sistema de Arquivo SWAP. Disponível em
http://www.vivaolinux.com.br/perguntas/verPergunta.php?codigo=17036
Acesso em Abril de 2009.