Valid HTML 4.01! Valid CSS
Anybrowser

Navigatie:


Home - Linux beginners - Devices - mounten

logo

.



Home
Printbaar

Nieuws

Nieuwe distributie
Onlangs zijn we overgestapt op een nieuwe Linux-distributie, nl. Pardus Linux

Dit lijkt ons een prima distributie, zowel voor beginners als experts.



10. Devices, harde schijven, partities en mounten

Ondanks dat moderne distributies bij de installatie het indelen van o.a. de harde schijf netjes voor je regelen, is wat kennis over deze materie toch nodig om goed met Linux te kunnen werken.

In de meeste (desktop) computers zit tegenwoordig een (E)IDE harde schijf. De controller van de schijf (de IDE-controller) heeft meestal aansluitingen voor 4 IDE-apparaten (harde schijven, CDR, DVD, CDRW, enz.), onderverdeeld in 2 zgn. masters en 2 slaves. Soms wordt gebruik gemaakt van een SCSI-controller. Daarop worden, je gelooft het bijna niet, SCSI-apparaten aangesloten (naast harde schijven e.d. kunnen dat ook bv. scanners zijn). We gaan in dit verhaal echter uit van een IDE-interface.

Devices

De Linux kernel zorgt ervoor dat we hardware -apparaten, zoals harde schijven, aan kunnen spreken als waren het bestanden, de zgn. device-bestanden. Je vindt ze in de /dev-directory. Als je daar een ls -l geeft krijg je een wat afwijkende lijst van bestanden te zien.

Ten eerste zien we als eerste letter van veel bestanden daar een b of een c verschijnen. Deze letters staan voor block-, resp. character-device. Een harde schijf is een block-device: de data wordt in blokken opgeslagen. Als je iets naar een block-device schrijft wordt de data eerst in een buffer opgeslagen. Bij character-devices (zoals het toetsenbord) gebeurt dat niet.

Verder zie je, in plaats van de bestandsgrootte, 2 getallen staan. Dit zijn resp. de major en minor devicenummers. Deze getallen zijn eigenlijk belangrijker dan de bestandsnaam, want de kernel kijkt alleen naar de devicenummers. Je zou een devicebestand kunnen maken voor je harde schijf met de naam /dev/malle_pietje, als je er maar de juiste major- en minor devicenummers aan koppelt. Hoe je dit moet doen, dat is niet iets voor beginners, bovendien ligt het nog wat ingewikkelder dan hier beschreven...

Er zijn echter wat afspraken gemaakt over de benaming van de device-bestanden. Zo worden de 4 mogelijke ide-apparaten hda, hdb, hdc en hdd genoemd:

Het apparaat op de master van de eerste IDE-controller heet /dev/hda
Het apparaat op de slave van de eerste IDE-controller heet /dev/hdb
Het apparaat op de master van de tweede IDE-controller heet /dev/hdc
Het apparaat op de slave van de tweede IDE-controller heet /dev/hdd.

Echter: met die benamingen wordt bij sommige distributies wel wat gerommeld. Zo zal een CD-ROM speler vaak op /dev/cdrom zitten. Dit bestand is dan een (soft) link naar het "echte" device- bestand.

Partities

Om het verhaal nog wat ingewikkelder te maken kan iedere harde schijf nog weer onderverdeeld worden in partities. Dat klinkt moeilijk, maar betekent (wat simplistisch gezegd) dat de harde schijf in stukken wordt verdeeld. Elk stuk wordt dan benaderd alsof het een aparte harde schijf is. Als je onder Windows je harde schijf zou verdelen in 3 partities, zouden die waarschijnlijk C:, D: en E: heten.

Voor het opdelen van een harde schijf in partities bestaan speciale programma's, waarvan de bekendste fdisk heet (ook bekend in de DOS en Windowswereld). Maar als beginner zou ik daar nog maar even afblijven, want je kunt er ook een hoop mee vernielen...! Als dit verhaal gelezen hebt, kun je de man- of infopages van fdisk er nog wel even op naslaan. Er bestaan nog wel meer programma's om te "rommelen" met de partitionering: diskdruid is er één en Mandrake kent diskdrake. Welke er bij jouw distributie zitten merk je meestal tijdens de installatie van die distro wel.

Een IDE-schijf kan onderverdeeld worden in maximaal 4 zgn. primaire partities. Soms is dat niet genoeg. Dan kan 1 van die primaire partities gebruikt worden als extended partitie. En op zo'n extended partitie kunnen weer vele zgn. logische partities gemaakt worden. Zo kan een IDE-schijf verdeeld worden in maximaal 64 partities (een SCSI-schijf in maximaal 16 partities).
Ingewikkelde materie, zeker voor beginners, maar even noodzakelijk.

Die onderverdeling van de harde schijf is terug te vinden in de /dev-directory. Voor de eerste harde schijf hebben de primaire partities de namen /dev/hda1 t/m /dev/hda4 en de logische partities /dev/hda5 en verder. Deze nummering geldt ook, als je alleen maar 1 primaire en 1 logische partitie hebt. Die heten dan hda1 en hda5. hda2 t/m hda4 bestaan dan niet. Dat wil niet zeggen, dat ze niet in de /dev-directory zijn terug te vinden, maar ze zijn dan niet "gekoppeld" aan de hardware (omdat die hardware dan niet bestaat...).

Waarom partitioneren?

Als je naast Linux ook nog Windows op je harde schijf hebt staan, dan is je harde schijf zo-wie-zo al gepartitioneerd. Ieder besturingssysteem heeft een eigen partitie nodig (hoewel er ook Linux distributies bestaan, die op een Windows harde schijf geinstalleerd kunnen worden, maar op dat soort exotica gaan we maar even niet in). Linux alleen heeft het liefst al 2 partities: een voor het "gewone" Linux bestandssysteem en een swap-partitie (op de swap komen we straks terug).

Maar er kunnen meer redenen zijn om je harde schijf te partitioneren:

  • Beveiliging: als een partitie door wat voor oorzaak dan ook onleesbaar zou worden, ben je alle data van die partitie kwijt. Als je de data verdeelt over meerdere partities, beperk je de schade.
  • Betere efficiency: bij het formatteren van een partitie kun je aangeven hoe groot de blokken moeten worden. Als je veel kleine bestanden hebt (bv. kleiner dan 1k) en je blokgrootte is 4k, dan kost ieder bestand te toch 4k (maximaal 1 bestand per blok), dus 3k verlies. Daarom kan het een goed idee zijn de blokgrootte aan te passen aan de gemiddelde grootte van de bestanden.
  • Datagroei in de hand houden. Bijvoorbeeld: Linux is een multi-user systeem. Dan kan het gebeuren, dat een gebruiker bijna alle ruimte van je harde schijf gebruikt, zodat de overigen weinig overhouden. Dit zou je kunnen voorkomen door elke gebruiker een eigen partitie te geven.

Mounten

In Windows wordt iedere partitie benaderd als een apart "volume". Onder Linux echter is het mogelijk een partitie te koppelen aan een bepaalde directory. Dit koppelen noemen we mounten, en dat doen we met de opdracht mount.

Laten we maar eens een voorbeeld nemen. De home-directory van normale gebruikers in Linux is /home. Als je inlognaam "piet" is, zal je home-directory normaal gesproken /home/piet zijn, en die van annie /home/annie. Nu zijn het juist die home-directories, die nog wel eens uit de hand willen lopen. Dit kun je voorkomen door de directory /home te koppelen aan een eigen partitie. Hij kan dan nooit groter worden dan de ruimte die die partitie heeft. Dat koppelen gaat als volgt (je moet meestal wel root of su zijn om dit te mogen doen...):

mount -t ext2 /dev/hda5 /home

Met de -t optie geef je aan om wat voor bestandssysteem het gaat (Windows kent vfat, Linux ext2, ext3, reiserfs, enz.). Hier komen we in een ander hoofdstuk nog op terug.
/dev/hda5 is hier de partitie waaran we de directory /home koppelen.

Pas op: als je Linux eerst helemaal op één partitie had staan en nu die mount maakt, dan ben je alles (even) kwijt wat onder je "oude" /home stond. Dus voer de opdracht niet echt uit, het is maar een voorbeeld. Na het ontkoppelen vind je de oude situatie gewoon weer terug.

Alles wat na het mounten naar de /home-directory geschreven wordt, komt nu terecht op de partitie /dev/hda5.

Om een mount ongedaan te maken gebruik je de opdracht umount (let op: zonder n na de u!):

umount /home of umount /dev/hda5

Je umount-opdracht kan dus wat korter zijn, want Linux weet wel wat aan wat gekoppeld zit. Dat kun je ook zien als je de opdracht mount geeft zonder argumenten:

# mount
/dev/hda2 on / type ext3 (rw)
/dev/hda5 on /home type ext2 (rw)
...

Je krijgt een opsomming van alle gemounte devices, met de directory waaraan ze gekoppeld zijn en nog wat nadere informatie.

Floppydisk

Ook je floppy moet je eerst mounten voor je er iets mee kunt doen. Meestal gebeurt dat op /mnt/floppy. Als je iets naar /mnt/floppy schrijft, zonder de diskette eerst gemount te hebben, dan komt dat bestand gewoon op je harde schijf te staan in de directory /mnt/floppy in plaats van op je floppy-disk.

Omdat een floppy ook een block-device is, waarvan de data dus gebufferd wordt, is het belangrijk je floppy eerst te umounten, voordat je de diskette eruit haalt. Bij umounten wordt de data uit de buffer alsnog naar de diskette geschreven. Je kunt dit ook bereiken zonder te umounten met de opdracht sync (kijk maar eens op de man-page van sync).

Als je werkt in KDE of Gnome zal bij de meeste distributies tegenwoordig het mounten van je floppy (en je CD-Rom e.d.) automatisch gaan. Lees daar de documentatie van je distributie maar even op na. Een floppy wordt meestal als vfat (windows) bestandssysteem geformatteerd. Om zo'n diskette te mounten geef je de opdracht

mount -t vfat /dev/fd0 /mnt/floppy

Hier is /dev/fd0 het device-bestand van je floppy-drive.

Nog een opmerking:
Als je floppy vermeld staat in je /etc/fstab, dan zou het kunnen, afhankelijk van de opties die verder in /etc/fstab staan, dat het mounten van een diskette door een gewone gebruiker gedaan kan worden, en dan met een kortere opdracht:

mount /mnt/floppy

Probeer maar eens of dat bij jouw distributie lukt...

Op het bestand /etc/fstab komen we in een later hoofdstuk nog wel terug.

Swap

Onder Linux wordt meestal gewerkt met een zgn. swap-partitie. Deze partitie is bedoeld als een soort uitbreiding of buffer van het RAM van je computer. Als de kernel op een gegeven moment meer geheugen nodig heeft dan je als RAM in je computer hebt zitten, zal hij proberen uit te wijken naar de swap-partitie. De kernel probeert dat op een intelligente manier te doen, door juist die delen van het geheugen naar swap te schrijven, die momenteel weinig gebruikt worden. Tenslotte is een harde schijf veel en veel trager dan je RAM...

Het is natuurlijk beter om te zorgen, dat je voldoende RAM in je computer hebt, maar zorg toch, voor alle zekerheid, maar voor wat swap-ruimte.

Over de grootte van de swap-partitie bestaat nogal wat discussie. Vroeger werd gesteld, dat je twee keer de hoeveelheid RAM als sawp moest hebben. Had je dus 32MB RAM, dan moest je swap (minimaal) 64MB zijn. Vroeger was de maximum (bruikbare) grootte van een swap-partitie 128MB, maar een moderne kernel (2.2 en later) kan nu tot wel 2GB aan.

Met de goedkope grote harde schijven van tegenwoordig hoef je niet al te zuinig te zijn bij het vaststellen van de grootte van de swap-partitie. Zelf houden we tegenwoordig de regel aan dat RAM + swap samen minimaal 1GB groot moeten zijn.

Resume

Zoals aan het begin van dit hoofdstuk gesteld, zullen bij de installatie van een moderne distributie de meeste keuzes m.b.t. partities e.d. wel door het installatie-programma genomen kunnen worden. Met de hier genoemde informatie kun je echter de zaak wat meer toespitsen op eigen wensen en ideen.

De opdrachten, die we in dit hoofdstuk behandeld hebben, zullen we hieronder nog even noemen. Kijk vooral de man- en infopages nog even na om er nog wat meer over te leren:

fdisk mount umount sync

Laatst herzien op 18-12-2006