| De Linux System Administrator's Guide: Versie 0.8 | ||
|---|---|---|
| Terug | Hoofdstuk 6. Disks en Andere Opslagmedia gebruiken | Volgende |
Een harddisk kan in verscheidene partities worden onderverdeeld. Elke partitie functioneert alsof het een aparte harddisk is. De gedachte erachter is dat als je één harddisk hebt, en bijvoorbeeld twee besturingssystemen daarop wilt, je de disk in twee partities kunt onderverdelen. Elk besturingssysteem gebruikt een eigen partitie naar eigen inzicht en laat de andere partitie ongemoeid. Op deze wijze kunnen twee besturingssystemen vredig naast elkaar voorkomen op dezelfde harddisk. Zonder partities zou men voor elk besturingssysteem een harddisk moeten kopen.
Diskettes worden gewoonlijk niet gepartitioneerd. Daar is geen technische reden voor, maar partities zijn zelden nuttig, gezien er al weining data op diskettes past. CD-ROM's worden gewoonlijk ook niet gepartitioneerd, aangezien het makkelijker is om ze als één grote disk te gebruiken, en het zelden nodig is er meerdere besturingssystemen op te plaatsen.
De informatie over hoe een harddisk is gepartitioneerd, wordt opgeslagen in de eerste sector van die harddisk (dat wil zeggen, de eerste sector van het eerste spoor op het eerste diskoppervlak). De eerste sector is de master boot record (MBR) van de disk; dit is de sector die de BIOS inleest en start wanneer de machine voor het eerst wordt geboot. De master boot record bevat een klein programma dat de partitietabel inleest, controleert welke partitie actief is (dat wil zeggen als opstartbaar is gemarkeerd), en de eerste sector van die partitie, de bootsector van die partitie inleest (ook de MBR is een bootsector, maar het heeft een speciale status en daarom een speciale naam). Deze bootsector bevat een ander klein programma dat het eerste deel van het besturingssysteem opgeslagen op die partitie inleest (in de veronderstelling dat het opstartbaar is) en het dan start.
Het partitioneringsschema is niet in de hardware en zelfs niet in de BIOS ingebouwd. Het is slechts een conventie die veel besturingssystemen volgen. Niet alle besturingssystemen volgen het, maar dat zijn de uitzonderingen. Een aantal besturingssystemen ondersteunt partities, maar ze nemen slechts één partitie op de harddisk in beslag, en gebruiken binnen die partitie hun eigen interne partioneringsmethode. Het laatste type kan gerust naast andere besturingssystemen (waaronder Linux) bestaan, en vereist geen speciale maatregelen, maar een besturingssysteem dat geen partities ondersteunt, kan niet op dezelfde disk met andere besturingssystemen bestaan.
Als voorzorgsmaatregel is het een goed idee om de partitietabel op een stukje papier te schrijven, zodat als het ooit beschadigd, je niet al je bestanden hoeft kwijt te raken. (Een slechte partitietabel kan met fdisk worden hersteld). De relevante informatie wordt gegeven door de opdracht fdisk -l:
$ fdisk -l /dev/hda Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders Units = cylinders of 855 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 1 1 24 10231+ 82 Linux swap /dev/hda2 25 25 48 10260 83 Linux native /dev/hda3 49 49 408 153900 83 Linux native /dev/hda4 409 409 790 163305 5 Extended /dev/hda5 409 409 744 143611+ 83 Linux native /dev/hda6 745 745 790 19636+ 83 Linux native $ |
Het oorspronkelijke partitioneringsschema voor PC harddisks stond slechts vier partities toe. Dit bleek in de praktijk al snel te weinig te zijn, deels omdat een aantal mensen meer dan vier besturingssystemen wilden (Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, of Windows/NT, om er maar een paar te noemen), maar primair omdat het soms verstandig is verscheidene partities te hebben voor één besturingssysteem. Swapspace bijvoorbeeld kan het beste in een eigen partitie worden geplaatst in plaats van in de Linux-partitie met de rest van het systeem om snelheidsredenen (zie verderop).
Om iets aan dit ontwerpprobleem te doen, werden extended partities uitgevonden. Deze truuk stond het toe een primaire partitie te partitioneren in subpartities. De dus onderverdeelde primaire partitie is de extended partitie; de subpartities zijn logische partities. Ze gedragen zich als primaire partities, maar worden op andere wijze aangemaakt. Tussen deze twee typen partities bestaat geen verschil in snelheid.
De partitiestructuur van een harddisk kan lijken op die in Figuur 6-2. De disk is onderverdeeld in drie primaire partities, waarvan de tweede is onderverdeeld in twee logische partities. Een deel van de disk is helemaal niet gepartitioneerd. De disk in zijn geheel en elke primaire partitie bevat een bootsector.
De partitietabellen (die in de MBR, en die voor de extended partities) bevatten per partitie één byte waarin het type van die partitie wordt aangegeven. Hiermee wordt geprobeerd het besturingssysteem te identificeren, dat van de partitie gebruik maakt of waar het de partitie voor gebruikt. Het doel is om het mogelijk te maken te voorkomen dat twee besturingssystemen per ongeluk dezelfde partitie gebruiken. In werkelijkheid doet het type partitie er voor besturingssystemen niet zoveel toe; b.v. Linux maakt het helemaal niet uit wat het is. Wat nog erger is, is dat een aantal ervan het onjuist gebruikt; b.v. op z'n minst negeert een aantal versies van DR-DOS het meest sigificante bit van de byte, terwijl andere versies dat niet doen.
Er bestaat geen instelling voor de standaardisering om aan te geven wat iedere waarde van een byte betekent, maar een aantal algemeen geaccepteerde bytes staan in Tabel 6-1. Een vollediger lijst is beschikbaar in het Linux programma fdisk.
Tabel 6-1. Typen partities (uit het programma Linux fdisk).
| 0 | Empty | 40 | Venix 80286 | 94 | Amoeba BBT |
| 1 | DOS 12-bit FAT | 51 | Novell? | a5 | BSD/386 |
| 2 | XENIX root | 52 | Microport | b7 | BSDI fs |
| 3 | XENIX usr | 63 | GNU HURD | b8 | BSDI swap |
| 4 | DOS 16-bit FAT <32M | 64 | Novell | c7 | Syrinx |
| 5 | Extended | 75 | PC/IX | db | CP/M |
| 6 | DOS 16-bit >=32M | 80 | Old MINIX | e1 | DOS access |
| 7 | OS/2 HPFS | 81 | Linux/MINIX | e3 | DOS R/O |
| 8 | AIX | 82 | Linux swap | f2 | DOS secondary |
| 9 | AIX bootable | 83 | Linux native | ff | BBT |
| a | OS/2 Boot Manager | 93 | Amoeba |
Er bestaan diverse programma's voor het aanmaken en verwijderen van partities. De meeste besturingssystemen beschikken over eigen programma's, en het is verstandiger het programma behorend bij het besturingssysteem te gebruiken, voor het geval het iets ongewoons uithaalt dat de andere programma's niet kunnen. Veel van die programma's hebben de naam fdisk, waaronder die van Linux, of variaties daarop. Details over het gebruik van de Linux fdisk worden gegeven in de bijbehorende manpage. De opdracht cfdisk is vergelijkbaar met fdisk, maar het biedt een fraaiere (schermvullende) gebruikersinterface.
Bij gebruik van IDE-disks, moet de bootpartitie (de partitie met de opstartbare kernel image bestanden) zich volledig binnen de eerste 1024 cylinders bevinden. Dit is omdat de disk tijdens het booten via de BIOS wordt gebruikt (voordat het systeem naar de protected modus overgaat), en de BIOS kan niet meer dan 1024 cylinders hanteren. Soms is het mogelijk om een bootpartitie te gebruiken die zich slechts gedeeltelijk binnen de eerste 1024 cylinders bevindt. Dit werkt zolang alle bestanden die door de BIOS worden ingelezen binnen de eerste 1024 voorkomen. Aangezien dit moeilijk te regelen valt, is het een zeer slecht idee om dit te doen; je weet nooit of een update van de kernel of het defragmenteren van een disk in een systeem resulteert waarvan niet meer kan worden opgestart. Zorg er daarom voor dat je bootpartitie zich volledig binnen de eerste 1024 cylinders bevindt. [1]
Een aantal nieuwere versies van de BIOS en IDE-disks kunnen, in feite, disks met meer dan 1024 cylinders hanteren. Als je een dergelijk systeem hebt, kun je het probleem negeren; als je er niet helemaal zeker van bent, plaats het dan binnen de eerste 1024 cylinders.
Iedere partitie hoort uit een even aantal sectoren te bestaan, aangezien de Linux bestandssystemen gebruik maken van een blokomvang van 1 kilobyte, d.w.z. twee sectoren. Een oneven aantal sectoren zal er in resulteren dat de laatste sector niet zal worden gebruikt. Dit zal niet in enige problemen resulteren, maar het is lelijk, en een aantal versies van fdisk zal hier een waarschuwing over geven.
Het wijzigen van de omvang van een partitie vereist normaal gesproken dat je een backup maakt van alles wat je van die partitie wilt bewaren (bij voorkeur van de gehele disk, voor het geval dat), de partitie verwijdert, een nieuwe partitie aanmaakt, en dan alles op de nieuwe partitie terugzet. Als de partitie groter wordt, kan het zijn dat je bovendien ook de omvang van de aangrenzende partities aan moet passen (en er een backup van moet maken en de gegevens terug moet zetten).
Aangezien het veranderen van de omvang van een partitie nogal pijnlijk is, heb je bij voorkeur de partities gelijk de eerste keer goed, of heb je een effectief en makkelijk te gebruiken backupsysteem. Als je vanaf media installeert, waarbij niet veel menselijke interactie is vereist (zoals bijvoorbeeld vanaf CD-ROM, in tegenstelling tot diskettes), is het vaak makkelijker om eerst met verschillende configuraties te spelen. Aangezien je er toch nog geen gegevens op hebt staan, is het minder erg om de omvang van de partitie verscheidene malen te wijzigen.
Er bestaat een programma, genaamd fips [2] waarmee de omvang van een MS-DOS partitie kan worden gewijzigd zonder dat het vereist is dat je een backup maakt om daarna de gegevens weer terug te plaatsen, maar voor andere bestandssystemen is het nog altijd nodig.
Voor elke partitie en extended partitie bestaat een eigen apparaatbestand. De naamgeving voor deze bestanden bestaat hieruit dat het nummer van een partitie aan de naam van de gehele disk wordt toegevoegd, met de afspraak dat 1-4 primaire partities zijn (ongeacht hoeveel primaire partities er zijn) en 5-8 logische partities (ongeacht binnen welke primaire partitie ze voorkomen). Bijvoorbeeld, /dev/hda1 is de eerste partitie op de eerste IDE harddisk, en /dev/sdb7 is de derde extended partitie op de tweede SCSI harddisk.
| [1] | Dit hoeft niet langer zo te zijn bij nieuwere versies van LILO die LBA (Logical Block Addressing) ondersteunen. Raadpleeg de documentatie van je distributie om te zien of het een versie van LILO biedt welke ondersteuning heeft voor LBA. |
| [2] | Het programma fips is opgenomen in vrijwel alle Linux distributies. De commerciële partitiebeheerder "Partition Magic" biedt een vergelijkbare faciliteit met een fraaiere interface. Denk er alsjeblieft aan dat partitioneren niet zonder gevaren is. Wees ervan overtuigd dan je een recente backup hebt met belangrijke gegevens voordat je de omvang van een partitie op een werkend systeem tracht te wijzigen. Met het programma GNU parted kunnen behalve MS-DOS partities ook nog andere typen partities in omvang worden gewijzigd, maar soms op beperkte wijze. Raadpleeg de documentatie van parted voordat je het gaat gebruiken, beter veilig dan sorry. |