Voltar para Artigos de Linux







Sistemas de Arquivos

 

23 de janeiro de 2004
Postado por: Thadeu Camargo

 

Todo sistema operacional precisa de um sistema de arquivos e o Linux não é exceção à regra, pois afinal de contas um sistema de arquivos serve para fornecer ao sistema operacional toda a uma estrutura para ler, gravar e executar arquivos. Dependendo do tipo de sistema de arquivos pode se ter determinados recursos. Um bom exemplo é a diferença entre um sistema operacional Windows 2000 formatado em FAT32 e outro em NTFS. Veremos que o sistema formatado em NTFS terá muito mais recursos de segurança, assim como regras de permissões mais definidas em relação ao FAT32. Hoje em dia, o Linux tem uma gama muito grande de opções de sistema de arquivos: Desde o velho EXT2 até os atuais com suporte a Journaling, como o EXT3, ReiserFS e XFS. Veremos neste artigo um pouco das características dos sistemas de arquivos para Linux.


Um pouco de história...


Os sistemas de arquivos utilizados atualmente no Linux são avançados e tem vários recursos mas não foi sempre assim. Nas primeiras versões do kernel, o sistema de arquivos utilizado era o EXT. Extremamente frágil e com muitas limitações, como por exemplo, permissão para criação de partições de somente até 2GB e fácil desfragmentação.
A partir do EXT2 a limitação de 2GB para partições caiu por terra, já que ele permite criação de partições de até 4Terabytes!



EXT2


Sem dúvida alguma o EXT2 foi uma evolução e tanto em relação ao EXT, pois neste sistema de arquivos muitas melhorias foram implantadas, fazendo deste modo com que o Linux tivesse um sistema de arquivos com recursos importantíssimos para uma boa administração de sistemas, tais como o suporte a regras de permissões bem definidas. A estrutura do EXT2 pode ser definida assim:

.: Boot Block – Onde são gravadas as informações necessárias para a inicialização do sistema.
.: Inodes – Ficam armazenadas todas as informações sobre cada arquivo: Permissão de acesso, tipo de arquivo, identificação, dono do arquivo, data que foi criado e modificado, tamanho e a localização para o bloco de dados onde o arquivo está guardado.
.: Diretórios – São tipos de arquivos especiais que armazenam uma lista de todos os arquivos e subdiretórios subordinados a ele.
.: Links - Um recurso muito interessante no qual pode se apontar para um outro arquivo ou diretório qualquer.

Quando se fala em arquivos e diretórios no Linux, falamos em tudo, literalmente. Ao contrário do Windows, que trata dispositivos de hardware como tal, o Linux trata tudo como arquivo, ou seja, um disco rígido é um arquivo, um modem também, assim como um CD-ROM, impressora, placa de som, etc.... Os dispositivos de hardware ficam todos no diretório /dev.

Outra característica é o recurso de montagem. O sistema de arquivos do Linux obedece uma hierarquia de arquivos e diretórios, onde pode haver subdiretorios relacionados. E todos devem estar organizados numa partição, que é onde o sistema de arquivos é criado. Estas partições podem ser montadas ou desmontadas. Quando o sistema é iniciado, verifica-se no arquivo /etc/fstab as partições e dispositivos a serem montados. Ao desligar o sistema, as mesmas são desmontadas. Mesmo com o sistema ativo, as partições ou dispositivos podem ser montados ou desmontados a qualquer hora, inclusive em diretórios diferentes, o que dá uma versatilidade muito grande.

No Linux pode se acessar partições de diversos tipos, como FAT, FAT32, iso9660 e outras, inclusive pode se instalar um sistema nestas partições, assim como roda-lo através de um CD-ROM. Isso se deve graças ao VFS ( Virtual File System ), que faz todo um trabalho de gerenciamento do sistema de arquivos “desconhecido”, decifrando sua estrutura e repassando as para o kernel e programas, para que estes possam trabalhar sob o FS. É evidente que isso tem um preço, que se traduz em perda de rendimento, devido a emulação de estruturas.

Para quem tem dual boot a versatilidade do Linux é um bom recurso, mas até pouco tempo atrás ainda existia uma pequena barreira: NTFS, que falarei mais adiante.

Tantos recursos assim fazem com que o EXT2 seja poderoso, mas é evidente que ele tem as suas fragilidades. Algumas delas podem até comprometer o bom andamento do trabalho.
Um grande problema do EXT2 é a sua baixa tolerância a falhas em caso de quedas de energia ou desligamento inadequado, sendo talvez até mais frágil do que a FAT32 do Windows. Um desligamento inadequado num sistema EXT2 força o uso do fsck para verificar a integridade do sistema. Algo mais ou menos semelhante ao que acontece com o Scandisk do Windows. Esta checagem pode demorar vários minutos, dependendo do tamanho do disco rígido, e conforme for o caso, pode haver até perda de dados, se o arquivo estiver sendo gravado na hora do desligamento pode haver perda de um diretório inteiro. Estes problemas foram contornados com a criação dos sistemas de arquivos com Journaling


Journaling


As limitações do EXT2 comprometiam sistemas de missão crítica, onde uma parada de alguns minutos ou perda de dados poderiam causar prejuízos consideráveis. Os sistemas de arquivos com tecnologia “Journaling” tem a capacidade de acompanhar as mudanças que serão feitas nos arquivos antes de serem efetivadas. Estes registros são gravados numa área separada do sistema de arquivos, chamada “Journal” ou “registros de LOG”. Depois que as mudanças são efetivadas, estes registros anteriores são eliminados. Na prática é como se fosse um log constante, em full time, constantemente atualizado. Isso faz com que os FS com esta tecnologia tenham uma alta tolerância a falhas e a perda de dados diminua consideravelmente. Com estes FS não é mais necessária a atuação do FSCK a cada desligamento inadequado do sistema, visto que ao reiniciar a máquina o sistema verificará no registro de LOG se há mudanças marcadas como não feitas. Caso positivo, estas serão efetivadas e o sistema inicializará rapidamente e sem maiores problemas, poupando tempo e dores de cabeça:-).
Nesta categoria de sistemas de arquivos existem algumas opções como EXT3, ReiserFS e JFS, sendo que os mais utilizados são o EXT3 e o ReiserFS



ReiserFS


Uma das grandes vantagens do ReiserFS além do recurso de Journaling, é seu desempenho, principalmente se forem manipulados arquivos pequenos. Isto se deve graças a seu recurso de blocos dinâmicos, ou seja, o ReiserFS não se prende a blocos de tamanho fixo. Ele ajusta o tamanho do bloco conforme o tipo de arquivo. Isso resulta num ganho de desempenho e espaço em disco considerável.
Além destes fatores, o ReiserFS tem uma vantagem de desempenho em relação ao EXT3 devido ao modo como ele armazena os registros no “Journal”. Ele armazena somente as informações sobre a área de metadata ( estrutura de controle de um arquivo, ou seja, onde é especificado seu tamanho, permissões, data de criação, modificação, etc..) fazendo com que o disco rode mais rápido pois menos dados são verificados para armazenar em LOG.
Os dados do arquivo em si, ou seja, as informações realmente armazenadas nos arquivos não são registradas no Journal. Isto pode fazer com que num desligamento inadequado, possa se recuperar o arquivo, mas os dados contidos nele podem ficar truncados ou mesmo perdidos. Pode se considerar isto como uma desvantagem do ReiserFS, pois existe um risco de perda parcial de dados. Este FS tem um progresso considerável a cada versão, fazendo com que ele seja uma opção cada vez mais viável junto com o EXT3.


EXT3


Se o ReiserFS é um sistema de arquivos com recursos novos, o EXT3 é o sucessor natural do EXT2, fazendo com que este seja o sistema de arquivos para Linux mais utilizado atualmente. Ele tem as características do EXT2 com a grande vantagem de ainda ter o suporte para tecnologia Journaling e ainda por cima ser mais rápido que o seu antecessor.
Este FS diferencia-se do modo de trabalho em Journaling do ReiserFS na maneira como guarda os registros no LOG. Ao passo que o ReiserFS guarda apenas informações da Metadata como dissemos antes, o EXT3 guarda não só as informações da Metadata como também os dados em si do arquivo. Para isso ele deve trabalhar no modo ordered, que é o padrão no EXT3. Graças a este modo de trabalho, uma perda de dados do arquivo é reduzida, mas existe um fator preocupante: Devido ao fato do registro de LOG ser completo, o Journal é acessado com muito mais frequência do que no ReiserFS, causando uma perda de desempenho em relação a este FS, além disso, existe a possibilidade do próprio Journal se corromper num desligamento incorreto. Caso isto ocorra, ao reiniciar o sistema, o FSCK rodará, assim como no EXT2 e perda de dados do arquivo que estava sendo acessado na hora do desligamento podem ocorrer. Se tiver muito azar pode-se perder até pastas inteiras.


Convertendo EXT2 para ReiserFS


As distribuições que vem com o kernel 2.4.18 em diante já tem suporte tanto para ReiserFS quanto EXT3, não havendo necessidade de instalar um EXT2 ( a não ser que você tenha um motivo forte para isso :-). Podemos nos aproveitar da gama de possibilidades que o Linux nos propõe e alterar o nosso sistema quando quiser. Os sistemas de arquivos estão incluidos nesta festa:-) Infelizmente, devido ao fato do ReiserFS não ser totalmente compatível com o EXT2, é necessário fazer um backup de sua partição pois a conversão é destrutiva, ou seja, apaga-se todos os dados da partição que se for converter. Então antes de fazer a conversão, faça um backup ok?
Caso sua distribuição tenha um kernel inferior ao 2.4.x será necessário incluir o suporte para ReiserFS no kernel. Para isso será necessário a compilação do mesmo.
Após verificar tudo, vamos fazer a conversão. Primeiramente temos que desmontar a partição:

umount /dev/hdnX


Vamos formatar a partição em ReiserFS:

mkreiserfs /dev/hdnX


Após confirmar a operação, a partição será formatada. Crie um diretório para montar a sua partição:

mkdir novodiretorio


Agora vamos montar a partição rejuvenescida em ReiserFS:-)

mount -t reiser /dev/dnX /novodiretorio


Funcionou? Então agora é hora de marcar a partição no fstab para que seja montada na inicialização do sistema. Abra o /etc/fstab e insira esta linha:

/dev/hdnX         /novodiretorio           reiserfs        defaults 0 0


Pronto se tudo der certo, seu sistema estará funcionando a pleno vapor com ReiserFS:-)


OBS: Onde lê-se hdnX - n = Disco Rígido ; X = partição ( a ser convertida )

Logicamente o “novodiretório” é um nome que você poderá dar a sua bel-vontade:-)

Cuidado para não converter a partição errada ok?


Convertendo EXT2 para EXT3


Diferentemente da conversão de EXT2 para ReiserFS, a conversão para EXT3 é simples e tranquila pois ela não é destrutiva, enfim, sem perda de dados. Assim como para o ReiserFS, é necessário que a sua distribuição esteja com suporte para EXT3 no kernel. Se for kernel 2.4.18 em diante, é certo que a tenha. Caso contrário será necessário recompilar o kernel.
A conversão é muito simples. Primeiramente vamos desmontar a partição:

umount /dev/hdnX


Agora vamos fazer a conversão:

tune2fs -j /dev/hdnX


Agora vamos alterar o /etc/fstab para que as alterações surtam efeito na inicialização do sistema. Insira a linha no arquivo:

/dev/hdnX         /       ext3        defaults 0 0


OBS: Lembre-se de colocar a partição correta para o seu caso.


O e2fsck faz uma checagem do sistema de arquivos na vigésima montagem ou a cada 180 dias. Se quiser desabilitar este recurso faça este comando:

tune2fs -i 0 -c 0 /dev/hdnX


Convertendo EXT3 para EXT2


Graças a compatibilidade entre estes sistemas de arquivos, podemos fazer o inverso, ou seja, converter uma partição EXT3 para EXT2 com tranquilidade. Basta remontá-la como EXT2:

umount   /;mount -t  ext2   /dev/hdnX   /


Depois faça a alteração devida no /etc/fstab:

/dev/hdnX      /      ext2     defaults    0 0


Linux e NTFS


Como foi dito antes, os sistemas de arquivos para Linux tem como grande vantagem a versatilidade, segurança e compatibilidade com outros sistemas de arquivos. O problema reside no outro lado, como a Microsoft que visa somente os seus interesses e tenta dificultar qualquer solução que possa viabilizar uma harmonia de sistemas. Ela não está muito interessada nesta compatibilidade, fazendo com que seja necessário o uso de recursos como engenharia reversa para fazer com que os sistemas possam trabalhar juntos em paz. Isso é o que acontece com o NTFS. Proprietário, fechado, este sistema de arquivos devido a sua obscuridade tem se tornado uma barreira para usuários que rodam sistemas Linux e Windows em dual boot. As distribuições que vem com o kernel 2.4.x, tem suporte para arquivos NTFS somente para leitura. Como a escrita ainda está em estado experimental, pode se ter experiências desagradáveis, como por exemplo, corrupção dos arquivos na partição NTFS. Existem projetos como o Linux-NTFS, que tem obtido bons resultados, mas provavelmente o projeto que conseguiu fazer realmente o acesso a partições NTFS pleno e transparente ao usuário foi o Captive. Além do Captive, o kernel 2.6.1 já apresenta suporte para escrita em partições NTFS. Ainda não tive relatos sobre experiências neste kernel em relação a isto mas creio que esta barreira já esteja praticamente quebrada.



Considerações finais


Como era de esperar, no Linux existem várias opções de sistemas de arquivos. Boas opções por sinal. Cada um tem suas características particulares e a escolha final vai depender do gosto e conveniência de uso. O importante é que como em tudo no Linux existe algo imprescindível ( pelo menos para mim :-) : Liberdade de escolha. Escolha o que for melhor para você e ponto final.










Caso tenha alguma dúvida, crítica ou sugestão a fazer: 

Voltar para Artigos de Linux

                          Site desenvolvido no Mozilla Composer sob sistema operacional Linux Mandrake.
                          Todos os artigos escritos podem ser livremente copiados e divulgados desde que
                               se mantenham os créditos dos autores originais. Seja livre, mas seja justo.