Verder Terug Inhoud

2. Wat is een partitie eigenlijk?

Toen PC harddisks werden uitgevonden, wilden mensen al spoedig meerdere besturingssystemen installeren, ook al had hun systeem maar één disk. Dus er was een mechanisme nodig om een enkele fysieke disk in meerdere logische disks in te delen. Dus dat is wat een partitie is: Een opeenvolgend gedeelte van je harddisk die door de meeste besturingssystemen als een complete afzonderlijke disk wordt behandeld.

Het is tamelijk duidelijk dat partities elkaar niet moeten overlappen: Een besturingssysteem zal er beslist niet blij mee zijn, als een ander geïnstalleerd besturingssysteem op dezelfde machine belangrijke informatie zou overschrijven vanwege overlappende partities. Er zou ook geen gat tussen aangrenzende partities moeten zitten. Ondanks dat deze constellatie niet schadelijk is, verspil je kostbare diskruimte door ruimte tussen partities te laten.

Een disk hoeft niet volledig gepartitioneerd te zijn. Het kan zijn dat je besluit om wat ruimte aan het einde van je disk te laten die nog niet aan één van je geïnstalleerde besturingssystemen is toegewezen. Als het je later duidelijk is welke installatie de meeste tijd wordt gebruikt, kun je deze overgebleven ruimte partitioneren en er een bestandssysteem op plaatsen.

Partities kunnen niet worden verplaatst, noch kan de grootte worden gewijzigd zonder dat je het bestandssysteem wat zich erop bevindt, wordt verwijderd. Dus het herpartitioneren brengt gewoonlijk het backuppen en herstellen van alle, tijdens het herpartitioneren, betrokken bestandssystemen met zich mee. In feite is het tamelijk gewoon gedurende het herpartitioneren zaken compleet te verknoeien, dus je zou van alles op iedere disk op die machine een backup moeten maken voordat je zelfs ook maar aan zoiets als fdisk komt.

Een aantal partities met daarop bepaalde bestandssysteemtypes kunnen in werkelijkheid in tweeën worden gesplitst zonder gegevens te verliezen (als je geluk hebt). Er is bijvoorbeeld een programma met de naam "fips" voor het in tweeën splitsen van MS-DOS partities voor een Linux installatie, zonder dat MS-DOS opnieuw moet worden geïstalleerd. Je raakt deze dingen toch niet aan zonder alles op deze machine zorgvuldig te backuppen, nietwaar?

2.1 Backups zijn belangrijk

Tapes zijn je vriend voor backups. Ze zijn snel, betrouwbaar en gemakkelijk te gebruiken, dus je kunt vaak backups maken, bij voorkeur automatisch en zonder gedoe.

En ik heb het over echte, niet die disk controller bestuurde ftape troep. Overweeg het kopen van SCSI: Linux ondersteunt intern SCSI. Je hoeft geen ASPI drivers te laden, je verliest geen kostbare HMA onder Linux en zodra de SCSI hostadapter éénmaal is geïnstalleerd, sluit je er gewoon extra disks, tapes en CD-ROM's op aan. Geen I/O adressen meer, IRQ gegoochel met Master/Slave en PIO-level overeenstemming.

Plus: Goede SCSI-hostadapters geven je een hoge I/O performance zonder veel CPU load. Zelfs onder zware diskactiviteit zul je goede responsetijden ervaren. Als je van plan bent om je Linux-systeem hoofdzakelijk als USENET nieuwstoevoer te gebruiken of als je op het punt staat in ISP-bedrijf te gaan, denk er dan zelfs niet aan om een systeem zonder SCSI neer te zetten.

2.2 Nummers en namen van apparaten

Het aantal partities op een systeem gebaseerd op Intel was vanaf het allereerste begin beperkt. De originele partitietabel werd geïnstalleerd als onderdeel van de bootsector en gaf ruimte voor slechts vier partitie-ingangen. Deze partities worden nu primaire partities genoemd. Toen het duidelijk werd dat mensen meer partities op hun systemen nodig hadden, werden de logische partities uitgevonden. Het aantal logische partities is niet beperkt: Iedere logische partitie bevat een verwijzing naar de volgende logische partitie, dus je kunt een mogelijk ongelimiteerde reeks partitie-ingangen hebben.

Om compatibiliteits redenen, moest de ruimte die door alle logische partities in beslag werd genomen, worden verantwoord. Als je logische partities gebruikt, wordt één partitie als "uitgebreide partitie" gemarkeerd, en het begin- en eindblok markeren het gebied dat door de logische partities in beslag wordt genomen. Dit impliceert dat de ruimte die aan alle logische partities is toegekend, aaneengesloten moet zijn. Er kan slechts één uitgebreide partitie voorkomen: geen enkel fdisk programma zal meer dan één uitgebreide partitie aanmaken.

Linux kan niet meer dan een beperkt aantal partities per drive beheren. Dus als je in Linux 4 primaire partities hebt (zijn 3 daarvan te gebruiken, als je gebruik maakt van logische partities) en alles bij elkaar maximaal 15 partities op een SCSI disk (alles bij elkaar 63 op een IDE disk).

Onder Linux worden partities voorgesteld door apparaatbestanden. Een apparaatbestand is een bestand met type c (voor "character" apparaten, apparaten die geen buffercache gebruiken) of b (voor "blok" apparaten, die door de buffercache gaan). Onder Linux worden alle disks alleen voorgesteld als blokapparaten. In tegenstelling tot Unices, biedt Linux geen "raw" character versies van disks en de partities daarop.

Het enige belangrijke aan een apparaatbestand zijn z'n major en minor devicenummers, die in plaats van de bestandsgroottes worden getoond:


$ ls -l /dev/hda
brw-rw----   1 root     disk       3,   0 Jul 18  1994 /dev/hda
                                   ^    ^
                                   |    minor devicenummer
                                   major device nummer

Bij het benaderen van een apparaatbestand, selecteert het major nummer welke driver wordt aangeroepen om de input/output bewerking uit te voeren. Deze aanroep wordt gedaan met het secundaire nummer als een parameter en het is helemaal aan de driver hoe het secundaire nummer wordt geïnterpreteerd. De driver-documentatie beschrijft gewoonlijk hoe de driver secundaire nummers gebruikt. Voor IDE disks, staat deze documentatie in /usr/src/linux/Documentation/ide.txt. Voor SCSI disks, zou je dergelijke documentatie verwachten in /usr/src/linux/Documentation/scsi.txt, maar daar staat het niet. Men moet bij de source van de driver kijken om zeker te zijn (/usr/src/linux/driver/scsi/sd.c:184-196). Gelukkig bestaat er de lijst met devicenummers en namen van Peter Anvin in /usr/src/linux/Documentation/devices.txt; zie de ingangen voor blokapparaten, major 3, 22, 33, 34 voor IDE en major 8 voor SCSI disks. De major en minor nummers zijn ieder een byte groot en daarom is het aantal partities per disk beperkt.

Volgens afspraak hebben apparaatbestanden bepaalde namen en veel systeemprogramma's hebben de kennis over deze namen ingecompileerd. Ze verwachten dat je IDE disks /dev/hd* zijn genoemd en je SCSI disks /dev/sd*. Disks zijn genummerd a, b, c en zo verder, dus /dev/hda is je eerste IDE disk en /dev/sda is je eerste SCSI disk. Beide devices stellen gehele disks voor, beginnend op blok één. Met de verkeerde tools naar deze tools schrijven zal de masterbootloader en partitietabel op deze disks ruïneren, onbruikbare weergave van alle gegevens op de disk of je systeem onopstartbaar maken. Weet wat je doet en, nogmaals, maak een backup voordat je het doet.

Primaire partities op een disk zijn 1, 2, 3 en 4. Dus /dev/hda1 is de eerste primaire partitie op de eerste IDE disk en zo verder. Logische partities hebben de nummers 5 en hoger, dus /dev/sdb5 is de eerste logische partitie op de tweede SCSI disk.

Aan iedere partitie-ingang is een begin- en een eind-blokadres en een type toegewezen. Het type is een numerieke code (een byte) die een bepaalde partitie aan een bepaald type besturingssysteem toewijst. Ten bate van computeradviseurs zijn partitie type codes niet echt uniek, dus er is altijd een kans dat twee besturingssystemen dezelfde code gebruiken.

Linux reserveert het type code 0x82 voor swappartities en 0x83 voor "native" bestandssystemen (dat is ext2 voor de meeste van jullie). Het ooit populaire, nu verouderde Linux/Minix bestandssysteem gebruikte het type code 0x81 voor partities. OS/2 markeert zijn partities met een 0x07 type en dit doet NTFS van Windows NT ook. MS-DOS neemt verscheidene type codes in beslag voor z'n diverse soorten FAT bestandssystemen: 0x01, 0x04 en 0x06 zijn bekend. DR-DOS gebruikte 0x81 om beschermde FAT partities aan te geven, daarmee in die tijd een conflict genererend met Linux/Minix, maar noch Linux/Minix noch DR-DOS worden nog veel gebruikt. Tussen twee haakjes, de uitgebreide partitie die als een container voor logische partities wordt gebruikt, is van het type 0x05.

Partities worden aangemaakt en verwijderd met het fdisk programma. Ieder zelfrespecterend besturingssysteem komt met een fdisk en wordt traditioneel onder bijna alle Os'sen zelfs fdisk genoemd (of FDISK.EXE) Sommige fdisks, merkbaar die van DOS, zijn op één of andere manier beperkt als ze met partitities van andere besturingssystemen om moeten gaan. Een van dergelijke beperkingen is de complete onmogelijkheid om te gaan met alles met een type code van een ander bestandssysteem, de onmogelijkheid om te gaan met cylinder nummers boven 1024 en de onmogelijkheid partities aan te maken of zelfs te begrijpen die niet op een cylinder begrenzing eindigen. Bijvoorbeeld, de MS-DOS fdisk kan geen NTFS partities verwijderen, van de OS/2 fdisk is bekend dat ze in stilte door Linux aangemaakte partities "corrigeerde" als ze niet eindigden op een cylinder begrenzing en zowel, de DOS en de OS/2 fdisk, hadden problemen met disks met meer dan 1024 cylinders (zie de "large-disk" Mini-Howto voor details over dergelijke disks).


Verder Terug Inhoud