Warning: Invalid argument supplied for foreach() in /home/hugodoria/hdoria.archlinux-br.org/blog/wp-includes/classes.php on line 255
Migrando do ext3 para o ext4 | Hugo Doria

Migrando do ext3 para o ext4

O kernel 2.6.28 já chegou no repositório oficial do Arch e, junto com ele, o ext4. Novas instalações já podem ser feitas usando este filesystem e quem ainda usa ext3 pode migrar para o ext4 facilmente. Eu já migrei e recomendo. :) Tudo o que você precisa é do kernel 2.6.28 e rodar uns 3 comandos para sua partição, que deve estar desmontada. Vamos lá:

NOTA: Seguindo este post a migração é feita sem formatação e seus dados NÃO serão perdidos. Entretanto todos os seus arquivos antigos continuarão sendo mapeados do jeito antigo (ext3), apenas os novos usarão o novo método. Por causa disso seu ganho de performance, por enquanto, não será tão grande.

Mesmo com este pequeno "problema" vale a pena migrar para ext4. A próxima versão do kernel virá com o desfragmentador online do ext4 e ele será o responsável por migrar seus arquivos antigos para o novo método.

Para migrar seu instalação  para ext4 faça, para cada partição que usa o ext3:

# umount /dev/particao

# tune2fs -O extents,uninit_bg,dir_index /dev/particao

# fsck -pf /dev/particao

Exemplo:

# umount /dev/sda2

# tune2fs -O extents,uninit_bg,dir_index /dev/sda2

# fsck -pf /dev/sda2

UPDATE: Algumas pessoas perguntaram nos comentários como migrar a partição raiz, já que esta não pode ser desmontada enquanto se usa o sistema. Realmente isso gera uma certa dúvida, mas existe algumas maneiras de se fazer isso. A mais prática, talvez, seja iniciar o sistema em modo single e rodar os comandos a partir de lá. Para isso faça:

  1. Reinicie seu sistema.
  2. Na tela do Grub aperte a tecla E, para editar a entrada que contém o kernel padrão do Arch (não use a fallback).
  3. Procure a linha que começa com kernel. Exemplo:
    kernel /boot/vmlinuz26 root=/dev/sda2 ro
  4. Aperte a tecla E novamente.
  5. No final da linha adicione o número 1. A entrada vai ficar assim:
    kernel /boot/vmlinuz26 root=/dev/sda2 ro 1
  6. Aperte ENTER para salvar sua mudança
  7. Aperte a tecla b, para dar boot

O sistema vai começar a iniciar e em um determinado momento ele pedirá a senha de root. Algo como:

Give the root password for maintenance.

Digite sua senha. Agora você poderá desmontar sua partição raíz e executar a migração para ext4 normalmente (com os comandos que coloquei no inicio do post).

Depois de tudo edite o arquivo /etc/fstab e troque os campos "ext3" por "ext4" (sem as aspas, claro) nas partições que você migrou.

No Arch, ainda é preciso um passo adicional (não sei se precisa em outras distros):

# mkinitcpio -g /boot/kernel26.img

O comando acima irá gerar a nova imagem do kernel com os devidos módulos. Agora é só reiniciar o seu sistema e curtir o novo filesystem. :-)

Depois de reiniciado você pode conferir se suas partições estão usando ext4 digitando:

# mount

A saída será parecida com essa:

/dev/sda2 on / type ext4 (rw)
/dev/sda4 on /media/backup type ext4 (rw)
/dev/sda3 on /home type ext4 (rw)

É isso. Para maiores informações visite:

http://andrem.wordpress.com/2008/12/26/ext4/

http://kernelnewbies.org/Ext4

UPDATE2: No meio bit há um resumo de um artigo comparando o ext4 com outros filesystems (sim, às vezes aparecem bons artigos no meio bit. Nem tudo lá é {win,apple,free}tard).



33 Responses to “Migrando do ext3 para o ext4”

  1. Phillipe disse:

    Opa! Muito bom o artigo Hugo!
    Agora deixa eu te perguntar uma coisinha….
    Sabe se tem como migrar de uma partição Reiserfs ou XFS para o Ext4???

    Vlw!

  2. André Gondim disse:

    Você já fez com êxito, fiz os passos no Ubuntu e crash geral… =/ Só não é necessário esse último passo que você disse.

    Abraços!! ;)

  3. Wendel Matheus disse:

    Olá Hugo.

    Segui os passos e migrei duas partições de ext3 para ext4. Só me resta uma dúvida:

    Como migrar a partição onde está montada a /, sendo que essa não pode ser desmontada enquanto o sistema estiver sendo usado?

  4. crimeboy disse:

    Sensacional! :D assim q puder faco as atualizacoes na maquina, tah faltando uns tutorias de python!!!! :D

  5. E como a gente faz para migrar a partição root para o Ext4? Imagino que seja o caso de usar um live CD atualizado. Alguma sugestão?

  6. Rafael Gomes disse:

    E os dados? perde né? :P

  7. Rafael, você não perde os dados da partição ao migrar de ext3 para ext4. Na verdade, você nem reformata a partição, apenas ativa alguns recursos que fazem a diferença entre uma versão e outra.

  8. RodrigoFSS disse:

    Olá Hugo. Muito boa a sua dica, ela funcionou perfeitamente e o meu Arch está melhor ainda com esse novo sistema de arquivos!!!
    Porém, tenho uma dúvida. Eu tive que reinstalar o WinVista (por causa do meu vício em jogos!!! hehehe) e perdí o Grub. Quando tentei reinstála-lo eu não obtive êxito, visto que minhas partição raiz e /Home possuem o sistema de arquivos Ext4 e não mais Ext3 ( o que impossibilita a instalação do Grub via LiveCD como eu sempre fiz, devido ao fato do LiveCD não reconhecer o ext4 como sistema de arquivos) No mais, alguma dica de como proceder para instalar novamente o Grub para que o meu Arch(ext4) possa ser iniciado?
    Muito obrigado pela atenção!!!

  9. RickDiamond disse:

    Eu quero! Só preciso arrumar um jeito de migrar a minha partição root de ReiserFS para EXT4. A partição /home é fácil.

  10. RickDiamond disse:

    Eu vou arriscar. Pelos testes, parece bem melhor que o ReiserFS, que usava até então. F*** vai ser migrar a partição root.

  11. Hugo, ouvi dizer que o grub não boota partições ext4, é verdade?

    Se sim, o grub2 pode ser usado sem problemas?

  12. Alessandro disse:

    Leonardo,

    é só verificar a diferença entre as versões 0.97-14 e 0.97-15:
    http://repos.archlinux.org/viewvc.cgi/grub/repos/core-i686/PKGBUILD?r1=18955&r2=22874

    Eles adicionaram o patch para o grub legacy suportar ext4.

  13. rkixa disse:

    Boas,
    Alguem me pode dizer como é que eu desmonto a partição / ??

    cumps,
    rkixa

  14. Hugo Doria disse:

    @Phillipe,

    Não sei te dizer ao certo, mas acho que só reformatando a partição.

    @Wendel, @Leonardo Fontenelle, @rkixa

    Já atualizei o post mostrando como migrar a partição raiz.

    @RodrigoFSS

    Já te responderam na la lista né?

    @Rafael Gomes

    Nem perde os dados. Não se preocupe.

    @Leonardo Schaffer

    O grub foi patcheado para suportar ext4. Se quiser, você também pode usar o grub2.

  15. Alessandro e Hugo, obrigado!

    Já to com ext4 aqui, só espero estar com tudo certo.
    Eu bootei em single, desmontei a / e rodei os dois primeiros comandos.
    Mas depois não montava de volta (pois não atualizei o fstab antes de desmontar) e então não pude rodar o mkinitcpio.

    Baixei o RIPLinux que foi o único LiveCD que achei com o 2.6.28 e rodei o mkinitcpio por ele. Mas ele acusava falta do /lib/modules/2.6.28
    (Hugo, não deveria ser mkinitcpio -k 2.6.28-ARCH -g /boot/kernel26 ?)
    Acabei resolvendo com chroot e pacman -S kernel26

  16. Alessandro disse:

    Tentei fazer a conversão da pasta root, mas na hora que vai executar o comando “mkinitcpio -g /boot/kernel26.img” dá um monte de erro falando que está faltando arquivo e o sistema está em somente leitura.
    Tentei reiniciar e deu kernel panic. Reiniciei de novo, escolhi o kernel fallback e fiz o mkinitcpio e funcionou.

  17. Alessandro disse:

    Atualizando para o kernel 2.6.28.1 o grub não consegue mais bootar nem pelo normal nem pelo fallback. Dá o seguinte erro:

    invalid or unsupported executable format

    • Hugo Doria disse:

      Engraçado,

      Dá primeira vez que eu instalei o kernel 2.6.28.1 também tive este problema. O jeito foi reinstalar o kernel e rodar o grub-install /dev/XXX novamente.

      Logo em seguida fiz o teste em outra máquina e funcionou de primeira. Não sei o que aconteceu.

  18. Alessandro, eu atualizei aqui e tá fazendo boot normalmente.

  19. Tobias disse:

    Também não estou mais conseguindo bootar, mesmo erro que o alessandro relatou. Como reinstalo o kernel sem conseguir dar boot? Live-cd?

    • tobias disse:

      Consegui resolver. Baixei o live-cd chaox-ng (para o meu note hp precisei adicionar apci=off para bootar) montei a partição raiz em /mnt e reinstalei o grub (grub-install –root-directory=/mnt /dev/sda). Acho que o problema foi a não atualização do grub. Fica a dica.

      • Alessandro disse:

        Tentei fazer com o systemrecuecd, porém não deu certo. Parece que a versão do grub não está patcheada para suportar ext4. Vou tentar com o chaox-ng e posto o resultado aqui.

        • Alessandro disse:

          Depois de uma longa briga deu certo aqui.
          Primeiramente eu não reparei que tinha um espaço entre o /mnt e o /dev/sda. Fiquei quebrando a cabeça um tempão com isso, já que não existe devices na partição montada.
          Já rodando o comando certo apareceu o seguinte erro:
          /dev/sda does not have any corresponding BIOS drive
          Procurando na internet, achei um lugar que fala para dar um recheck. Portanto fiz o comando:
          grub-install –root-directory=/mnt –recheck /dev/sda
          e deu certo.
          Valeu a todos pela ajuda.

  20. Phillipe disse:

    Valeu Hugo!

    Vou ver o que faço depois!

    Acho que vou reinstalar meu sistema de novo mesmo!

  21. Alessandro disse:

    Para quem quiser fazer com o SystemRescueCD (v. 1.0.4) pode tentar o procedimento descrito na wiki:
    http://wiki.archlinux.org/index.php/Ext4#GRUB_Error_13
    Ele se utiliza do chroot para executar o grub-install do archlinux e tem uns passos a mais, onde ele monta a pasta /dev dentro do chroot.

  22. Adilson disse:

    Aqui estou tendo problemas para da r o boot no meu debian kernel-2.6.28, tenho que montar o hd6 onde está montado o debian por uma outra partição (mandriva) e mostra um erro no terminal veja:
    [root@localhost adilson]# mount -t ext4dev /dev/sda6 /mnt/sda6
    mount: wrong fs type, bad option, bad superblock on /dev/sda6,
    missing codepage or helper program, or other error
    In some cases useful info is found in syslog – try
    dmesg | tail or so

    root@localhost adilson]# dmesg | tail
    EXT4-fs: sda6: not marked OK to use with test code.

    Resolvo a montagem com esse comando:
    [[root@localhost adilson]# tune2fs -E test_fs /dev/sda6
    tune2fs 1.41.2 (02-Oct-2008)
    Setting test filesystem flag

    AGORA REINICIO E CONSIGO LOGAR NA PARTIÇÃO DEBIAN, MAS O PROBLEMA É QUE QUANDO DESLIGO O PC TENHO QUE REFAZER TUDO DE NOVO NO MANDRIVA.
    SERÁ QUE EXISTE ALGUMA FORMA DE COLOCAR ESSE COMANDO NO BOOT? tune2fs -E test_fs /dev/sda6
    OU EXISTE OUTRA MANEIRA DE CONCERTAR ISSO?

  23. srxys disse:

    E como fazer uma instalação do zero já em ext4 ?

    • RickMura disse:

      srxys, instalação do Zero acredito que somente se você estiver com uma distro com kernel 2.6.28, se não me engano as anteriores não possuem suporte para ext4.

      Instala em ext3 e faz o procedimento que o Hugo falou que fica bom.

  24. RickMura disse:

    Ao efetuar o procedimento no “/” após desmontar a partição ela se torna somente leitura, tornando assim impossível editar o fstab e rodar o mkinitcpio.

    Para resolver isso, simplesmente reinicie o PC e entre em modo fallback, altere o fstab, reinicie novamente em fallback e rode o mkinitcpio.

    Pelo menos pra mim foi assim que funcionou.

    Ta redondo aqui

    abraço
    RickMura

Leave a Reply