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. =)
Boa noite Ulisses_c,
Primeiramente, o ext3 e o reiserfs não são limitados a esses tamanhos máximos de arquivos, até pq aqui em casa eu tenho tanto partições com ext3, reiserfs e ext4, e manipulo sem dificuldades arquivos .isos de dvd, com tamanhos de 3G e 4G +ou-.
No link abaixo vc verá os limites de tamanho de arquivos dos principais filesystems:
http://www.h-online.com/open/The-Ext4-Linux-file-system--/features/113403
(está no final da página)
A respeito do limite que o kernel impõe sobre os tamanhos dos arquivos isso eu nunca ouvi falar, até pq isso depende da arquitetura do filesystem e não do kernel.
Sobre o uso do XFS para arquivos grandes realmente é verdade, pois ele tem melhor desempenho com arquivos maiores. O reiserfs tem melhor desempenho com arquivos menores. Uma observação, o XFS até onde eu conheço é muito mais fácil de corromper a estrutura do sistema de arquivos por causa de desligamentos incorretos, mas nada que o uso do bom e velho fsck (xfs_repair) não resolva =)
E para finalizar, com certeza absoluta vc não vai conseguir extrapolar esses limites definidos pelos sistemas de arquivos, até pq já vi servidor linux rodando com partições gigantes em storage utilizando ext3 e reiserfs e funciona sem nenhum problema. Nesse seu caso eu recomendo vc verificar o que será armazenado nesse seu disco e pesquisar na internet sobre os benchmark e dai sim escolher o melhor sistema de arquivos para se utilizar, com base em performance e segurança.
Abraço,
André.