Artiguinho rápido: Sistemas de Arquivo
Hi folks =)
Eu tava meio sem idéia de post, quase terminei um de AiGLX, quase terminei um sobre kérnels, mas nada que tava valendo mesmo o meu empenho. Então, a pedido da comunidade Linux vs. Windows, organizei rapidamente um artigo sobre uma apresentação de faculdade que eu fiz (era a minha parte no grupo): Sistemas de arquivos usados no Linux. Fiz numa linguagem fácil e não muito técnica, pra ninguém morrer de sono (como eu agora), dando foco pros sistemas de arquivo mais comumente utilizados: EXT3 e ReiserFS. Sim, eu sei que o Hans Reiser matou a mulher (ele diz que não, mas é o que dizem =) e provavelmente o ReiserFS e Reiser4 não terão atualização tão cedo. Mas, dos sistemas de arquivo que estudei, foi o que achei mais interessante, e provavelmente usarei no Linux para desktop por muito tempo =). Postarei também sobre o pré-histórico Fat32 e o gambiarra NTFS. Lets go!
Linux EXT2
O EXT2 na verdade é um EXT3 sem journaling, pra poupar explicações (já disse que tô com sono), leia a próxima parte que tu vai entender. Ele é praticamente igual ao Fat, também. =)
Linux EXT3
Foi desenvolvido pelo doutor Stephen Tweedie e colaboradores na Red Hat. O Sistema de arquivos EXT3 veio como evolução ao EXT2. A estrutura do sistema de arquivos é a mesma do EXT2, com a exceção que o EXT3 possui suporte ao Journaling.
O quê é o Journaling? -> Eu explico. O Journaling é um algoritmo que gera um “journal”, que é na bem verdade um arquivo de log. Esse arquivo de log registra as alterações à serem feitas no corpo do FS para depois faze-las e apagar o registro. Isso é extremamente interessante, pois em caso de interrupção súbita (como uma falta de energia) não sobram dados incompletos ou à serem gravados. Durante a inicialização, ele verifica se há algum dado não-sincronizado (logado mas não gravado) e, caso tenha, executa. Assim, dados não se perdem.
Isso faz o sistema de arquivos EXT3 ser confiável para interrupção súbita, fornecendo também uma rápida e confiável recuperação. Uma partição EXT2 pode ser convertida em EXT3, basta criar-se um Journaling. Do mesmo jeito que uma partiçao EXT3 pode ser transformada em EXT2, retirando o tal do Journaling.
O tamanho do inode do EXT3 é padronizado e pode ser escolhido. Ao aumentar o tamanho do Inode (4KB por exemplo), um arquivo de 1KB iria desperdiçar 3KB. Mas, usar um inode pequeno (512B, tamanho mínimo, por exemplo), ia castigar o cabeçote de leitura. O padrão é usar 4KB. O EXT3 não suporta arquivos individuais maiores que 2GB e eu não tive nem a curiosidade de tentar descobrir o motivo.
ReiserFS
Criado por Hans Reiser e mantido pela empresa The Naming System Venture (patrocinado pela Novell e Linspire), o ReiserFS é um dos sistemas de arquivos mais rápidos atualmente, e é um sistema de arquivos alternativo ao EXT2/3.
Entre suas principais características, estão que ele possui tamanho de blocos (inode) variável, suporte a arquivos maiores que 2 Gigabytes, estabilidade, suporte a quota, rápida velocidade de gravação e trabalha muito bem com arquivos pequenos, vou explicar. A principal sacada do ReiserFS é a alocação dinâmica de inodes, já que esse sistema de arquivos não os aloca em espaços fixos ou blocos e sim, aloca o tamanho exato que o arquivo precisa. Como assim? Exemplo, um arquivo é de 1MB, ele cria um inode de 1MB pra gravar o arquivo! Desperdício zero.
A leitura e escrita de arquivos grandes são limitadas pela velocidade do dispositivo de armazenamento e pelo canal de entrada e saída da controladora de discos. Já o acesso a arquivos pequenos, como scripts do Shell, é limitado pela eficiência do projeto do sistema de arquivos. A razão disso é que a abertura de um arquivo requer a leitura dos metadados sobre ele que estão armazenados no inode do diretório em uma área distinta dos dados. Após localizar a entrada referente ao arquivo no diretório é que o sistema realiza a leitura dos setores que contêm os dados.
No caso de um desligamento incorreto do sistema, o ReiserFS é capaz de recuperar a consistência do sistema de arquivos em pouco tempo (a verificação dura alguns segundos) e a possibilidade de perda de pastas ou partições é muito pequena. Em compensação, os arquivos que eventualmente estiverem sendo gravados no exato momento em que acabou a energia ficarão com seus dados corrompidos, haverá acesso aos arquivos normalmente, mas o conteúdo estará truncado. Isso por que os metadados estarão alterados, e o journal estará sincronizado.
Uma desvantagem do ReiserFS é o seu consumo de CPU muito elevado, ele utiliza no mínimo 7% da CPU, chegando a usar até 99% por cento, quando a atividade de disco é muito alta.
XFS
XFS é um sistema de arquivos muito rápido na gravação. Foi desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado o código fonte. Considerado um dos melhores sistemas de arquivos para banco de dados.
Possui journaling que vem com um robusto conjunto de funções e é otimizado para escalabilidade. Entretanto é recomendado usar este sistema de arquivos em sistemas rodando Linux com controladoras SCSI e/ou armazenamento em canais de fibra e fonte de energia sem interrupção. Eu também explico, o XFS tem grande agilidade pois faz muito cache de disco em memória ram e caso haja um desligamento incorreto: A memória RAM é volátil, bye bye informações. =)
Ele também usa journaling, e foi adicionado ao Linux recentemente.
Fat32
O Fat32 utiliza 32bits pra armazenamento de arquivos (2^32), o que faz que cada arquivo não possa ultrapassar 4GB. Fat32 é um sistema de arquivos rápido porém sem controle nenhum de permissão, quota e etc. Facilmente é fragmentado, é instável, dá bad cluster e todas as facilidades que a Microsoft te oferece.
NTFS
O NTFS (New Technology File System) foi feito baseado no HPFS, que a IBM usava no OS/2 (High Performance File System, que na verdade não tem tanta performance assim). Em ambiente Windons ele é o nirvana dos file systens, visto que a Microsoft anunciou, anunciou, anunciou e matou o WinFS antes mesmo do lançamento. Foi desenhado para acompanhar os Microsoft Windons série NT (3.5, 4, 2000, ChisPê, 2003 e Vista).
O NTFS não tem uma Fat (tabela de alocação de arquivos). Afinal, haviam vários virus que destruiam a Fat do Fat16 e Fat32. Então, cada arquivo tem sua própria Fat ao invés de haver uma só pra partição.
FAT, eu explico outra vez: File Alocation Table (Tabela de Alocação de Arquivos). A grosso modo é um índice, onde mostra a localização de cada arquivo no corpo da partição para o cabeçote ir buscar, ao invés de ter que procurar em um por um. Quando a Fat era apagada por vírus ou algum outro problema, o conteúdo do HD continuava no corpo das partições, mas sem o índice ele não encontrava nada, tchau arBquivos! Muitos usavam o File Recover, eu nunca tive tanta sorte.
Enfim, isso é interessante, mas baixa o desempenho do sistema de arquivos. Se aliar outras perfumarias que há no NTFS e em outros file systens, como compactação de dados, encriptação, quota pra usuários e cia, usar o seu ChisPê exigirá uma dose de paciência, e caso um vírus ataque o HD como de praxe, recuperar os dados será uma coisa ainda mais complicada.
Algumas outras informações sobre o NTFS: Os blocos são de 512B (sim, não desperdiça espaço e quase não fragmenta, contrariamente ao Fat32) e castiga o cabeçote do HD, não há limite para tamanho de arquivos e a cada “grande versão” do Microsoft Windons há uma atualização do mesmo file system, e chega por hoje
Então é isso. Vou descansar um pouco pois tô meio cansado do trabalho. Abraço pra todos e agradeço aos comentários que tenho recebido, apesar de eu não ter tido tempo pra responder eles costumam me inspirar. =)
Stay safe,
Lucas Timm.