Om bestanden op te slaan op een opslagvolume is een bestandssysteem nodig. De diverse soorten bestandssystemen hebben elk hun eigen voor- en nadelen. Een indexering.
Vrijwel alles wat we doen met computers werkt met bestanden (documenten, e-mails, plaatjes, films, audiobestanden, software, noem maar op). Die bestanden moeten op de een of andere manier worden opgeslagen. Over de manier waarop dat moet gebeuren, hebben door de computergeschiedenis heen verschillende mensen verschillende ideeën gehad. Er is immers nooit één manier om iets te doen.
De manier waarop we bestanden opslaan en organiseren om ze ook snel weer op te roepen, noemen we een bestandssysteem. In de pc-wereld was het allereerste bestandssysteem FAT (File Allocation Table). Zoals de naam al aangeeft, is dit een in wezen doodsimpel toewijzingssysteem. In een weinig georganiseerde tabel is terug te vinden waar directory's en allerlei bestanden zich bevinden. FAT kent nogal wat beperkingen, zeker naarmate opslagvolumes groter worden. Slimmere alternatieven werden dan ook bedacht om die beperkingen te ontstijgen. In de Windows-wereld werd gekozen voor FAT-32 en later NTFS (New Technology File System). Die twee worden nu nog steeds gebruikt.
Voor cd- en dvd-roms wordt een speciaal bestandssysteem gebruikt dat grotere volumes aankan én rekening houdt met het niet-beschrijfbare karakter van deze media. Apple verzon voor de Mac het bestandssysteem HFS (Hierarchical File System). MacOS X is onder de motorkap Unix en gebruikt een verbeterde versie van HFS met kenmerken van de bestandsystemen voor Unix en Linux. Die wereld kent heel wat meer bestandssystemen, van FAT tot XFS. Omdat Linux open source is, kan iedereen die dat wil immers een nieuw, 'beter' bestandssysteem uitvinden en introduceren.
De vele bestandssystemen hebben allemaal hun voor- en nadelen. Afhankelijk van het platform waar je mee werkt, is het mogelijk dat je op dit gebied weinig of geen keuze hebt. De grootste keuze krijg je alleszins bij Linux.
Data-indeling
Een bestandssysteem dient simpel gezegd om bestanden op te slaan en te organiseren. Naast pure bestanden kent negenennegentig procent van alle bestandssystemen ook directory's. Dat zijn mappen van bij elkaar horende bestanden.
Bestandssystemen bevatten echter heel wat meer informatie. Allereerst wordt natuurlijk de naam, al dan niet met extensie, bijgehouden. Andere soorten informatie zijn de bestandsomvang, allerlei tijdstippen van de data (zoals aanmaak en wijziging), eigenschappen (attribuutvlaggen), enzovoorts. Deze extra informatie noemen we de metadata. De inhoud van een bestand is de data, maar de metadata zegt dus iets over het bestand zelf. Gewoonlijk bevat de metadata ook een verwijzing naar de originele locatie van de bestandsdata. Het hangt van het specifieke bestandssysteem af hoe de andere locaties gevonden worden.
Het bestandssysteem houdt zelf een soort van database bij over de beschikbare ruimte op het opslagvolume en wat daarvan in gebruik is door welke bestanden. Hele slimme bestandssystemen zorgen er bovendien continu voor dat bestanden zo netjes mogelijk aaneengesloten worden opgeslagen. Als dat niet zo is, spreken we van fragmentatie. Fragmentatie vertraagt de toegang tot data. Het regelmatig starten van een (noodzakelijke) defragmentatieroutine vertraagt de computer echter aanzienlijk en kost ook veel tijd.
Bestandsoperaties
Een bestandssysteem ondersteunt heel wat faciliteiten of bewerkingen op bestanden. Zo kun je bestanden kopiëren, verplaatsen, hernoemen, wissen, aanmaken, wijzigen, afkappen, aanvullen, dateren en wellicht nog meer. Dergelijke bewerkingen zijn vaak ook mogelijk met directory's.
Hoe opslagvolumes als geheel aangepakt worden, is vaak een heel ander verhaal. Sommige besturingssystemen, zoals de Unix-varianten, maken vaak geen onderscheid tussen opslagvolumes en directory's. Normale directory-operaties zijn echter meestal niet toegestaan met volumes die als directory zijn ‘vermomd'. Andere systemen, zoals Windows, gebruiken een unieke identificatie voor de opslagvolumes (driveletters!) en vereisen het gebruik van speciale beheersoftware om die volumes als geheel te manipuleren.
Hardware-link
Opslagvolumes kunnen vast en eigen zijn aan de hardware, maar vaak zijn ze erg variabel. Zo bestaan er heel wat bestandssystemen die specifiek zijn afgestemd op opslagsystemen met ronddraaiende schijven. Je hebt dan in principe de vrije keuze tussen meerdere bestandssystemen voor een bepaald soort opslagsysteem.
Andere bestandssystemen spitsen zich toe op specifieke opslagsystemen. Zo gebruiken flashdisks geen bewegende onderdelen. Daarom is er geen noodzaak tot het beperken van zoekopdrachten. Wel is bij dergelijke schijven het aantal schrijfoperaties per locatie beperkt; daardoor moet het overschrijven van data zoveel mogelijk worden vermeden. Solid state disks bestaan dan weer uit geheugenmodules; ze kennen geen beperkingen inzake fysieke toegang, behalve de toegangssnelheid voor de verschillende geheugenmodules.
Opslagvirtualisatie
Om de betrouwbaarheid te vergroten en om eventueel ook met een grotere snelheid te kunnen werken, zijn er bij harde schijven oplossingen verzonnen om meerdere fysieke schijven als één 'logische' (eigenlijk: virtuele) opslageenheid te beschouwen. Het bestandssysteem komt dan op die virtuele opslageenheid terecht. Dat kennen we als raid-systemen (redundant array of inexpensive/independent disks).
Die opslagvirtualisatie gaat nog heel wat verder in NAS'en (netwerkopslagvolumes) en SAN's (een netwerk van opslagsystemen). Ook in bestandssystemen zelf is er sprake van virtualisatie. Zo creëerde Sun het bestandssysteem ZFS, dat alle gedetecteerde opslagsystemen kan virtualiseren en organiseren volgens beschrijfbaarheid, werksnelheid, uitwisselbaarheid en beschikbaarheid van de gebruikte media. Dit kan allemaal binnen eenzelfde bestandssysteem.
Omdat de keuze voor een bestandssystemen vaak erg nauw samenhangt met de keuze van besturingssysteem, geven we een overzicht van bestandssystemen volgens platform.
Microsoft
Microsoft wijzigt zijn bedrijfseigen bestandssystemen FAT en NTFS met bijna elke nieuwe versie van Windows. FAT wordt nu gebruikt voor kleinere opslagvolumes en zit aan versie FAT-32. Voorgangers zijn FAT, FAT-12 en FAT-16. Voor grotere volumes (meer dan 4 GB) verplicht Microsoft het gebruik van NTFS. FAT stamt uit het DOS-tijdperk. FAT-32 heeft een 32-bit toewijzingstabel en ondersteunt lange bestandsnamen. Oudere FAT-versies staan maximaal acht karakters toe voor de bestandsnaam en drie voor de extensie.
Toen Microsoft en IBM samen OS/2 ontwikkelden, kwamen ze op de proppen met HPFS (High Performance File System). Toen de twee ruzie kregen, gebruikte Microsoft HPFS als basis voor NTFS, dat samen met Windows NT werd gelanceerd. NTFS kan via toegangscontrolelijsten de toegang tot op directoryniveau beveiligen. Het ondersteunt ook meervoudige bestandsstromen, attribuutindexering, quotabewaking en nog een aantal minder bekende eigenschappen.
Windows
De nieuwste Windows-versies, Vista en Server 2008, ondersteunen nog steeds zowel FAT als NTFS. Microsoft beperkt FAT-volumes wel tot 4 GB; grotere volumes kan Windows alleen in NTFS formatteren. Windows kan overigens wel overweg met grotere FAT-volumes, maar die moeten dan worden geformatteerd met een extern hulpprogramma, ironisch genoeg afkomstig uit de Linux-wereld. Grotere geheugenkaartjes en usb-staafjes worden vaak geformatteerd onder FAT-32 voor gebruik in andere computers en allerlei multimedia-apparatuur. Nu voor dergelijke geheugens capaciteiten van meer dan 4 GB meer en meer gebruikelijk worden, is het bijzonder lastig dat je ze niet onder Windows in FAT-32 kunt formatteren.
Windows ondersteunt verder ook nog de standaardbestandssystemen van cd-roms en dvd-roms. Hoewel het in principe mogelijk is andere bestandssystemen bij te programmeren in Windows, hebben maar weinigen dat gedaan. In de praktijk wordt er buiten de genoemde bestandssystemen eigenlijk niets toegepast in Windows.
Net als DOS en OS/2 gebruikt ook Windows het systeem van driveletters om een onderscheid te maken tussen opslagvolumes. Driveletters kunnen verwijzen naar harde-schijfpartities, cd- en dvd-lezers en -schrijvers, usb-opslagapparaten en -geheugens, FireWire-toestellen, netwerkvolumes en nog heel wat meer. Driveletters hebben als voornaamste beperking dat er maar zesentwintig tekens in het alfabet zijn, maar dat blijkt tot nu toe niet zo'n probleem.
Apple
Naast Microsoft is Apple de enige andere producent van een gesloten besturingssysteem dat door de jaren heen succesvol gebleven is. Voor Apple gold dan ook nog dat hun besturingssysteem alleen gebruikt kon worden op Apple-computers, die niet pc-compatibel waren. De Mac-maker is meermaals van hardwareplatform veranderd, maar wist daarbij zowel de software als de opslagsystemen te blijven ondersteunen.
Vanaf Mac OS X treedt de grootste platformwijziging op, maar de gebruikers merken daar weinig of niets van. OS X is onder de motorkap immers Unix. De eigenheid van de Mac beperkt zich nu tot de grafische desktop die bovenop dat Unix-systeem draait. Qua hardware nam Apple een risico, want Mac OS X draait in principe op gewone pc-hardware. Inderdaad: op een moderne Apple-computer kun je ook Windows of Linux installeren.
Apple gebruikt voor Mac OS X het bestandssysteem HFS+ (HFS Plus), dat voortbouwt op het hiërarchische bestandssysteem van de klassieke Mac. Zo voegde Apple Unix-permissies toe. Ook verbeterde het de toewijzingsalgoritmes, om defragmentatie zoveel mogelijk te vermijden. Bij HFS was nog een extern defragmentatieprogramma nodig. Verder werd in HFS+ de omvang van bestands- en directorynamen uitgebreid tot 255 tekens, tegenover 31 voor HFS. De namen worden voortaan ook opgeslagen in Unicode.
HFS+ kan het bestandstype halen uit de metadata van een bestand of uit de bestandsnaam. Het kent de bestandsverbindingen van Unix: harde en symbolische links en aliassen (vergelijkbaar met snelkoppelingen in Windows). Mac OS X ondersteunt overigens ook het bestandssysteem UFS (Unix File System), afkomstig van Unix-variant BSD. Uiteraard ondersteunt het ook de bestandssystemen van cd- en dvd-roms.
Linux
Omdat Linux een open source platform is, kan iedereen er voor programmeren en velen doen dat dan ook. Bestandssystemen maken normaal deel uit van de Linux-kernel. Die wordt strikt gecontroleerd door een groep rondom Linux-schepper Linus Torvalds. De huidige 2.6-kernel kent een achttal bestandssystemen: FAT (voor diskettes), ISO 9660 (voor cd/dvd) en dan voor harde schijven: ext2, ext3, ext4, ReiserFS, XFS en JFS (Journaling File System). ReiserFS is op sterven na dood. De ontwerper ervan, Hans Reiser, zit immers in de gevangenis op beschuldiging van moord. De meeste Linux-distributies passen het niet meer als standaard toe en raden het gebruik ervan ook af.
De meeste moderne Linux-distributies gebruiken standaard ext3 voor harde schijven, al zijn er ook enkele die voor XFS kiezen. Niemand koos standaard voor JFS. Dat is jammer, want uit tests blijkt dat JFS onder Linux erg betrouwbaar werkt. JFS is bovendien bloedsnel en verbruikt weinig geheugen. Het bestandssysteem is als open source vrijgegeven door IBM. Die ict-leverancier ontwikkelde het eerst voor zijn besturingssysteem AIX en paste het naderhand in een sterk verbeterde versie toe in OS/2 Warp Server for e-Business. Deze laatste versie is ook voor Linux beschikbaar.
Oracle
Recent gaf ook databaseproducent Oracle zijn bestandssysteem OCFS2 (Oracle Cluster File System) vrij als open source. Ook dit is inmiddels standaard toegevoegd aan de Linux-kernel. Zoals de naam al aangeeft, is dit bestandssysteem bij uitstek ontworpen voor clusters (meer computers die als één eenheid samenwerken voor lastenverdeling en als bescherming tegen uitval). Het is dus niet bedoeld voor conventioneel gebruik op harde schijven zoals de andere bestandssystemen.
Op een rijtje
De belangrijkste, meestgebruikte bestandssystemen en hun eigenschappen zijn op een rijtje gezet in deze tabel.
Ik mis in dit hele artikel sun solaris en uitgebreidere informatie omtrend zfs welke een copy on write omgeving is. Met als voordeel dat de data daadwekelijk totaan de disk gecontroleerd kan worden of deze echt daadwerkelijk is weggeschreven en er automatisch een backup van is als de ruimte dat toelaat (snapshots). Tevens mis ik ook qfs welke vauit cluster perspectief met een multiwriter omkangaan iets wat de meeste van de bovenstaande systemen niet kunnen.
Ook word er in het artikel niet ingegaan op de vraag stelling met welk doel sommige FS zijn ontwikkeld en dus specifiek 1 taak hebben. immers de reden of iets staat of valt is de toepassing waarvoor het gebruikt gaat worden.
Naast opslag van gegevens is recovery tevens een hot item, er is geen enkele admin die geen falende disk heeft meegemaakt, en deze toevalligerwijs niet in de backup strategie om $reden was opgenomen. Journaling filesystems hebben dan ook de voorkeur voor de meeste admins.