De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Migrando para o Ext4

Colaboração: André Luiz Facina

Data de Publicação: 26 de December de 2008

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 irá usar um espaço do disco, mas não na hora da execução, então ele reserva o espaço que irá 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 extendido: O ext4 conseguirá segurar a alocação do espaço em disco até o último momento, isso irá aumentar a performance

  • Maior números de subdiretórios: No ext3 o limite de subdiretórios era de 32000 pastas, 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 atribuitos extendidos 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, irá perceber que apareceu dois novos executáveis: mkfs.ext4 e mkfs.ext4fs, mas calme, 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 paramentro -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, verifique se está montado

  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 =)

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de André Luiz Facina