Programação e Linux.

sexta-feira, 19 de junho de 2009

Ubuntu 9.04: Alinhando o Sistema de Arquivos com o Tamanho do erase block do SSD

Lendo sobre outras idéias na internet, eu estava otimizando o meu netbook e sem querer removi alguns arquivos importantes, então resolvi jogar tudo fora e instalar o Ubuntu 9.04 Netbook Remix, otimizando-o desde o início. Diferente do post anterior, não farei um howto completo, postarei aos poucos o que eu achar relevante.

A primeira otimização que pode ser feita antes de instalar o sistema é alinhar sistema de arquivos com o tamanho do erase block do SSD.

Na verdade eu não sei qual o tamanho do erase block do Eee PC 701 4G, mas em geral é um entre 16/32/64/128/256/512KB, usa-se tamanhos maiores para discos maiores, acredito que seja entre 16 e 32, mas sendo pessimista, vou usar 128KB para meu eee pc o que vai fazer com que eu perca alguns megabytes de espaço.

Antes de iniciar o instalador, abra um terminal e faça:

fdisk -H 224 -S 56 /dev/sda

Se preferir, use o cfdisk:

cfdisk -h 224 -s 56 /dev/sda

Faça no mínimo 2 partições, pois a primeira partição não pode ser alinhada, então usaremos uma partição que não sofre muitas alterações como /boot. Eu fiz 3 partições, /boot, / e /home.

Depois edite o /etc/mk2fs.conf e deixe a sessão default como esta:

[defaults]
base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr
blocksize = 4096
inode_size = 256
inode_ratio = 16384
stripe-width=32

Note: 32 * 4096 = 128k

Agora inicie a instalação normalmente, quando aparecer o particionador de discos, escolha o particionamento manual.

Diferente do feito com o ubuntu 8.10, desta vez vou usar o ext4 sem journal (ext4 sem journal é mais rápido que o ext2), mas por conta do kernel do Ubuntu 9.04 ser menor que o 2.6.29, não é possível montar um ext4 sem journal, então vamos remover o journal após a instalação.

Para cada partição (sda1, sda2 e sda3) clique em editar, escolha como sistema de arquivos o ext4, selecione a opção formatar e defina o ponto de montagem corretamente para cada uma.

Após a instalação, instale um kernel igual ou maior que o 2.6.29, eles podem ser obtidos aqui: http://kernel.ubuntu.com/~kernel-ppa/mainline/, até o presente momento deste artigo, o último disponível é o 2.6.30.

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.30/linux-headers-2.6.30-020630-generic_2.6.30-020630_i386.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.30/linux-image-2.6.30-020630-generic_2.6.30-020630_i386.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.30/linux-headers-2.6.30-020630_2.6.30-020630_all.deb
sudo dpkg -i linux-image-2.6.30-020630-generic_2.6.30-020630_i386.deb linux-headers-2.6.30-020630-generic_2.6.30-020630_i386.deb linux-headers-2.6.30-020630_2.6.30-020630_all.deb

Reinicie seu netbook para saber se está tudo ok.

Agora vamos remover o journal, mas antes, devido a um bug no blkid (não reconhece partições ext4 sem journal), precisamos deixar de usar os UUID para identificar as partições e usar o dispositivos reais (/dev/sdXn). Abra o arquivo /etc/fstab e altere cada UUID=something para /dev/sdXn.

A mesma coisa com o /boot/grub/menu.lst, procure pela linha
# kopt=root=UUID=5632f35f-792c-4997-b22a-7fe6a7050dfe ro

Troque UUID=something pela sua partição /, e adicione rootfstype=ext4, vai ficar mais ou menos assim:

# kopt=root=/dev/sda2 ro rootfstype=ext4

Agora entre em modo single, abra um terminal e faça:
sudo init 1

No menu de recuperação, escolha a opção root - drop to shell prompt. Agora faça:
umount -a
mount / -o remount,ro

Para cada partição remova o journal, no meu caso (sda1, sda2 e sda3) fica assim:
tune2fs -O ^has_journal /dev/sda1
tune2fs -O ^has_journal /dev/sda2
tune2fs -O ^has_journal /dev/sda3

Pronto, pode reiniciar o sistema e usurfruir de um sistema de arquivos rápido e que não diminui a vida útil do seu SSD.