segunda-feira, 29 de junho de 2009

File System EXT4

Achei essa materia falando sobre o FS ext4, muitos já conhecem e até mesmo utilizam (até mesmo eu). Segue um abaixo um pouco mais sobre esse novo sistema de arquivos.

O Ext4 é o sucessor do Ext3 (Extended 3), o qual é o file system mais popular no mundo Linux atualmente.
Em outubro de 2008 o “EXPERIMENTAL” do Ext4 no Kernel Linux foi removido, fazendo com que as mais novas distribuições como Ubuntu 9.04 Alpha e Fedora 11 Beta já disponibilizassem a opção de criar uma partição de disco baseada neste novo FileSystem e possivelmente as versões finais virão com o Ext4 como padrão.

Agora, o Ext4 é melhor que o Ext3? Bem, pelo que eu pude ver nas pesquisas que fiz, o Ext4 trás bastante melhorias e várias NOVAS funcionalidades em relação ao Ext3.

Algumas melhorias:
-Suporte a arquivos individuais de 16TB, contra 2TB do Ext3 (Isso com Blocos de 4k)
-Suporte a Tamanho de Sistema de arquivos de 1EB (ExaByte), contra 8TB (Com blocos de 4k)

Agora as Principais novas funcionalidades do Ext4 são:

Extents (Medida):
É o nome da feature que descreve como os dados serão “estabelecidos” (controlados) no disco para armazenar as informações de um arquivo.
O Ext3 usa um método indireto para acompanhar os blocos usados por um arquivo em particular, isso significa que, para cada arquivo ele terá que acompanhar cada um dos blocos pertencentes àquele arquivo. Ex: um arquivo de 100MB vai usar 25,600 blocos de 4KB, então o ext3 terá que acompanhar todos os 25,600 blocos e como eles estão ordenados.. (Nossa!!)
Já o Ext4 usa um tipo de medida (extens), que é uma série contínua de blocos, dessa maneira o Ext4 precisará apenas da informação de início e quantos blocos mais serão usados por essa medida, na qual o arquivo está.
Ganho: menos fragmentação pelo fato do uso de blocos contínuos. Mais performance ao apagar arquivos, pois existem menos informações de controle.

Journaling Checksumming:
No Ext3 as alterações feitas no file system não são efetivadas em tempo real. De tempos em tempos o file system “commita” (confirma) essas mudanças. O Journal é a lista dessas mudanças. Quando o sistema de arquivos se recupera de um crash, ele simplesmente dá um outro commit nesse ultimo journal, com isso voltando à um estado consistente. O Journaling Checksumming (feature do Ext4) cria um checksum do journal, com isso é capaz de dizer se a área do journal está falhando. Melhora a confiabilidade.

Multi-Block Allocation:
O Ext3 aloca blocos para um arquivo um por vez. Para um arquivo grande, a função que faz essa alocação é chamada milhares de vezes. O Ext4 usa (como o próprio nome já diz) a alocação de múltiplos blocos por chamada da função. Isto melhora consideravelmente o desempenho, especialmente em arquivos grandes.

Delayed Allocation:
No Ext3, blocos são alocados tao logo quanto eles são necessários por uma função de escrita. Na verdade eles não vão ser precisos tão já, porque os dados podem estar no cache por algum tempo. Então o delayed allocation (atraso de alocação, em tradução livre) permite que os blocos possam ser alocados somente quando é realmente preciso escrever os dados. Isto pode realmente melhorar o desempenho porque durante esse tempo (esse “delay”) o alocador pode estar otimizando a alocação de blocos para minimizar a fragmentação e aumentar a performance.

Para não só ficar na ladainha, vou citar aqui um benchmark realizado por Jeffrey B. Layton, em 28 de Março 2009, para a revista Linux Magazine americana.

Ele criou quatro partições, duas usando Ext3 e duas usando Ext4. Em cada um dos Filesystems uma partição apelidada de DEFAULT e a outra PERFORMANCE.
A DEFAULT é uma partição formatada com os parâmetros default, na PERFORMANCE são algumas modificações na qual o objetivo é ilustrar o quanto você pode obter de performance realizando algumas alterações. Os comandos para a criação dos sistema de arquivos foram estes:

% mke2fs -t ext3 /dev/sda1
% mke2fs -t ext4 /dev/sdb1
% mke2fs -t ext3 /dev/sda1
% mke2fs -t ext4 /dev/sdb1

Na partição Ext3 PERFORMANCE os parâmetros de montagem foram estes:

/dev/sda1 /data_ext3 ext3 defaults,data=writeback,
noatime 0 0

Na Ext4 PERFORMANCE os parâmetros foram:

/dev/sdb1 /data_ext4 ext4 defaults,data=writeback,noatime,barrier=0,extents,journal_checksum 0 0

** Este “barrier=0″ seria para desabilitar a função barries, o qual é desabilitada no Ext3, para deixar as coisas mais ou menos iguais.

Seguem os resultados obtidos pelo Jeffrey:


Fonte: http://ensinar.wordpress.com/2009/04/04/novidades-do-filesystem-ext4/

Nenhum comentário: