Next Previous Contents

7. Het bestandssysteem

In deze sectie zal ik het woord ``bestandssysteem'' op twee verschillende manieren gebruiken. Je hebt bestandssystemen op diskpartities en andere devices, en je hebt het bestandssysteem zoals het wordt gepresenteerd door een draaiend Linux systeem. Onder Linux, ``koppel'' je een diskbestandssysteem aan het bestandssysteem van het systeem.

In de vorige sectie gaf ik al aan dat initscripts de bestandssystemen controleren en mounten. De opdrachten die dit doen zijn respectievelijk fsck en mount.

Een harddisk bestaat uit één grote ruimte welke je met enen en nullen kunt beschrijven. Een bestandssysteem legt hier een structuur op aan, en maakt het lijken als bestanden binnen directory's binnen directory's... Elk bestand wordt voorgesteld door een inode, wat aangeeft van wie het bestand is, wanneer het werd aangemaakt en waar de inhoud is te vinden. Ook directory's worden voorgesteld door inodes, maar deze geven aan waar de inodes van de bestanden te vinden in die directory. Als het systeem /home/greg/bigboobs.jpeg wil inlezen, dan zoekt het eerst naar de inode voor de rootdirectory / in het ``superblock'', dan zoekt het naar de inode voor de directory home in de inhoud van /, vervolgens zoekt het naar de inode voor de directory greg, dan de inode voor bigboobs.jpeg wat het zal aangeven welke diskblokken in te lezen.

Als we wat data aan het einde van een bestand toevoegen, kan het gebeuren dat de data is geschreven nog voor de inode is bijgewerkt om aan te geven dat de nieuwe blokken toebehoren aan het bestand, of vice versa. Als op dat moment de stroom uitvalt, zal het bestandssysteem beschadigd zijn. Dit is wat fsck tracht te detecteren en repareren.

De opdracht mount accepteert een bestandssysteem op een device, en voegt het toe aan de hiërarchie die je ziet wanneer je het systeem gebruikt. Gewoonlijk mount de kernel zijn root bestandssysteem voor alleen-lezen. De opdracht mount wordt gebruikt om het opnieuw te mounten voor lezen en schrijven nadat fsck heeft gecontroleerd dat het in orde is.

Linux biedt ook ondersteuning voor andere soorten bestandssystemen: msdos, vfat, minix enzovoort. De details van het specifieke soort bestandssysteem zijn afgeleid door het virtuele file system (VFS). Ik zal hier echter niet in detail op ingaan. Het wordt besproken in ``De Linux Kernel'' (zie De Linux Kernel voor een url)

7.1 Configuratie

Er zijn parameters voor de opdracht mke2fs waarmee ext2 bestandssystemen kunnen worden aangemaakt. Deze besturen de omvang van de blokken, het aantal inodes, enzovoort. Kijk in de manpage van mke2fs voor verdere details.

Wat waar op je bestandssysteem wordt gemount, wordt bestuurd door het bestand /etc/fstab. Ook hier is een manpage voor.

7.2 Oefeningen

Maak een zeer klein bestandssysteem aan, en bekijk het met een hex-viewer. Identificeer inodes, superblocks en bestandsinhoud.

Ik meen dat er tools bestaan die je een bestandssysteem grafisch tonen. Zoek er naar één, probeer het uit en email me de url en een voorbeschouwing!

Bekijk de code in de kernel van het ext2 bestandssysteem.

7.3 Meer informatie


Next Previous Contents