Computersystemen/Opslagbeheer

Uit Wikibooks
Naar navigatie springen Naar zoeken springen

Doelstellingen[bewerken]

Onderstaande doelstellingen komen in meer of mindere mate aan bod.[1] De cursieve doelstellingen zijn praktijkoefeningen zijn die aansluiten bij de theorie, maar die in dit Wikibook niet behandeld worden.

  • De verschillende niveaus van formatteren toelichten en de draagwijdte van deze operaties correct inschatten.
  • Een gegeven systeem formatteren, het partitioneren en partities aanpassen.
  • De functie en de werking van de mogelijke bestandsbeheersystemen toelichten.
  • Mogelijke fouten in het bestandsbeheersysteem opsporen en deze zo nodig herstellen.
  • De verschillende gradaties van wissen toelichten.
  • Gewiste mappen herstellen.
  • Gewiste of beschadigde bestanden herstellen.

Lagenmodel[bewerken]

Schematische voorstelling van een harde schijf, met oa. 4 platters A, een spoor E in geel aangeduid en de sectoren in het rood. Sporen op eenzelfde afstand van het middelpunt wordt een cilinder genoemd (D).

Op opslagmedia worden gegevens permanent bewaard. Voorbeelden zijn harde schijven (HDDs), SSDs, optische schijven (CD-ROMs, DVD's,...) of flashmedia (USB-stick, SD-kaart,...). Soms heeft men het over de (harde) schijf, terwijl het eigenlijk om een SSD gaat.

Zoals vaak in de computerwereld wordt gewerkt met een lagenmodel:

  • Low-level formattering: dit gebeurt door de fabrikant van het opslagmedium en is nodig voor de interne werking. Er wordt gebruik gemaakt van verschillende technieken, gebaseerd op o.a. magnetische, optische of elektronische eigenschappen van stoffen. Zo zal de fabrikant van een harde schijf de cilinders, sporen en sectoren aanbrengen op de magnetische platters.
  • Partitionering: het onderverdelen van het opslagmedium in verschillende eenheden.
  • High-level formattering, kortweg "formattering": het aanbrengen van een bestandsysteem.

Dankzij dit lagenmodel hoeft een programma (zoals een tekstverwerker) geen details te kennen over de interne werking van een opslagmedium (de low-level formattering). Dit programma zal niet rechtstreeks het opslagmedium benaderen, maar zal aanroepen doen via het besturingssysteem, dat op zijn beurt een bestands(beheer)systeem gebruikt.

Partionering[bewerken]

Typische partities op een dual boot tussen Windows en Linux

Een opslagmedium partitioneren is het verdelen van dat medium in meerdere eenheden (de partities), zodat het lijkt alsof dit ene fysieke opslagmedium bestaat uit meerdere afzonderlijke opslagmedia. Een partitie-editor kan gebruikt worden om partities te maken, te wijzigen of te verwijderen. Soms heeft men het over 'schijf' of 'harde schijf', terwijl het eigenlijk om een 'partitie' gaat.

Redenen[bewerken]

Er zijn verschillende redenen om een opslagmedium op te delen in partities, waaronder:

  • Scheiding tussen het besturingssysteem + programma's en de gebruikersdata. Dit laat toe om
    • een image back-up te nemen van ofwel het ene, ofwel het andere.
    • om gemakkelijk het besturingssysteem + programma's te formatteren en te herinstalleren, waarbij de gebruikersdata op zijn eigen partitie kan blijven staan.
  • Bij een multi-boot setup kan ieder besturingssysteem zijn eigen partities toegewezen krijgen (bv. bij een dual boot tussen Windows en Linux).
  • Bij belangrijke data kan die geplaatst worden op een aparte partitie, die vervolgens verborgen (bv. bij HP Recovery; de systeempartitie van Windows) en/of geëncrypteerd (bv. met TrueCrypt/VeraCrypt) wordt.

MBR en GPT[bewerken]

Om de partitietabel vast te leggen, kan het MBR-systeem gebruikt worden. In het begin waren maximum vier partities mogelijk, maar dit werd algauw onvoldoende gevonden. Daarom werd de uitgebreide partitie (extended partition) ingevoerd. De gewone partities werden vanaf dat moment primaire partities genoemd. De uitgebreide partitie werd op zijn beurt opgedeeld in een onbeperkt aantal logische partities of logische stations. Bij MBR kunnen dus ofwel maximaal vier primaire partities zijn ofwel maximaal drie primaire en één uitgebreide partitie (die zelf meerdere logische partities kan bevatten).

Het MBR-partitioneringssysteem (soms ook aangegeven als MS-DOS-partioneringssysteem) liep meer en meer tegen beperkingen aan, waardoor op recentere systemen vaak GPT (GUID Partition Table) wordt gebruikt. Deze heeft geen opsplitsing tussen primaire, uitgebreide en logische partities en kan ook op grote harde schijven gebruikt worden.

Windows versus Linux[bewerken]

Het besproken lagenmodel werkt gelijkaardig tussen Windows en Linux. Ter info bespreken we kort de grootste verschillen: het benoemen van partities, het weergeven van paden en de standaard ondersteunde bestandssystemen:

  • Windows
    • Onder Windows wordt ook wel het woord volume gebruikt in plaats van partitie.
    • Er worden letters toegekend aan partities, wat ontstaan is vanuit DOS. De letters A en B zijn gereserveerd voor diskettes. De eerste primaire partitie van het eerste opslagmedium krijgt dus de letter C. Zijn er meer partities dan er letters beschikbaar zijn, dan krijgen de resterende partities geen letter. Deze letters worden standaard automatisch toegekend.
    • Bij verwisselbare media (bv. USB-stick) kan deze de ene keer bv. de letter E krijgen en een andere keer de letter F.
    • Een voorbeeld van een pad is C:\Windows\System32.
    • Bij Windows is standaard FAT32 en NTFS ondersteund.
    • Onder Windows kunnen partities bekeken worden via het beheerdersmenu van de Start-knop (RMK > Schijfbeheer).
  • Linux
    • In Linux worden partities aangeduid met de devicenaam. De eerste primaire partitie op de eerste harddisk wordt bv. vaak aangegeven als /dev/sda1, de tweede partitie als /dev/sda2. De eerste partitie op de tweede harddisk wordt dan /dev/sdb1.
    • Om toegang te krijgen tot data worden de devices gemount. Zo kan de gebruikersdata op partitie /dev/sda2 gemount worden onder /home. Er wordt hier dus niet gewerkt met letters en de bovenste map is altijd /.
    • Bij verwisselbare media wordt dit vaak gemount in de vorm /media/gebruiker/labelnaam. Merk op dat bij Linux een / wordt gebruikt (zoals op websites), terwijl Windows de \ gebruikt!
    • Een voorbeeld van een pad is /etc/gimp.
    • Bij Linux zijn er heel wat ondersteunde bestandssystemen: bv. NTFS, FAT32, ext4,... Vaak wordt ext4 gekozen.
    • Onder Linux kan bv. GParted gebruikt worden om meer te weten te komen over de partities op een systeem.

High-level formattering[bewerken]

Definitie[bewerken]

High-level formattering (vaak kortweg formatteren genoemd) is het aanbrengen van een bestandssysteem op een partitie. Een bestandssysteem (en: filesystem) is een door het besturingssysteem verzorgde, softwarematige indeling van een opslagmedium. Het besturingssysteem en applicaties zullen via het bestandssysteem toegang krijgen tot de data. Vaak is deze data via bestanden in een hiërarchische mappenstructuur ondergebracht.

Formatteren is geen synoniem voor alles wissen! Het aanbrengen van een bestandssysteem neemt maar weinig ruimte in op een opslagmedium, waardoor de "oude" data er vaak nog staat. De bestandsbeheerder van het besturingssysteem zal deze oude data niet weergeven, maar met speciale software kan een groot stuk van deze data relatief eenvoudig teruggehaald worden!

Voorbeelden[bewerken]

Schermafdruk van GParted met verschillende bestandssystemen, maar ditmaal als indeling GPT i.p.v. MBR

Er zijn heel wat bestandssystemen. Enkele voorbeelden:

  • FAT32: gebruikt vanaf Windows 98
  • NTFS: gebruikt vanaf Windows XP
  • ext4: gebruikt bij Linux
  • SquashFS: oa. gebruikt bij Android Nougat en Linux Live distro's

Onderstaande schermafdruk van GParted is van een SSD die een dual boot bevat met Windows 8 (sda1 en sda2) en Ubuntu 13.10 (sda5, sda6, sda7). De groene kleur geeft hier twee primaire partities weer (sda1 en sda2). De lichtblauwe grote rechthoek is de uitgebreide partitie (sda3), die op zijn beurt drie logische partities bevat (sda5, sda6 en sda7). Het gaat hier om de MBR-indeling. Mocht er nog vrije ruimte zijn, dan zou dit in GParted door een donkergrijze rechthoek worden weergegeven.

Schermafdruk van GParted van een SSD die een dual boot bevat met Windows 8 (sda1 en sda2) en Ubuntu 13.10 (sda5, sda6, sda7). Merk op dat hier MBR als indeling is gebruikt.

Mogelijkheden[bewerken]

De verschillende bestandssystemen zijn onderling niet identiek aan elkaar qua mogelijkheden (en: features). We bespreken er enkele:

  • de maximale bestandslengte, maximale bestandsgrootte, maximale partitiegrootte. Dit kan bv. een probleem zijn als een programma een te groot bestand wil opslaan op een bepaald bestandssysteem: zelfs met voldoende vrije ruimte zal het bestandssysteem hier niet mee overweg kunnen.
  • de toegelaten karakters. Zo kan je bij een Windows-systeem de melding "De volgende tekens mogen niet in bestandsnamen voorkomen: \/:*?"<>|" tegenkomen, waar sommige van die tekens op een Linux-systeem mogelijks wel toegelaten worden. De oorzaak is steeds het onderliggende bestandssysteem. In dit geval kan je niet zomaar bestanden verplaatsen/kopiëren van het ene naar het andere bestandssysteem.
  • het al of niet kunnen toekennen van rechten
  • metadata, zoals eigenaar van een bestand, tijdstip van laatste toegang, checksum,...
  • ingebakken compressie, transparant voor de eindgebruiker. Zonder ingebakken compressie kan de eindgebruiker ook bepaalde bestanden comprimeren, maar dan moet hij/zij gebruikmaken van een apart programma (bv. WinZip of 7-zip) en zelf instaan voor het decomprimeren (om de data te kunnen bekijken/bewerken) en terug comprimeren. Afhankelijk van de implementatie kan het zijn dat bij deze "ingebakken compressie" niet alles wordt gecomprimeerd, maar bv. enkel bestanden die een lange tijd niet gebruikt zijn geweest.
  • quota: een beheerder kan een maximum schijfruimte opgeven die door een gebruiker mag ingenomen worden. Stel je een omgeving voor met meerdere gebruikers, waarbij er eigenlijk nog 500 GB vrij is. Dan zou één gebruiker in zijn persoonlijke map 500 GB plaatsen, waardoor iedereen plots een tekort aan schijfruimte heeft. De administrator zou echter a.d.h.v. quota kunnen instellen dat iedere gebruiker maar 200 MB maximaal kan gebruiken.
  • ingebakken encryptie, transparant voor de eindgebruiker (en: filesystem-level encryption). Zonder ingebakken encryptie kan de eindgebruiker ook bepaalde bestanden encrypteren, maar dan moet hij/zij gebruikmaken van een apart programma en zelf instaan voor het decrypteren (om de data te kunnen bekijken/bewerken) en terug encrypteren. Als dit ingebakken zit in het bestandssysteem, kan het besturingssysteem bv. bij het inloggen (via login+wachtwoord) alles op de achtergrond decrypteren en bij het afmelden terug encrypteren. Bij een gestolen laptop/pc ziet de dief dan enkel de geëncrypteerde data (in de veronderstelling dat je uitgelogd bent).
  • journaling: een bestandssysteem dat dit ondersteunt zorgt voor een soort van log (een journal), die alle wijzigingen bijhoudt, vóórdat ze worden uitgevoerd op het eigenlijk bestandssysteem. In het geval van een systeemcrash of elektriciteitspanne, zullen deze bestandssystemen sneller terug beschikbaar zijn en is er minder kans dat ze corrupt komen. NTFS en ext4 zijn bestandssystemen dit dit ondersteunen, terwijl FAT32 dit niet ondersteunt.
  • ...[2]

Werking[bewerken]

Om de functie en de werking van mogelijke bestandssystemen toe te lichten, zullen we FAT gebruiken. Dit is ontwikkeld voor MS-DOS en Windows. Het FAT-bestandssysteem wordt beschouwd als redelijk simpel en wordt dan ook ondersteund door bijna alle bestaande besturingssystemen voor de pc. Het wordt vaak gebruikt op media zoals USB-sticks of geheugenkaarten van foto- of GPS-toestellen. Zo zijn de fabrikanten bijna zeker dat het bij elk systeem herkend wordt.

File Allocation Table[bewerken]

Binnen het FAT-bestandssysteem heb je een tabel die de adressen bijhoudt van waar alle stukjes data opgeslagen zijn. Deze tabel heet toepasselijk de File Allocation Table.

Sectoren[bewerken]

Waar bij het RAM-geheugen het kleinste adresseerbare element 1 byte groot is, is dit bij opslagmedia een pak groter. Zo is dit bij een harde schijf de sector, vaak 512 B groot. Om deze sectoren terug te vinden heb je adressen nodig. Stel dat je een bitruimte van 16 bits gebruikt (FAT16 dus), dan weet je dat er 216=65536 adressen kunnen gevormd worden, nl. sector 0 tot 65535. Als een sector 512 B groot is, dan betekent dit dat een partitie slechts 512 * 65536 = 33554432 B = 32 MiB groot kan zijn. Sector 65536 is niet meer adresseerbaar.

Wil je meer sectoren adresseren, dan kan je de bitruimte groter maken. Zo worden bij FAT32 32 bits als bitruimte gebruikt. Dit betekent niet dubbel zoveel adressen, maar 65536 keer zoveel meer (want 232 = 216 * 216)!

Clusters[bewerken]

Om grotere partities mogelijk te maken, kan men dus de bitruimte vergroten, maar men kan ook meerdere sectoren samennemen, om zo adressen uit te sparen. Men noemt dit clusters. Als je 2 sectoren samenneemt in een cluster, met FAT16, dan kan je nog steeds 65536 adressen vormen, maar de maximale partitiegrootte wordt nu 512 * 2 * 216 = 67108864 B = 64 MiB. Een overzicht bij FAT16:

sectoren per cluster clustergrootte maximale partitiegrootte
1 512 B 32 MiB
2 1 KiB 64 MiB
4 2 KiB 128 MiB
8 4 KiB 256 MiB
16 8 KiB 512 MiB
32 16 KiB 1024 MiB
64 32 KiB 2048 MiB
128 64 KiB 4096 MiB

Een bestand dat groter is dan één cluster, zal een clusterketting nodig hebben. Er wordt hiervoor gebruikt gemaakt van de File Allocation Table. Daar kan de volledige adresketting worden gevolgd, tot aan de speciale code 0xFFFF, die de End Of File markeert. Andere speciale codes zijn bv. 0x0000 (vrije cluster) of 0xFFF7 (bad sector in cluster of gereserveerde cluster).

Stel dat je 3 bestanden hebt: bestand A, B en C. Dan zou een deel van de File Allocation Table er als volgt kunnen uitzien:

Clusteradres Code/status Uitleg
0002 FFF7 Bad sector in cluster of gereserveerde cluster
0003 0000 Vrije cluster
0004 0006 Eerste cluster van bestand A, volgende cluster heeft als adres 0006
0005 FFFF Eerste en enige cluster van bestand B.
0006 0009 Tweede cluster van bestand A, volgende cluster heeft als adres 0009
0007 0008 Eerste cluster van bestand C, volgende cluster heeft als adres 0008
0008 FFFF Tweede cluster van bestand C en ook de laatste cluster
0009 FFFF Derde cluster van bestand A en ook de laatste cluster
000A 0000 Vrije cluster
000B 0000 Vrije cluster
000C 0000 Vrije cluster
000D 0000 Vrije cluster

De bijhorende clusters kunnen dan als volgt zijn:

FilesystemAndClusters.png

Enkele opmerkingen:

  • Over cluster 0 en 1 hebben we geen informatie, omdat dit niet is opgenomen in de File Allocation Table
  • Cluster 2 is niet bruikbaar.
  • Bestand A is een gefragmenteerd bestand (wat iets meer tijd kan kosten om te laden), terwijl bestand C dit niet is.
  • Cluster 5, 8 en 9 is niet helemaal gevuld. Dit is logisch, want niet ieder bestand is toevallig een veelvoud van de clustergrootte. Dit is verloren ruimte (de slack) en verklaart waarom er een verschil kan zijn tussen de eigenlijke bestandsgrootte en hoeveel dat bestand inneemt op het opslagmedium.
  • Als bestand A, B of C wordt uitgebreid zal eerst de slack opgebruikt worden. Als dit onvoldoende is, dan kunnen de vrije clusters 0003, 000A, 000B, 000C of 000D gebruikt worden. Uiteraard moeten de code/status in de FAT dan aangepast worden.
  • Bij nieuwe bestanden worden ook vrije clusters genomen.
  • De slack wordt nooit gebruikt om een ander bestand op te slaan. Zo is het niet mogelijk om bestand A al te laten beginnen na het stukje van B, omdat we enkel volledige clusters kunnen adresseren en niet ergens halverwege een cluster.

Directory-ingangen voor mappen[bewerken]

Tot nu toe is er enkel gesproken over bestanden, maar hoe zit het met de mappen (en:directories)? Naast de FAT en de eigenlijke clusters moet het bestandssysteem ook nog een manier hebben om (sub)mappen bij te houden.

Simpel gesteld is er een lijst van bestanden en mappen: de directory-ingangen. Via één bit kan in zo'n lijst aangegeven worden of het gaat om een bestand of een map. In deze lijst is het voldoende om de startcluster van het bestand bij te houden: de rest van de clusteradressen kan in de FAT worden opgezocht. Deze lijst kan naast bestandsnaam en startclusternummer bv. ook creatiedatum, datum laatst gelezen en bestandsgrootte bijhouden.

Een sterk vereenvoudigde voorstelling van deze lijst kan er als volgt uitzien:

  • Map X
    • Bestand A op startcluster 0004
    • Map Y
      • Bestand B op startcluster 0005
      • Bestand C op startcluster 0007

Verwijderen[bewerken]

Het verwijderen van een bestand kan heel snel gebeuren:

  1. in de directory-ingang wordt aangegeven dat het bestand er niet meer is.
  2. in de FAT komt bij de bijhorende cluster(ketting) de code 0000, om aan te geven dat op dat clusteradres terug data mag geplaatst worden (het wordt een vrije cluster).
  3. de eigenlijke data blijft gewoon staan! De data wordt dus niet overschreven met bv. allemaal nullen, omdat dit teveel tijd zou kosten.

Stel dat we bestand C verwijderen, dan kunnen we de directory-ingang, de FAT en de eigenlijke data als volgt kunnen voorstellen:

  • Map X
    • Bestand A op startcluster 0004
    • Map Y
      • Bestand B op startcluster 0005
Clusteradres Code/status Uitleg
0002 FFF7 Bad sector in cluster of gereserveerde cluster
0003 0000 Vrije cluster
0004 0006 Eerste cluster van bestand A, volgende cluster heeft als adres 0006
0005 FFFF Eerste en enige cluster van bestand B.
0006 0009 Tweede cluster van bestand A, volgende cluster heeft als adres 0009
0007 0000 Vrije cluster
0008 0000 Vrije cluster
0009 FFFF Derde cluster van bestand A en ook de laatste cluster
000A 0000 Vrije cluster
000B 0000 Vrije cluster
000C 0000 Vrije cluster
000D 0000 Vrije cluster

FilesystemAndClusters-deleteC.png

Merk op dat in de voorstelling de letter 'C' er nog staat, om aan te geven dat de data van het bestand C er nog staat. De achtergrond bij C is nu echter wit, om aan te geven dat het een vrije cluster is. Cluster 0007 en 0008 kan dus bij een nieuw bestand of een uitbreiding van een bestaand bestand worden overschreven.

Verplaatsen[bewerken]

Bij het verplaatsen van een bestand binnen dezelfde partitie:

  1. in de de directory-ingang moet enkel de startcluster worden aangepast.
  2. de FAT blijft dezelfde
  3. de eigenlijke data blijft ook onaangeroerd

Dit kan dus héél snel gaan. Stel dat we in bovenstaand voorbeeld bestand A verplaatsen naar map Y, dan moet enkel het volgende gebeuren:

  • Map X
    • Map Y
      • Bestand A op startcluster 0004
      • Bestand B op startcluster 0005

Bij het verplaatsen van een bestand de ene naar een andere partitie, bv. van I naar II:

  1. Bij partitie II
    1. in de directory-ingang moet de startcluster van dit bestand bij de juiste map staan
    2. de FAT moet aangepast worden, zodat er een cluster(ketting) voor dit bestand voorzien kan worden.
    3. de eigenlijke data moet op de juiste clusteradressen gekopieerd worden
  2. Bij partitie I moet het bestand verwijderd worden
    1. in de directory-ingang wordt aangegeven dat het bestand er niet meer is.
    2. in de FAT komt bij de bijhorende cluster(ketting) de code 0000, om aan te geven dat op dat clusteradres terug data mag geplaatst worden (het wordt een vrije cluster).
    3. de eigenlijke data blijft gewoon staan (maar kan overschreven worden)!

Verplaatsen komt in het laatste geval dus neer op kopiëren, om het daarna te wissen. Dit neemt de nodige tijd in beslag.

Samenvatting[bewerken]

Vanuit dit relatief eenvoudig voorbeeld is het duidelijker waarvoor een bestandssysteem zoals FAT dient:

  • De "echte" data moet er zijn plaats krijgen. Deze data is vaak niet opgeslagen als één stroom van bytes, maar wordt opgedeeld in stukjes (clusters).
  • Clusters die behoren tot één bestand vormen een clusterketting en bovendien moet het duidelijk zijn welke clusters vrij zijn: dit wordt bijgehouden in een tabel (bv. de File Allocation Table).
  • Om een hiërarchische structuur mogelijk te maken zijn er directory-ingangen nodig, waarin oa. de startcluster van een bestand wordt bewaard.

NTFS[bewerken]

FAT is reeds vroeg ontwikkeld, de ontwerpers hebben het zo simpel en compact mogelijk gehouden voor de beperkte geheugens in die tijd. Daardoor heeft FAT verscheidene problemen, waaronder:

  • De eenvoudige bestandsstructuur leidt gemakkelijk tot fragmentatie, wat zorgt voor grote vertraging tijdens bestandsoperaties.
  • FAT is niet goed bestand tegen systeemcrashes.
  • De maximale bestandsgrootte is 4 GiB, de maximale partitiegrootte 8 TiB en bestandsnamen mogen niet langer zijn dan 255 tekens
  • Geen notie van rechten. In Windows '98 kon men verschillende gebruikers aanmaken, elk met een eigen bureaubladachtergrond ed. Het onderliggende bestandssysteem was echter FAT32, waardoor je via Windows Verkenner zonder problemen naar iemand zijn data kon bladeren, dit openen en/of wijzigen.

Vandaar werd NTFS ontwikkeld, met extra mogelijkheden, oa. op vlak van betrouwbaarheid (journaling) en veiligheid (rechten en encryptie):

  • de maximale bestandsgrootte is 16 TiB (in theorie 16 EiB), de maximale partitiegrootte 256 TiB (in theorie 16 EiB)
  • ondersteuning van metagegevens
  • door journaling kunnen bepaalde schijffouten automatisch hersteld worden
  • ondersteuning van rechten, waardoor kan bepaald worden welke gebruiker wat mag doen met bestanden en mappen. Deze rechten worden afgedwongen door het besturingssysteem. Let op: als dit besturingssysteem niet actief is, bv. door het opstarten vanaf een live-cd of live-usb, dan worden deze rechten niet afgedwongen! Wil je helemaal beschermd zijn, dan moet je nadenken over encryptie!
  • encryptie, gebonden aan de gebruikersaccount en het gebruikerswachtwoord
  • quota
  • bestandscompressie, transparant voor de gebruiker

Fouten[bewerken]

Bij het bestandssysteem kunnen zaken foutlopen:

  • Als in voorgaande FAT-tabel bij clusteradres 0006 de code FFF7 i.p.v. 0009 zou staan, dan zou een cluster van bestand A verloren zijn.
  • Clusteradres 0009 behoort hierdoor plots niet meer tot een clusterketting en is dus ook een "verloren" cluster.
  • Als twee directory-ingangen (bv. van foto.jpg en geluid.mp3) verwijzen naar dezelfde startcluster, dan betekent dit dat ze dezelfde clusterketting hebben. Dat een afbeelding en een geluid hetzelfde zouden zijn, kan echter niet.
  • Er kan ongeldige meta-data ontstaan, bv. een ongeldig clusternummer of een ongeldige datum.
    • Stel dat bij clusteradres 0006 als code 0000 zou staan, dan kan dit niet. Clusteradres 0006 zou daarmee behoren tot een clusterketting, maar toch ook een vrije cluster zijn.
    • Stel dat bij het uitlezen van de datum 29-02-2011 zou gelezen worden, dan is dit een onbestaande datum, terwijl 29-02-2012 wel goed zou zijn.

Meestal zal het besturingssysteem automatisch een schijfcontrole plannen als hij fouten in het bestandssysteem detecteert, zodat deze kunnen worden opgelost (Bv. via programma's zoals fsck en CHKDSK). Soms is de input van een beheerder nodig. Verloren clusters worden vaak bewaard, omdat een beheerder er mogelijk nog verloren data kan uithalen. Zo kan je in Windows een map FOUND.000 tegenkomen, met bestanden FILE0000.CHK, FILE0001.CHK,... of in Linux de map lost+found.

Alhoewel een schijfcontrole sommige fouten zal kunnen herstellen, blijft een back-up bijzonder belangrijk, omdat zo'n controle zeker niet alle fouten kan oplossen (virus, brand,...).

De gradaties van wissen[bewerken]

Dit onderdeel kwam al "tussen de regels" aan bod bij de werking van FAT, maar we sommen het nog eens op.

Prullenbak[bewerken]

Bij de meeste besturingssystemen zal een bestand of map verwijderen met de delete-toets ervoor zorgen dat het niet echt wordt verwijderd, maar wordt verplaatst naar een Prullenbak. Deze Prullenbak kan je beschouwen als een speciale map, waarin verwijderde mappen en bestanden nog worden bewaard. Zo kan je deze relatief snel terugplaatsen. Zoals je eerder kon lezen wordt het bestand of map niet echt verplaatst, maar blijft het fysiek op dezelfde locatie staan. De link naar de map waarin het stond, wordt wel aangepast naar deze van de Prullenbak. Hier hoort dus niet de uitleg van verwijderen, maar wel van verplaatsen.

Verwijderen[bewerken]

Er zijn situaties waar de delete-toets toch bestanden of mappen mogelijks onmiddellijk verwijdert:

  • Op een USB-stick is bij Windows geen Prullenbak aanwezig.
  • Ook bestanden op een netwerkschijf worden onmiddellijk verwijderd.
  • Als je verwijdert via het del-commando in een cmd-venster zal ook hier geen Prullenbak worden gebruikt.
  • Als je shift combineert met delete wordt een bestand ook verwijderd. Handig als je bv. ruimte wil vrijmaken, omdat zonder shift de map of het bestand ruimte blijft innemen in de Prullenbak.

We merken dat een verwijderd bestand niet zomaar is terug te vinden via de bestandsbeheerder. Bij het stukje verwijderen kon je al lezen dat deze data niet echt verwijderd is. Deze data kan dus worden teruggehaald, bv. met een programma zoals Recuva. Dit is een onderdeel van gegevensherstel (en: data recovery): het terughalen van gegevens die verloren lijken te zijn op een mediadrager, zoals een harde schijf of USB-stick. Vaak gebeurt dit ook in het kader van opsporingsonderzoek.[3]

Belangrijk is wel te beseffen dat die sectors of clusters als vrij worden aangemerkt en dus door het OS of programma's kunnen worden overschreven. Dit kan niet alleen door klassieke data (document, foto,...) maar ook door data "achter de schermen" (logboeken, configuratiebestanden, browsercache, tijdelijke bestanden,...). Als je data op deze manier wil terughalen, mag je dus zo weinig mogelijk doen met je pc. Het beste is de computer los te koppelen van de netspanning, het opslagmedium er uit te halen en te koppelen aan een andere pc, waarop de nodige software is geïnstalleerd.

Daar het geen garantie is dat je de data nog kan terughalen, doe je er uiteraard goed aan om een back-up te nemen.

Echt wissen[bewerken]

Wat als we niet willen dat data teruggehaald kan worden? Je verkoopt bv. je pc en wilt niet dat de ander jouw data kan opvissen. Je zou het kunnen formatteren, maar zelfs dan staat de oude data fysiek nog steeds op dezelfde plaats. Als je daarna het besturingssysteem opnieuw installeert zullen sommige clusters overschreven worden, maar de kans is groot dat er in de vrije clusters nog steeds oude data te vinden is.

We moeten een stap verder in de gradatie van wissen: dit is het domein van data erasure. Zo kan je met dban een volledige harde schijf wissen, maar er is ook software die individuele bestanden definitief kan wissen. Het is wel opletten met flash-geheugen (bv. een SSD of USB-stick), omdat dit opslagmedium anders werkt dan een harde schijf. Daar kan er met geavanceerde technieken alsnog data teruggehaald worden.

Harde schijf versus flashgeheugen[bewerken]

Om de doelstelling De functie en de werking van de mogelijke bestandsbeheersystemen toelichten te behandelen is de uitleg relatief algemeen gehouden. Door de onderliggende werking van een opslagmedium (dus de low-level formattering) zijn er "onder de motorkap" echter verschillen tussen bv. een harde schijf of een flashgeheugen (SSD, USB-stick,...) die beide als NTFS geformatteerd zijn:

  • Flashgeheugen heeft geen sectoren
  • Bij flashgeheugen wordt vermeden dat eenzelfde plaats vaak beschreven wordt (omdat dit de levensduur niet ten goede komt) via wear leveling. Deze techniek wordt verborgen voor het besturingssysteem, waardoor deze niet goed weet waar de data écht staat.
  • Bijgevolg kan het besturingssysteem bij flashgeheugens geen goede beslissingen nemen bij het defragmenteren, waardoor er geen snelheidswinst is én waardoor er zelfs nodeloos wordt herschreven.

Mochten we dieper ingaan op de werking van de harde schijf en flashgeheugens zou bovenstaande nog duidelijker worden.[4] Het belangrijkste is dat je onthoudt dat je flashgeheugens niet mag defragmenteren. Sowieso is NTFS al beter bestand tegen fragmentatie dan FAT32 en bovendien is een SSD al uit zichzelf behoorlijk snel. De dag van vandaag nog defragmenteren is dus niet echt aangewezen.

Tools[bewerken]

Ter info een opsomming van mogelijke tools voor opslagbeheer:

Bronnen, noten en/of referenties
  1. De doelstellingen komen uit het leerplan D/2015/7841/003, d.i. het leerplan Toegepaste Informatica van de richting informaticabeheer, derde graad tso.
  2. De "next gen" bestandssystemen zoals btfrs en ZFS bieden nog meer mogelijkheden. Zie bv. een diepgaand artikel op Arstechnica: Bitrot and atomic COWs: Inside “next-gen” filesystems
  3. (nl) Het videoverslag "De complexiteit van dataherstel - Op bezoek in Seagates Data Recovery Lab" van Tweakers.net gaat dieper in op gegevensherstel.
  4. Wil je toch meer weten over de werking van de SSD versus HDD, dan kan je terecht op server.idemdito.org.
Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.