Waarom zou je eigenlijk partitioneren? Alhoewel het mogelijk is een perfect functionerend Linux-systeem op een systeem met een enkele partitie draaiend te krijgen, en het in feite eenvoudiger is het op deze wijze te configureren, zijn er een aantal voordelen bij het partitioneren van één of meer opslagdevices in meerdere partities.
Ondanks dat het waar is dat Linux prima zal werken op een disk met slechts één grote gedefinieerde partitie, zijn er verscheidene voordelen om je disk op zijn minst in de vier belangrijkste (root, usr, home, en swap) bestandssystemen te partitioneren. Dit zijn:
Als eerste kan het zijn dat het minder lang duurt om de controle's op de bestandssystemen uit te voeren (zowel bij het opstarten als bij een handmatige fsck), omdat deze controle's parallel kunnen worden uitgevoerd. (Tussen twee haakjes, voer fsck NOOIT uit op een gemount bestandssysteem!!! Je zal er bijna zeker spijt van krijgen wat ermee gebeurt. De uitzondering hierop is wanneer het bestandssysteem read-only is gemount, in welk geval dit veilig is te doen). Ook zijn controle's op bestandssystemen veel eenvoudiger te doen op een systeem met meerdere partities. Als ik bijvoorbeeld wist dat er zich op mijn /home partitie problemen voordeden, zou ik het gewoon kunnen unmounten, er een bestandssysteemcontrole op uit kunnen voeren, en het dan opnieuw kunnen mounten om het bestandssysteem te repareren (als tegenovergestelde van het booten van mijn systeem in single-user mode met een rescue-diskette en het dan te repareren).
Ten tweede kun je met meerdere partities één of meer partities als read-only mounten, als je dat wilt. Als je bijvoorbeeld besluit dat alles in /usr door niemand, zelfs niet door root, mag worden aangeroerd, dan kun je de /usr partitie als read-only mounten.
Als laatste, het belangrijkste voordeel waarin partitionering voorziet is dat het bescherming biedt aan je bestandssystemen. Als er iets gebeurt met een bestandssysteem (óf door een fout van een gebruiker óf door falen van het systeem), zou men op een gepartitioneerd systeem waarschijnlijk alleen bestanden op een enkel bestandssysteem kwijt raken. Op een niet-gepartioneerd systeem zou men ze waarschijnlijk op alle bestandssystemen kwijt raken.
Dit kleine feit kan een groot voordeel zijn. Als je root-partitie bijvoorbeeld zo beschadigd is dat je niet kunt booten, kun je fundamenteel booten vanaf een rescue-diskset, je root-partitie mounten en kopiëren wat je kunt (of herstellen vanaf een backup, zie Chapter 8 voor details over hoe van bestanden een backup kan worden gemaakt en ze kunnen worden teruggezet) naar een andere partitie zoals home, en dan opnieuw booten met behulp van de nood-bootdisk, door in te tikken “mount root=/dev/hda3” (in de veronderstelling dat de partitie met je tijdelijke root bestandssysteem zich op de derde partitie van hda bevindt) en je volledig functionele Linux-box booten. Vervolgens kun je fsck op je niet gemounte beschadigde root-partitie uitvoeren.
Ik heb persoonlijk catastrofen ervaren bij bestandssystemen, en ik was erg dankbaar dat de schade door het gebruik van meerdere partities was beperkt.
Ten slotte, aangezien het onder Linux mogelijk is andere besturingssystemen (zoals Windows 95/98/NT, BeOS, of wat je dan ook hebt) in te stellen, en dan tweevoudig (of drievoudig, ...) je systeem te booten, kan het zijn dat je aanvullende partities in wilt stellen om hier gebruik van te maken. Je zou hier op z'n minst een apartie partitie voor ieder besturingssysteem in moeten stellen. Linux heeft een behoorlijke bootloader (genaamd LILO voor systemen gebaseerd op Intel, alhoewel iets vergelijkbaars ook beschikbaar is als MILO voor de Alpha, en SILO voor de Sparc) waarmee het mogelijk is tijdens het opstarten aan te geven welk besturingssysteem je wilt booten, met een time-out standaardboot van je favoriete besturingssysteem (waarschijnlijk Linux, niet?)
Je zou een disk (of meer disks) overeenkomstig je behoeften kunnen partitioneren. In mijn ervaring op Intel, Alpha, en Sparc platformen, voor een tamelijk belast systeem (rekening houdend met de toekomst), waarmee een tamelijke hoeveelheid taken kan worden verricht (als een desktopsysteem thuis of als een Internet-server op 't werk) heb ik bij benadering voor het vaststellen van een partitie-grootte de volgende ruimte tamelijk effectief gevonden.
Gegeven: Een gegeven disk van X Mb/Gb (bv. 2 Gb) (Of, meer dan één disk met een gecombineerd totaal van X Mb/Gb) Bereken: (swap) ongeveer twee keer de hoeveelheid RAM (bv. 64 Mb systeem wordt 128 Mb swap) / (root) ongeveer 10% van wat beschikbaar is (bv. 200 Mb) /home ongeveer 20% van wat beschikbaar is (bv. 400 Mb) /usr alle resterende ruimte (bv. 1272 Mb) /var (optioneel -- zie hieronder) /boot (optioneel -- zie hieronder) /archive (optioneel -- zie hieronder) |
Natuurlijk zijn de hoeveelheden van hierboven slechts benaderingen. Uiteraard wil je een beetje met deze percentages goochelen, afhankelijk van waar je je Linux-systeem voor wilt gebruiken. Als je iets dergelijks gaat doen als het toevoegen van zeer grote applicaties als WordPerfect of Netscape, of misschien ondersteuning voor Japanse tekens toe gaat voegen, zou je er waarschijnlijk van profiteren als je wat meer /usr ruimte hebt.
Ik schijn altijd veel ruimte beschikbaar te hebben op /home, dus als je gebruikers niet veel doen (of als je strikte quota-grootte hebt opgelegd) of je geen shell-accounts en persoonlijke webpagina's biedt, enz., zou je de ruimte voor /home waarschijnlijk kunnen verlagen en /usr verhogen.
Hieronder staat een beschrijving van de diverse mountpoints en bestandssysteem-informatie, wat je een beter beeld kan geven van hoe je het best je partitie-grootte voor je eigen behoeften kunt definiëren:
/ (root) - gebruikt om zaken als tijdelijke bestanden, de Linux kernel en boot-image, belangrijke binaire bestanden (dat wat nodig is voordat Linux de /usr partitie kan mounten), en belangrijker de logbestanden, spoolgebieden voor afdruktaken en uitgaande e-mail, en inkomende e-mail voor gebruikers op te slaan. Het wordt ook als tijdelijke ruimte gebruikt wanneer er bepaalde bewerkingen moeten worden uitgevoerd, zoals het bouwen van RPM-packages vanuit RPM bronbestanden. Als je daarom veel gebruikers met veel e-mail hebt, of denkt veel tijdelijke ruimte nodig te hebben, wil je misschien meer ruimte tot je beschikking hebben. Het type partitie zou de standaarwaarde 83 (Linux native) moeten blijven. Bovendien zal je waarschijnlijk de bootable flag op deze partitie in willen schakelen om het mogelijk te maken informatie hier op te slaan.
/usr/ - zou de grootste partitie moeten zijn, omdat de meeste binaire bestanden benodigd voor Linux, als ook enige lokaal geïnstalleerde software, webpages, Squid proxy cache, Samba share services, wat lokaal geïnstalleerde software logbestanden, enz. hier zijn opgeslagen. Het type partitie zou de standaardwaarde 83 (Linux native) moeten blijven.
/home/ - als je voor je gebruikers niet in shell-accounts voorziet, hoef je deze partitie niet zo groot te maken. De uitzondering hierop is als je voorziet in homepages voor gebruikers (zoals webpages voor school), in welk geval je er profijt van kunt hebben als je deze partitie wat groter maakt. Nogmaals, het type partitie zou de standaardwaarde 83 (Linux native) moeten blijven.
(swap) - Linux voorziet in iets dat “virtueel geheugen” wordt genoemd om een grotere hoeveelheid geheugen beschikbaar te maken dan het fysieke RAM dat op je systeem is geïnstalleerd. Om dit te bewerkstelligen wordt de swappartitie met main RAM door Linux gebruikt. Als stelregel zou je swappartitie op z'n minst zo groot moeten zijn als tweemaal de hoeveelheid op je systeem geïnstalleerd fysiek RAM.
Als je meer dan één fysieke harddisk in je systeem hebt, kun je meerdere swappartities aanmaken. Hierdoor kan de performance van het swappen worden verbeterd door het voordeel van parallelle disktoegang. Op bijvoorbeeld een 256 Mb systeem met vier drives, zou ik waarschijnlijk vier 128 Mb swappartities aanmaken, voor een totaal van 256 Mb RAM, 512 Mb swap (voor een gecombineerd totaal van 768 Mb beschikbaar als virtueel geheugen). Het type partitie moet worden gewijzigd in 82 (Linux swap).
![]() | Noot: Het is een algemene misvatting dat Linux een 128 Mb swapgrootte limiet heeft. Voorheen klopte dit, maar in moderne Linux-distributies is de grootte afhankelijk van je architectuur (Intel-systemen kunnen bijvoorbeeld swapgroottes tot wel 2 Gb hebben). Typ ``man mkswap'' voor meer informatie. |
/var/ (optioneel) - Misschien dat je wilt overwegen je / (root) partitie wat verder op te splitsen. De /var directory wordt voor een heel groot deel tijdens de uitvoering gebruikt voor opslag, waaronder mail spools (zowel inkomende als uitgaande), afdruktaken, locks op processen, enz. Het kan wat gevaarlijk zijn deze directory onder / (root) te mounten, omdat (bijvoorbeeld) een grote hoeveelheid inkomende e-mail de partitie mogelijk op kan vullen. Aangezien er vervelende dingen kunnen gebeuren (systeemcrash?) wanneer de / (root) partitie volraakt, kunnen dergelijke problemen met een /var op een eigen partitie worden voorkomen. Ik had succes bij welke hoeveelheid ruimte ik dan ook aan / (root) had toegekend, misschien het verdubbelend, en dan vervolgens aparte partities voor / (root) en voor /var aan te maken. Het type partitie zou de standaardwaarde 83 (Linux native) moeten worden gelaten.
/boot/ (optioneel) - In een aantal omstandigheden (zoals een systeem setup in een software RAID-configuratie) kan een aparte partitie nodig zijn waarvan het Linux-systeem boot. Met deze partitie zou het mogelijk zijn te booten en de vereiste drivers te laden en de andere bestandssystemen in te lezen. De grootte van deze partitie kan zo klein zijn als een paar Mb; Ik raad bij benadering een partitie aan van 10 Mb (wat voldoende ruimte zou zijn om de kernel, initiële RAMdisk image, en misschien één of twee backupkernels op te slaan). Het type partitie zou de standaardwaarde 83 (Linux native) moeten worden gelaten.
/archive/ (optioneel) - Als je extra ruimte overhebt, zou je misschien baat hebben bij een partitie voor een directory bijvoorbeeld genaamd, /archive. Je kunt de /archive directory dan gebruiken om backupmateriaal, grote of niet frequent benaderde bestanden, samba file-services, of wat dan ook wat je van nut vindt, op te slaan. Het type partitie kan als de standaardwaarde 83 (Linux native) blijven, of als je het zowel van onder Linux als vanuit een ander besturingssysteem wilt kunnen benaderen, zou je het kunnen wijzigen naar een andere ID, zoals 6 (DOS 16-bit >=32M).
Als er extra disk(s) worden toegevoegd, kunnen er verdere partities op de nieuwe disk(s) worden toegevoegd, op diverse mountpoints zoveel als nodig worden gemount -- dit betekent dat je met een Linux-systeem je nooit zorgen hoeft te maken dat je ruimte te kort gaat komen. Als het bijvoorbeeld in de toekomst duidelijk is dat sda6 vol zal raken, zouden we een andere drive toe kunnen voegen, een aardig grote partitie in kunnen stellen met een mount-point op /usr/local -- en dan alle informatie vanaf /usr/local naar de nieuwe disk kunnen transporteren. Maar geen enkel systeem of applicatie-component zou “breken” omdat Linux /usr/local zou zien ongeacht waar het te lokaliseren was.
Om je een voorbeeld te geven van hoe men partities in zou kunnen stellen, heb ik het volgende partitieschema op een Intel-systeem gebruikt (dual boot, Windows 95 en Linux):
Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 254 1024096+ 6 DOS 16-bit >=32M /dev/hda2 255 255 782 2128896 5 Extended /dev/hda5 255 255 331 310432+ 83 Linux native /dev/hda6 332 332 636 1229728+ 83 Linux native /dev/hda7 637 637 749 455584+ 83 Linux native /dev/hda8 750 750 782 133024+ 82 Linux swap |
De eerste partitie, /dev/hda1, is een DOS-geformatteerd bestandssysteem dat wordt gebruikt voor het opslaan van het alternatieve besturingssysteem (Windows 95). Dit geeft me voor dat besturingssysteem 1 Gb aan ruimte.
De tweede partitie, /dev/hda2, is een fysieke partitie (genaamd “extended”) welke de resterende ruimte op de drive omvat. Het wordt alleen gebruikt om de overblijvende logische partities in te kapselen (er kunnen slechts 4 fysieke partities op een disk voorkomen; in mijn situatie waren meer dan 4 partities nodig, daarom moest ik een logisch partitieschema voor de andere partities gebruiken).
De derde tot aan de vijfde partitie, /dev/hda5, /dev/hda6, en /dev/hda7, zijn allen e2fs-geformatteerde bestandssystemen die respectievelijk voor de / (root), /usr, en de /home partities worden gebruikt.
Ten slotte wordt de zesde partitie /dev/hda8, voor de swappartitie gebruikt.
Voor nog een ander voorbeeld, deze keer een Alpha box met twee harddisks (enkele boot, alleen Linux), heb ik voor het volgende partitieschema gekozen:
Device Boot Begin Start End Blocks Id System /dev/sda1 1 1 1 2046 4 DOS 16-bit <32M /dev/sda2 2 2 168 346859 83 Linux native /dev/sda3 169 169 231 130851 82 Linux swap /dev/sda4 232 232 1009 1615906 5 Extended /dev/sda5 232 232 398 346828 83 Linux native /dev/sda6 399 399 1009 1269016 83 Linux native /dev/sdb1 1 1 509 2114355 83 Linux native /dev/sdb2 510 510 1019 2118540 83 Linux native |
De eerste partitie, /dev/sda1, is een DOS-geformatteerd bestandssysteem, welke wordt gebruikt om de MILO boot loader op te slaan. Het Alpha-platform heeft een iets andere methode om te booten dan een Intel-systeem, daarom slaat Linux zijn boot-informatie op in een FAT-partitie. Deze partitie hoeft slechts zo groot te zijn als de kleinst mogelijk toegestane partitie -- in deze situatie, 2Mb.
De tweede partitie, /dev/sda2, is een e2fs-geformatteerd bestandssysteem dat voor de / (root) partitie wordt gebruikt.
De derde partitie, /dev/sda3, wordt gebruikt voor de swappartitie.
De vierde partitie, /dev/sda4, is een “extended” partitie (zie vorige voorbeeld voor details).
De vijfde en zesde partitie, /dev/sda5, en /dev/sda6, zijn e2fs-geformatteerde bestandssystemen respectievelijk voor de /home en /usr partities.
De zevende partitie, /dev/sdb1, is een e2fs-geformatteerd bestandssysteem dat wordt gebruikt voor de /archive partitie.
De achtste en laatste partitie, /dev/sdb2, is een e2fs-geformatteerd bestandssysteem dat wordt gebruikt voor de /archive2 partitie.
Nadat je klaar bent met het instellen van de partitie-informatie, zal je de nieuwe partitie naar disk weg moeten schrijven. Hierna laadt het installatieprogramma de partitietabel opnieuw in het geheugen, en kun je dus verdergaan met de volgende stap van het installatieproces.