Miten osioisin massamuistin

Linux.fista
Versio hetkellä 18. toukokuuta 2007 kello 00.40 – tehnyt Maakuth (keskustelu | muokkaukset) (typot)
Siirry navigaatioon Siirry hakuun

Unix-järjestelmistä periytyvä hierarkkinen hakemistorakenne lähti oletuksesta, että jokaiseen hakemistoon voitiin liittää oma kovalevy. Mikäli lisätilaa tarvittiin, uuteen hakemistoon voitiin aina liittää eli mountata (engl. mount) uusi levy. Tuollainen ratkaisu oli aika kallis, mutta silloiset Unix-koneet olivatkin miljoonien eurojen hintaisia, ja niitä oli käytössä vain suuryrityksissä ja yliopistoissa. Nykyisen kokoisten kovalevyjen yhteydessä tuollainen ajattelu tuntuu aika järjettömältä, mutta ratkaisut olivat erittäin vikasietoisia.

Kiintolevyä osioitaessa kannattaa aluksi miettiä, mihin käyttöön levytila on tulossa:

  • Tarvitaanko jatkossa lisätilaa?
  • Halutaanko vikasietoisuutta? (Tätä tulisi miettiä jo ennen kovalevyn ostamispäätöstä. Mikäli vikasietoisuutta tarvitaan, kannattaa rakentaa RAID-pohjainen levyjärjestelmä.)

Esimerkkiosioinnit 80 gigatavun kiintolevylle

Työpöytäkäytössä seuraavalla tavalla osioitaessa voi helposti vaihtaa Linux-jakelua, ilman että /home-osion sisältöä tarvitsee kopioida talteen esimerkiksi optiselle medialle tai toiselle levylle.

  • 10 Gt varataan juuriosiolle (liitoskohta /)
  • 0,5–3 Gt varataan virtuaalimuistille eli swapille (ei liitoskohtaa). Virtuaalimuistin minimimääräksi voidaan laskea 1 × keskusmuistin määrä + 10 %, mutta sen merkitys ei ole niin oleellinen nykyisin, kun muisti on halpaa. Mikäli kone on kovassa kuormituksessa ja muisti loppuu, järjestelmä alkaa vapauttaa sitä kirjoittamalla sisältöä virtuaalimuistiin. Mikäli virtuaalimuistikin loppuu, järjestelmä muuttuu käyttökelvottoman hitaaksi ja tästä tilasta toipuminen on hankalaa, joskaan ei mahdotonta. Erillisen swap-osion teko nopeuttaa jossain määrin virtuaalimuistin käyttöä, mutta nykyisin onnistuu hyvin myös erillisen swap-tiedoston käyttö, jolloin virtuaalimuistille käytettävä tila otetaan tavalliselta levyosiolta (yleensä juuriosio). Ks. Swap-tiedoston luominen.
  • 50–100 Mt varataan käynnistysosiolle (liitoskohta /boot), jonne tallennetaan käynnistyslatain ja ytimet. Tämä tosin ei ole nykyaikaisissa koneissa välttämätön.
  • Loput tilasta varataan home-osion käyttöön (liitoskohta /home). Tämän sisältö siis kannattaa säilyttää päivitettäessä tai uudelleen asennettaessa käyttöjärjestelmää.


Palvelinkäytössä seuraavanlainen osiointimalli on suositeltavampi:

  • 1 Gt varataan juuriosiolle (liitoskohta /)
  • 1 Gt varataan tmp-osiolle (liitoskohta /tmp)
  • 4–8 Gt varataan var-osiolle (liitoskohta /var)
  • 10–20 Gt varataan usr-osiolle (liitoskohta /usr)
  • 2 × keskusmuistin määrä varataan virtuaalimuistille eli swapille (ei liitoskohtaa)
  • 50 Mt varataan käynnistysosiolle (liitoskohta /boot)
  • loput varataan home-osiolle (liitoskohta /home).

Vinkkejä virittelijöille

Tietoturvan kannalta voi olla soveliaampaa käyttää tmpfs-tiedostojärjestelmää liitoskohtiin /tmp ja /var/tmp.

mount tmpfs /tmp -t tmpfs -o size=<koko megoina>m 
mount tmpfs /var/tmp -t tmpfs -o size=<koko megoina>m 

Tällöin näiden hakemistojen sisällöt tallentuvat vain virtuaalimuistiin joka tyhjenee, kun kone käynnistetään uudelleen. Näin varmistetaan, että esimerkiksi ssh-agent -ohjelman väliaikaistiedostot poistuvat levyiltä järjestelmän alasajon myötä. Voit halutessasi liittää nämä nosuid-, noexec-valinnoilla, jolloin niissä käännettyjä ohjelmia ei voi ajaa kukaan eikä niissä voi vaihtaa käyttäjä-id:tä (esim. su).

Älä varastoi tavaraa hakemistoihin /tmp tai /var/tmp. Mikäli niistä loppuu tila, kone voi pahimmassa tapauksessa kaatua.

Jos käytät Linuxia levypalvelimena ja levyjärjestelmänä on ext2 tai ext3, kannattaa tiputtaa tallennustilaosiosta pääkäyttäjälle varattu tila pois. Normaalisti mkfs-ohjelma varaa 5 % osion tilasta pääkäyttäjälle. Sitä tarvitaan järjestelmän toiminnan varmistamiseksi, mikäli levytila loppuu. Suuremmista varasto-osioista tuo 5 %:n varaus ei ole tarpeellista eikä järkevääkään, 1 Tb:n osiosta 5 % haukkaisi jo 50 gigatavua talletustilaa. Periaatteessa tuon 5 % tarvitsevat vain liitoskohdat /, /tmp, /usr ja /var. Tilanvaraus voidaan jättää pois antamalla mkfs-ohjelmalle parametriksi -m 0.

Käytettäessä isoja tiedostojärjestelmiä (esim. 200 gigatavua) ext2 tai ext3-tiedostojärjestelmällä inode-taulu vie jopa yli kymmenen gigatavua tilaa. Mikäli tiedostojärjestelmään tallennetaan suuria tiedostoja, ei inodeja välttämättä tarvita kymmeniä miljoonia. Inode-taulun kokoa voi säätää tiedostojärjestelmää luotaessa antamalla mkfs.ext3 -ohjelmalle parametrina -N inodejen määrä. On kuitenkin huomattava, että mikäli inodet loppuu, niitä saa lisää vain tekemällä tiedostojärjestelmä kokonaan uudestaan. Käytännössä inodeja tarvitaan saman verran kuin tiedostojärjestelmässä on tiedostoja. Esimerkiksi reiserfs:n kohdalla inodet luodaan tarpeen mukaan.

Jos verkossasi on levypalvelin, älä tee home-osiota työasemalle. Sen voi pitää mainiosti verkkolevyllä ja liittää käynnistettäessä NFS:n yli.