Bestandssysteem
Een bestandssysteem is een door het besturingssysteem van een computer verzorgde indeling van een opslagmedium (zoals een harde schijf). Het besturingssysteem gebruikt deze indeling om toegang tot een opslagmedium te verzorgen voor applicaties en zijn eigen gebruik, zodat data op het opslagmedium weggeschreven kan worden en ook weer teruggelezen.
Inhoud |
[bewerk] Toepassing van bestandssystemen
Op het laagste niveau (tussen besturingssysteem en hardware) is een bestandssysteem een vertaling van fysieke locaties op een opslagmedium (sectoren, cilinders, e.d.) in aaneengesloten verzamelingen data: van een aantal plaatsen op het opslagmedium bepaalt het bestandssysteem dat ze bij elkaar horen en één enkel datablok vormen.
Op het hoogste niveau, vanaf het besturingssysteem naar de applicaties die de diensten van het besturingssysteem gebruiken, is het bestandssysteem een verzameling datablokken die onderling geordend zijn. Qua datablokken valt te denken aan bestanden (aaneengesloten rijen bits die door een of meer toepassingen geïnterpreteerd worden en een betekenis toegekend krijgen), maar ook interne verwijzingen voor gebruik door het besturingssysteem zijn datablokken. De onderlinge ordening wordt vaak aangebracht in de vorm van groeperingen van bestanden genaamd directory's of folders of mappen.
[bewerk] Operaties op bestandssystemen
Een bestandsysteem is, in de loop der tijden, uitgegroeid tot één van de basisonderdelen van het besturingssysteem en computergebruik. Het is dan ook niet verbazend dat interactie met het bestandssysteem een centraal onderdeel is van vrijwel iedere applicatie. Daartoe biedt het besturingssysteem een aantal standaardoperaties aan op het bestandsysteem in de vorm van systeemfuncties. Normaal gesproken behoren de volgende functies tot die verzameling:
- Aanmaken van een bestand, al dan niet met een bepaalde grootte
- Uitbreiden van een bestand om er meer data in op te kunnen slaan
- Hernoemen van een bestand
- Kopiëren van een bestand
- Aanmaken van een nieuwe directory
- Hernoemen en verplaatsen van een directory
- Kopiëren van een directory
- Verplaatsen van een bestand over de directorystructuur
- Verwijderen van een bestandsnaam en het vrijgeven van de ervoor gereserveerde ruimte
- Verwijderen van een directory, al dan niet met inhoud
[bewerk] Implementatie van een bestandssysteem
Er zijn bijzonder veel mogelijke uitvoeringen van een bestandssysteem, ieder met eigen voor- en nadelen. Mogelijkheden variëren van het aanmaken van een enkele kaart van het systeem op een vaste plaats op het opslagmedium waaruit het besturingssysteem de locatie van alle bestanden en directory's leest tot een verdeling van het opslagmedium in een aantal op zichzelf staande bestandsblokken die het besturingssysteem aan een vlag herkent dan wel wiens locaties op het opslagmedium in een kleine kaart vastgelegd worden.
[bewerk] Journaling
Gegeven het grote belang van het bestandssysteem voor het functioneren van het besturingssysteem en alles wat daarmee samenhangt, is het van groot belang dat de integriteit van het bestandssysteem gewaarborgd blijft: de bestanden en directory's mogen niet door elkaar gaan lopen. Daarom zijn de meeste besturingssystemen uitgerust met gereedschappen om de integriteit van het bestandssysteem te verifiëren en fouten te verbeteren. Sommige besturingssystemen hebben deze functionaliteit geïntegreerd en voeren deze verificatie met regelmaat uit (in tegenstelling tot andere, die verificatie uitvoeren als de gebruiker of beheerder daarom vraagt).
Met de toename van grootte van opslagmedia in de laatste jaren zijn bestandssystemen ook veel groter geworden en beheren ze veel meer bestanden dan vroeger. De verificatie vergt dan ook veel tijd. Daarom is er een bepaalde klasse van bestandssystemen ontwikkeld, de zogenaamde journaling-bestandssystemen. Deze bestandssystemen koppelen de verzameling bestanden aan een logboek met operaties die op het systeem uitgevoerd zijn. Dit logboek slaat alle operaties op en geeft ook aan of deze operaties voltooid zijn of niet. De verificatie van het systeem wordt dan uitgevoerd door te verifiëren dat alle operaties correct beëindigd zijn. Dit is aanzienlijk efficiënter dan alle bestanden en directory's nalopen en verifiëren dat alles fysiek nog goed in elkaar zit. Het nadeel is echter dat dit alleen werkt als de operaties van het besturingssysteem en het bijwerken van het logboek gegarandeerd goed uitgevoerd worden. Dit houdt in dat het wegschrijven van het journal geen gebruik mag maken van caching wat als nadeel heeft dat journaling-bestandssystemen matig presteren wanneer er veel operaties plaatsvinden. Daarnaast betekent het dat journaling niet populair is bij (harde) real-time besturingssystemen en andere, kritische systemen – deze systemen zijn zo kritiek dat ze niet kunnen vertrouwen op een logboek (of andere methode die afleiding gebruikt) om de integriteit van het bestandssysteem te garanderen.
[bewerk] Soorten bestandssystemen
[bewerk] Schijfbestandssystemen
Een schijfbestandssysteem is een bestandssysteem bestemd voor het bewaren van bestanden op een datadrager, die direct of indirect met de computer verbonden is. Voorbeelden van schijfbestandssystemen zijn
- FAT (diskettes, harde schijven en memory sticks onder Windows)
- NTFS (harde schijven)
- HFS en HFS Plus (harde schijven onder Mac OS)
- ext2 (harde schijven)
- ISO 9660 (CD-ROM's, DVD's)
- ODS-5 (harde schijven onder VMS)
- UDF (CD-RW, dvd's)
- UnionFS
- ZFS
Hieronder volgt een meer gedetailleerd (onvolledig) overzicht van bestandssystemen voor diskettes en harde schijven. Het magic number (magische getal) van een bestandssysteem is een getal dat aan het begin van het opslagmedium opgenomen wordt, zodat softwaretools en andere programma's daaraan het type bestandssysteem kunnen herkennen.
Besturingssysteem | Magic number(s) (hexadecimaal) |
Bestandssysteem |
---|---|---|
OS/2 | 07h | OS/2 IFS/High Performance File System (HPFS) |
Linux | 83h | Extended File System (ext) |
83h | Second Extended File System (ext2) | |
83h | Third Extended File System (ext3) | |
83h | Reiser FS | |
83h | Reiser 4 | |
Microsoft Windows | 01h, 04h, 06h, 14h, 16h, 1eh | FAT12/FAT16 |
0bh, 0ch, 0dh, 0eh, 0fh, 1bh, 1ch | FAT32 | |
07h | New Technology File System (NTFS) |
Sommige besturingssystemen ondersteunen bestandssystemen die ontwikkeld zijn voor andere besturingssystemen:
- FAT12/FAT16,FAT32 worden ook ondersteund door Linux, maar ze zijn bij Windows geplaatst omdat ze hiervoor ontwikkeld zijn.
- NTFS wordt gedeeltelijk ondersteund door Linux (Linux kan bestanden op deze partities lezen, maar heeft meestal problemen met schrijven).
[bewerk] Netwerkbestandssystemen
Een netwerkbestandssysteem (ook een gedistribueerd bestandssysteem genoemd) is een bestandssysteem waar men toegang krijgt tot de bestanden via een netwerk, mogelijkerwijs vanaf verschillende computers. Voorbeelden zijn NFS, ZFS, CIFS, Lustre en Global File System.
[bewerk] Databasebestandssystemen
In plaats van een hiërarchische structuur te gebruiken, worden bij een databasebestandssysteem bestanden teruggevonden via hun karakteristieken, zoals bestandstype, onderwerp, auteur, of andere metadata. Het voorbeeld hiernaast toont een zoekopdracht naar "Films geregisseerd door Spielberg". Voorbeelden zijn BFS, GNOME Storage, en WinFS.