perjantai 26. huhtikuuta 2013

Linux ja SSD optimointi

Toiset käyttää SSD-levyä kuten perinteistä kiintolevyä, mutta jos levy on käyttöjärjestelmälevynä ja SSD:ssä on kuitenkin rajallinen kirjoituskertojen määrä niin ei siitä voi haittaakaan olla hieman optimoida levylle tekemiä kirjoituksia vähemmäksi.
Tässä on temput mitä itse tein Linux Mintin kanssa.

Ennen asennusta livelinux GPartedilla tai vastaavalla osioidaan levy ext4 -formaattiin ja sitten terminaalissa poistaa journalointi käytöstä
    $ tune2fs -O ^has_journal /dev/sdaX        #korvaa X levyn numerolla, esim /dev/sda1
    $ fsck -fy /dev/sdaX        #korjaa osion virheet, ilman tätä järjestelmä ei käynnisty



--> /etc/fstab <--

SSD-levyn liitosasetuksiin noatime ja discard -asetus
 * noatime kieltää tiedostojärjestelmää päivittämästä levylle tietoa siitä, milloin tiedosto on viimeksi avattu (oletko joskus tarvinnut tätä tietoa..?).
 * discard ottaa käyttöön erityisesti SSD-levyjä varten kehitetyn TRIM-komennon, joka vähentää levyn kirjoituksia normaalissa käytössä. Vaatii vähintään 2.6.33 kernelin.

    UUID=2e0c3ea7-5cb3-499e-8542-315946ab1ef2    /    ext4    noatime,discard,errors=remount-ro    0    1

Tmpfs-osiolla olevia tietoja pidetään tietokoneen keskusmuistissa aina, kun se on mahdollista, ja vain muistin käydessä vähiin tai esimerkiksi siirryttäessä lepotilaan tiedot siirretään SSD-muistille. Siirretään siis log- ja tmp-kansiot tmpfs-osiolle.


""
tmpfs    /var/log    tmpfs    defaults,noatime,mode=0775    0    0
tmpfs    /var/tmp    tmpfs    defaults,noatime,mode=1777    0    0
tmpfs    /tmp        tmpfs    defaults,noatime,mode=1777    0    0

""

--> /etc/rc.local <--

Lokitiedostoja ylläpitävä sysklogd ei välttämättä osaa käsitellä oikein tilannetta, jossa /var/log-hakemisto on tyhjä. Koska siirsimme sen äsken tmpfs osiolle, joka tyhjenee aina kun koneen sammuttaa, tämä scripti tekee koneen käynnistyessä /var/log -kansioon hakemistorakenteen. Lisää se ennen "exit 0" kohtaa

""

# you may want to add more folders to be checked/created to this list:
for dir in apparmor apt ConsoleKit cups dist-upgrade fsck gdm installer news ntpstats samba speech-dispatcher unattended-upgrades; do
  if [ ! -e /var/log/$dir ] ; then
    mkdir /var/log/$dir
  fi
done

""

--> /etc/default/grub <--

Muokkaa riville "elevator=.." -> "..=deadline"
 * Deadline scheduling algorithm places I/O requests in a priority queue so each is guaranteed to be ran within a certain time. It is often used in real-time operating systems.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=deadline"

Päivitetään vielä grub
    $ sudo update-grub


--> /etc/sysctl.conf <--

Swappi osion käytön määritys 0-100 välillä. 0 käyttää swappia vain kun muisti on aivan lopussa, 100 käyttää swappia jatkuvasti (jota emme halua).
Lisää rivi tiedoston loppuun.

vm.swappiness=10


--> Firefox profiili <--


Tämä ohje on kopioitu linux wikistä kokonaisuudessaan, joten kiitos sen kirjoittajalle.

Firefox käyttää surffailun aikana melko paljon omaa tietokantaansa, joka sijaitsee .mozilla/firefox-hakemistossa. Tämän hakemiston siirtäminen tmpfs-osiolle nopeuttaa Firefoxia huomattavasti. Tällöin on kuitenkin muistettava tehdä sellaiset asetukset, että profiili otetaan talteen massamuistin puolelle koneen sammutuksen yhteydessä ja palautetaan se koneen käynnistyessä.

Aloitetaan varmuuskopioimalla Firefoxin profiili komennolla
    $ cp -R ~/.mozilla/firefox ~/.mozilla/firefox_backup

Seuraavaksi luodaan skripti, joka sammutuksen yhteydessä kopioi Firefoxin profiilin hakemistoon .mozilla/fi ja käynnistyksen yhteydessä palauttaa nämä tiedostot käyttäen rsync-synkronointisovellusta.
Luo tiedosto /etc/init.d/ffprofile ja kirjoita sen sisällöksi:

Huom! Korvaa tähän_käyttäjätunnuksesi

""

#!/bin/sh

error=0
tunnus=tähän_käyttäjätunnuksesi
case "$1" in
start)
    echo "Calling rsync -av --delete /home/$tunnus/.mozilla/fi/ /home/$tunnus/.mozilla/firefox/"
    rsync -av --delete /home/$tunnus/.mozilla/fi/ /home/$tunnus/.mozilla/firefox/
    exit $error
    ;;

stop)
    echo "Calling rsync -av --delete /home/$tunnus/.mozilla/firefox/ /home/$tunnus/.mozilla/fi/"
    rsync -av --delete /home/$tunnus/.mozilla/firefox/ /home/$tunnus/.mozilla/fi/
    chmod -t /home/$tunnus/.mozilla/fi/
    chmod og-w /home/$tunnus/.mozilla/fi/
    exit $error
    ;;

*)
    echo "Usage: /etc/init.d/ffprofile {start|stop}"
    exit 1
    ;;

esac

""

Anna tiedostolle myös suoritusoikeudet
     $ sudo chmod +x /etc/init.d/ffprofile

Seuraavaksi luodaan symboliset linkit tähän tiedostoon eri ajotasoille siirryttäessä läpikäytäviin /etc/rcX.d-hakemistoihin. Jotta synkronointi tehtäisiin sammutuksen ja uudelleenkäynnistyksen yhteydessä (ajotasot 0 ja 6), luodaan linkit komennoilla
    $ sudo ln -s /etc/init.d/ffprofile /etc/rc0.d/K01ffprofile
    $ sudo ln -s /etc/init.d/ffprofile /etc/rc6.d/K01ffprofile


Käynnistyksen yhteydessä taas siirrytään jakelusta riippuen eri ajotasolle. Debian-pohjaisissa jakeluissa (mm. miniläppäreissä usein käytetyssä Ubuntussa) se on 2, jolloin linkki luotaisiin komennolla
    $ sudo ln -s /etc/init.d/ffprofile /etc/rc2.d/S99ffprofile

Enää on selviydyttävä tapauksesta, jossa kone ei sammukaan puhtaasti, jolloin Firefoxin profiili jää päivittämättä levylle. Luodaan tätä varten ajastettu tehtävä, joka kopioi tunnin välein Firefoxin profiilin samaan paikkaan kuin yllä luodut skriptit. Tämä onnistuu luomalla tiedosto /etc/cron.hourly/ffprofile johon sisällöksi tulee:

Huom! Korvaa tähän_käyttäjätunnuksesi

""

#!/bin/sh
tunnus=tähän_käyttäjätunnuksesi
echo "Calling rsync -av --delete /home/$tunnus/.mozilla/firefox/ /home/$tunnus/.mozilla/fi/"
rsync -av --delete /home/$tunnus/.mozilla/firefox/ /home/$tunnus/.mozilla/fi/
chmod -t /home/$tunnus/.mozilla/fi/
chmod og-w /home/$tunnus/.mozilla/fi/

""

Nyt olemme valmiit siirtämään Firefoxin profiilin lopullisesti tmpfs:lle. Lisätään /etc/fstab-asetustiedostoon rivi

tmpfs    /home/käyttäjätunnuksesesi/.mozilla/firefox    tmpfs    defaults    0    0

ja littämällä uusi tmpfs-osio komennolla
    $ sudo mount -a

Kopioidaan tämän jälkeen vielä vanha profiili paikoilleen komennolla
    $ cp -R ~/.mozilla/firefox_backup ~/.mozilla/firefox



Edit: typo

Ei kommentteja:

Lähetä kommentti