quinta-feira, 13 de maio de 2010

Migrando para o Ext4, o novo file system Linux

Migrando para o Ext4, o novo file system Linux

Todo mundo já ouviu falar do novo sistema de arquivos Ext4, o sucessor do velho e bom ext3. O ext4 ainda se encontra em fase de desenvolvimento e por isso ainda é chamando de ext4dev, mas a partir da versão do kernel 2.6.27 o filesystem atingiu uma boa maturidade, o que permite migrarmos aos poucos, mas sempre mantendo a cautela. =)

Algumas das melhorias do Ext4 em relação ao Ext3 são as seguintes:

* Melhorias na pré-alocação: Um programa usará um espaço do disco, mas não na hora da execução, então ele reserva o espaço que utilizará, fazendo uma pré-alocação, ou seja, ele guarda aquele espaço para o programa e ninguém mais poderá utilizar;
* Tempo de alocação estendido: O ext4 conseguirá segurar a alocação do espaço em disco até o último momento, isso aumentará a performance;
* Maior número de subdiretórios: No ext3 o limite de subdiretórios era de 32000, no Ext4 não há limites;
* Checksum do Journaling: É gerado um checksum do Journaling, garantindo uma restauração mais rápida e a prova de falhas.
* Desfragmentação On-Line: O ext3 deixava um pouquinho de fragmentação no disco, no ext4 não existe mais fragmentação, pois o ext4 vai desfragmentando enquanto os arquivos vão sendo alocados.
* Undelete: É uma ferramenta disponível no ext4 que impede que um arquivo seja apagado. Lembra dos atributos estendidos do ext3? É bem parecido.
* Checagem rápida do filesystem: A estrutura de organização de blocos permite que partes não usadas do disco sejam puladas, o que economiza muito tempo na checagem do filesystem.


Agora vamos para a instalação...

Git:

É preciso instalar o novo pacote do e2fsprogs e para isso utilizamos o git para baixar a nova versão diretamente do site do Kernel.org.

# wget http://www.kernel.org/pub/software/scm/git/git-1.6.0.tar.bz2
# tar -jxvf git-1.6.0.tar.bz2
# cd git-1.6.0
# ./configure
# make
# make install

e2fsprogs:

# git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
# cd e2fsprogs/
# ./configure
# make
# make install

Se você verificar perceberá que apareceram dois novos executáveis: mkfs.ext4 e mkfs.ext4fs, mas calma, ainda falta compilar o kernel. =)

Compilando o kernel para suporte ao Ext4:

# wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.8.tar.bz2
# tar -jxvf linux-2.6.27.8.tar.bz2 -C /usr/src
# ln -s /usr/src/linux-2.6.27.8 /usr/src/linux
# cd /usr/src/linux
# cp /boot/config-xx.xxx.xx /usr/src/linux/.config
# make menuconfig

Habilite as seguintes opções:

File systems ->
Ext4dev/ext4 extended fs support development (EXPERIMENTAL)

Opcional:

Ext4dev extended attributes
Ext4dev POSIX Access Control Lists
Ext4dev Security Labels

# make bzImage
# make modules
# make modules_install

# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.27.8
# cp System.map /boot/System.map-2.6.27.8
# mkinitrd /boot/initrd-2.6.27.8 2.6.27.8 (Utilizei o Centos nessa compilação, para gerar o initrd no Debian utilize o parâmetro -o seguido do destino, mkinitrd -o /boot/initrd-2.6.27.8 2.6.27.8)
# cp .config /boot/config-2.6.27.8

Editando o Grub:

# cd /boot/grub/
# vi menu.lst

title CentOs - Ext4
root(hd0,0)
kernel /boot/vmlinuz-2.6.27.8 ro root=LABEL=/
initrd /boot/initrd-2.6.27.8

Calma, estamos quase lá. Vamos rebootar o sistema e escolher o novo kernel para o boot.

Com o novo kernel, verifique se o módulo do ext4 foi carregado, isso se você compilou ele como módulo.

# lsmod | grep ext4

Se não carregou...

# modprobe ext4dev

Formatando uma partição:

# mkfs.ext4dev /dev/sda?

ou

# mkfs.ext4 /dev/sda?

Tente montar a nova partição formatada com o ext4:

# mount -t ext4dev /dev/sda? /mnt

Se o Linux retornar o seguinte erro no dmesg:

[ 6289.554461] EXT4-fs: sdb1: not marked OK to use with test code

Utilize o tune2fs para resolver o problema:

# tune2fs -E test_fs /dev/sdb1

Pronto, tente montar novamente e verifique...

# mount -t ext4dev /dev/sda? /mnt
# mount
/dev/sdb1 on /mnt type ext4dev (rw)

Agora divirta-se com os testes e beanchmarks. Vale a pena deixar um pequena partição para ir se familiarizando com o futuro sistema de arquivos padrão do Linux. =)


Autor: Andre Luiz Facina

Nenhum comentário:

Postar um comentário