Otimizando discos SSD no Ubuntu

Uso de discos SSD em Netbooks

IMPORTANTE: Apenas realize estas configurações se você estiver utilizando um disco SSD!! Caso contrário você terá resultados negativos!

A maioria das informações contidas aqui foram retiradas de: Wiki Ubuntu – AspireOne Community Ubuntu Documentation
E http://linux.eduardosilva.eti.br/otimizando-o-uso-de-discos-ssd-em-netboo

Nosso objetivo então é reduzir ao máximo o uso do disco SSD para aumentar a durabilidade e de quebra tentar aumentar a performance.

1) Utilizar preferencialmente sistema de arquivos ext2 ou Reisefs (ou outro sistema sem journaling)

Durante a instalação escolhe sistemas de Arquivos em Journaling para evitar o uso de gravação de Logs no disco (quanto mens gravação nos SSDs melhor!)

2) É muito recomendável que a memória swap seja desativada durante a instalação, evitando escritas em demasia no disco e comprometendo sua vida útil. Se você acha que ficou com pouca memória, compre um pente de 1GB que está relativamente barato. Ou implemente uma SWAP utilizando um pedaço de um disco externo via USB :P

3) Montar o SSD com o parâmetro noatime
Resumindo de forma grosseira, a cada vez que você abre um arquivo, este é alterado para receber a data do último acesso. Montar uma partição com o parâmetro noatime, significa que dizer para o kernel não gravar os dados do último acesso no arquivo. Com isto, um arquivo só receberá um ciclo de gravação se for efetivamente alterado.

Edite o arquivo /etc/fstab (sudo nano /etc/fstab) e troque a opção “relatime” para “noatime”. The line for the root partition should then be something like:

Seu fstab ficará “mais ou menos” assim:

UUID=f03e1c59-83d2-42e7-81c4-2e875132254d / ext2 noatime,errors=remount-ro 0 1

4) noop I/O scheduler
Passaremos o parâmetro “elevator=noop” para o kernel durante o processo de boot. Este parâmetro serve para informar o kernel que ele não deve utilizar as otimizações para discos convencionais, as informações em um disco normal, não são gravadas em sequência otimizando a velocidade de leitura e gravação em discos convencionais. Como estamos utilizando um SSD, devemos adicionar este parâmetro ao kernel, pois neste caso não importa a ordem que os dados ficam armazenados. Após esta modificação, você irá perceber que o linux ficou um pouco mais rápido.

Edite /boot/grub/menu.lst usando o seu editor favorito e adicione “elevator=noop” como uma opção do Kernel default.

Seu arquivo deverá ficar mais ou menos como este exemplo:

title Ubuntu 9.04, kernel 2.6.28-11-generic
uuid b9b197c5-7a76-4273-bd85-bc4428bb5437
kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=b9b197c5-7a76-4273-bd85-bc4428bb5437 ro quiet splash elevator=noop
initrd /boot/initrd.img-2.6.28-11-generic
quiet

Para que estas opções permaneçam após a próxima atualização do Kernel, procure a linha

# defoptions=quiet splash

e adicione “elevator=noop” como parâmetro

# defoptions=elevator=noop quiet splash

4) RAM filesystem para os logs e temporários
Para diminuirmos ainda mais o uso do disco SSD, vamos montar os diretórios /var/log, /tmp e /var/tmp em um filesystem virtual, utilizando a memória RAM.
Desta forma, quando algum log ou arquivo for escrito nestes diretórios, as alterações ocorrerão apenas na RAM, sem escrita no disco
Importante lembrar que sempre que “desligar” ou reiniciar o computador, as informações destes diretórios irão desaparecer!

Abra novamente o arquivo /etc/fstab e insira as linhas:

tmpfs /var/log tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0

O sysklogd tem um problema em ser carregado com o diretório /var/log vazio, por este motivo, abra o arquivo /etc/init.d/sysklogd

Encontre a função:

fix_log_ownership()
for l in `syslogd-listfiles -a`
do
chown ${USER}:adm $l
done
}

…e substitua por esta:

fix_log_ownership()
{
for l in `syslogd-listfiles -a –news`
do
# Create directory for logfile if required
ldir=$(echo ${l} | sed ’s/[^\/]*$//g’)
if [ ! -e $ldir ] ; then
mkdir -p $ldir
fi
# Touch logfile and chown
touch $l && chown ${USER}:adm $l
done
}

Para reconstruir o resto da estrutura do diretório /var/log a cada reboot, adicione estas linhas ao /etc/rc.local antes da linha “exit 0″

for dir in apparmor apt ConsoleKit cups dist-upgrade fsck gdm installer news ntpstats samba unattended-upgrades ; do
if [ ! -e /var/log/$dir ] ; then
mkdir /var/log/$dir
fi
done

5) Desabilite o SCROLLKEEPER:
Normalmente não é utilizado, a não ser que você tenha uma boa justificativa para não o fazer, desative este recurso.

sudo mv /usr/bin/scrollkeeper-update /usr/bin/scrollkeeper-update.real
sudo ln -s /bin/true /usr/bin/scrollkeeper-update
sudo find /var/lib/scrollkeeper/ -name \*.xml -type f -exec rm -f ‘{}’ \;
sudo dpkg-divert –local –divert /usr/bin/scrollkeeper-update.real –add /usr/bin/scrollkeeper-update

6) POWER SAVING (Leitura Complementar apenas para o AspireOne!!!)
Edite novamente o arquivo /etc/rc.local e adicione estas linhas antes do exit 0;

# Economize the SSD
sysctl -w vm.swappiness=1 # Strongly discourage swapping
sysctl -w vm.vfs_cache_pressure=50 # Don’t shrink the inode cache aggressively

#Decrease power usage of USB while idle
[ -w /sys/bus/usb/devices/1-5/power/level ] && echo auto > /sys/bus/usb/devices/1-5/power/level
[ -w /sys/bus/usb/devices/5-5/power/level ] && echo auto > /sys/bus/usb/devices/5-5/power/level



Comments