Helder José da Silva (helderjsil@bol.com.br)
Este documento tem a intenção de transmitir informações a respeito de minha própria experiência em compilar um kernel com suporte a Ext3 e converter um filesystem Ext2 para Ext3.
Para quem ainda não ouviu falar, ext3 é um sistema de arquivos que utiliza um processo de gravação de arquivos denominado "journalize". Neste processo, o kernel mantém uma gravação prévia dos arquivos em separado, para depois efetivar a gravação dos arquivos. O sistema foi escrito inicialmente por Dr Stephen C. Tweedie para ao kernel 2.2 . Depois foi portado para o kernel 2.4 por Peter Braam, Andreas Dilger, Andrew Morton.
Como todos nós já sabemos, se o linux for, digamos mal desligado (falha de energia, travamentos, reset inesperado), o sistema ext2 não poderá montar o sistema de arquivos antes de ter sua integridade checada pelo e2fsck. O sistema ext2 tem, entre outras desvantagens, perda de tempo para levantar novamente o sistema, possibilidade de perda de dados, etc.
Com o sistema ext3 estas desvantagens foram eliminadas. Nos testes que fiz até agora, a recuperação do sistema se dá em segundos, independente do tamanho do hd ( no meu caso 20GB).
Quanto a integridade de dados, elá se dá de forma muito mais segura. Inicialmente você teria como optar pela forma de proteger seus dados, mas o ext3 trabalha com o modo default em data=ordered, que proporciona ao sistema uma segurança muito forte à integridade dos dados.Os dados recentemente escritos em arquivos nunca irão aparecer corrompidos após um acidente.
Apesar de estar escrevendo os dados mais de uma vez, o ext3 é mais rápido que o ext2, porque o sistema otimiza o movimento das cabeças do disco rígido.
E finalmente o que torna o sistema ext3 mais interessante, é a facilidade na conversão. Visto que em outros sistemas é necessário a recriar o filesystem, no ext3 esta transição se dá de forma simples, bastando apenas alguns comandos como veremos adiante.
* Fontes do kernel.
Todos os meus testes foram feitos como kernel da série 2.4, (especificamente 2.4.10). Por isto, gostaria de me referir a este kernel aqui, já que não posso transmitir nenhuma informação quanto a série 2.2 . Como já disse anteriormente, estou utilizando atualmente o kernel 2.4.10. Caso seja necessário conseguir os fontes, entre no endereço: www.kernel.org/pub/linux/kernel/v2.4/ e faça o download dos fontes do kernel. Descompacte o arquivo no seu diretório /usr/src. Neste diretório existe um link dinâmico que será destruido logo após você descompactar o arquivo. Renomeie então o diretório
# mv linux linux-2.4.XX
(onde XX é o complemento da versão do kernel baixado)
Recrie o link
# ln -s linux-2.4.XX linux
* Patch
Bom. Agora que você tem os fontes do kernel no lugar, você terá que baixar o patch. Certifique-se de fazer o download do patch correto. O patch está em http:www.uow.edu.au/~andrewm/linux/ext3/
Faça o download da ultima versão que está disponível em http:www.kernel.org/pub/linux/utils/
Descompate e compile os fontes. Siga as instruções do arquivo INSTALL que vem com o pacote. Este pacote contém os mais importantes comandos suportados pelo filesystem ext3 (mount e umount).
* Pacote e2fsprogs (versão >= 1.22)
Faça o download da última versão que está disponível em http:efsprogs.sourceforge.net2/
Descompacte e compile os fontes. Siga as instruções do arquivo INSTALL que vem com o pacote. Esta nova versão possui o comando mke2fs que suporta a criação do filesystem ext3 na partição nativa do linux.
# cp ext3-2.4-0.s.y.patch.gz # cd /usr/src # gunzip ext3-2.4-0.s.y.patch.gz # patch -p0 < ext3-2.4-0.s.y.patch # cd linux # make menuconfig
Selecione a primeira do menu "Code Maturity level Option". Entre nesta opção e selecione "Prompt for Development and/or incomplete code/drivers". No menu "filesystems", selecione a opção ext3. Selecione também a opção "JBD debugging support". Esta opção produzirá um diagnóstico se alguma coisa der errado. Você pode optar por compilar o ext3 no kernel ou como módulo. Compilar junto com o kernel facilitará as coisas se alguma coisa sair errado. (gostaria de enfatizar que já estou utilizando o filesysten ext3 e até agora não detectei nenhum erro nos testes que já fiz.). Se você estiver fazendo uma conversão, dê preferência para compilar o suporte com o kernel, e não como módulo.
Antes de compilar o kernel, edite o arquivo /etc/lilo.conf (caso você esteja utilizando o LILO) e aponte o novo kernel que será compilado. Caso esteja utilizando o GRUB edite /boot/grub/menu.lst. Veja o exemplo abaixo para o lilo:
image=/boot/vmlinuz-2.4.xx label=new root=/dev/hdax read-only
Neste exemplo, indicamos que imagem do novo kernel será carregada quando a opção new for digitada. Criar esta nova opção é muito interessante, pois se alguma coisa der errado, pois você terá a opção de carregar o kernel antigo.
Bom, depois disto, vá para o diretório /usr/src/linux. Digite então os seguintes comandos:
# make dep # make clean # make bzImage # make install # make modules # make modules_install
Um filesystem ext2 pode ser convertido para ext3 simplesmente criando-se o arquivo jornal. Para isto faça
tune2fs -j /dev/hdxx
Este comando liga o arquivo criado ao filesystem. A partir daí seu filesystem estará convertido. Esta operação tem que ser feita com o filesystem desmontado.
Para criar um novo filesystem, digite o seguinte.
mke2fs -j /dev/hdxx
Substitua hdxx pelo dispositivo onde ele deve ser criado. Note que este comando apaga todos os dados da partição indicada, portanto tenha cuidado. Se for o caso de uma conversão, o comando está descrito no item anterior. Esta operação tem que ser feita com o filesystem desmontado.
O programa e2fsck checa um filesystem na vigésima montagem, ou a cada 180 dias, mesmo que ele esteja marcado como limpo. Devido a forte segurança do filesystem ext3 pode ser uma boa idéia desabilitar esta checagem. Se você quiser esta opção basta digitar:
tune2fs -i 0 -c 0 /dev/hdxx
Este comando desabilitará a checagem. Esta operação tem que ser feita com o filesystem desmontado.
Mudando o arquivo fstab.
Não esqueça de mudar o filesystem no arquivo fstab. Edite o arquivo em /etc/fstab e mude as linhas como no exemplo abaixo:
/dev/hdxx / ext2 defaults 1 1
mude para
/dev/hdxx / ext3 defaults 1 1
Este documento possui citações diretas de alguns documentos que podem ser localizados em:
Mini how-to do próprio site onde você encontra os patchs: http://www.uow.edu.au/~andrewm/linux/ext3/ext3-usage.html
Boletim do vialinuxis: http://www.pcs.usp.br/~jkinoshi/bs/
Uma das grandes dificuldades que enfrentei, foi fazer um disquete de boot para transferir este filesystem. Aconselho a todos a tentarem fazer o seu próprio disquete, pois com certeza seus conhecimentos em linux aumentarão muito nesta tentativa. Não desanimem. Se não me engano, eu cheguei a resetar minha máquina umas 20 vezes para acertar o disquete. Para este caso de troca de filesystem, você terá que fazer seu próprio disquete, pois o kernel carregado a partir dele, deverá ter suporte ao filesystem ext3. Quem estiver interessado nesta aventura acesse o site da ldp: ldp-br.linuxdoc.org/documentos/comofazer/html/Bootdisk-HOWTO/Bootdisk-HOWTO.pt_BR.html
Lá você encontra um how-to sobre a criação de disquetes de boot.
Boa sorte a todos. Qualquer dúvida, correção ou observação a fazer para este mini-howto, por favor me enviem um email.
Helder José da Silva - helderjsil@bol.com.br
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.