|
1.
Introductie van Block Devices
Block Devices
We bekijken de schijf gedeeltes van Gentoo Linux en Linux in het algemeen,
inclusief de linux bestandssystemen, partities en block devices.
Wanneer u dan bekend bent met de ins en outs van schijven en bestandssystemen,
leiden we u door het proces van het opzetten van partities en bestandssystemen
voor uw Gentoo Linux Installatie.
Om te beginnen, zullen we block devices introduceren. Het meest bekende
block device is waarschijnlijk die van de eerste IDE schijf in een Linux
systeem, namelijk /dev/hda. Als uw systeem SCSI of SATA schijven
heeft, dan kan uw eerste harde schijf /dev/sda zijn.
De hierboven genoemde block devices stellen een abstracte interface naar de
schijf voor. Programma's kunnen deze block devices gebruiken om te communiceren
met de schijf zonder zich zorgen te hoeven maken of het een IDE, SCSI of iets
anders is. Het programma kan simpelweg de ruimte als een set aangrenzende,
willekeurig te bereiken 512-byte blokken gebruiken.
Partities
Hoewel het theoretisch mogelijk is om een volledige schijf te gebruiken voor
uw Linux systeem, wordt dit in de praktijk zelden gedaan. In plaats daarvan
worden ze opgesplitst in kleinere, makkelijker te beheren block devices. Op
${arch} systemen, noemen we deze partities.
Partities worden in drie types opgedeeld:
primary (primaire), extended (uitgebreide) en logical
(logische).
Een primaire partitie is een partitie die zijn informatie opslaat in
de MBR (master boot record). Omdat een MBR erg klein is (512 bytes) kunnen
er slechts 4 primaire partities worden gebruikt (bijvoorbeeld,
/dev/hda1 tot /dev/hda4).
Een uitgebreide partitie is een speciale primaire partitie (deze moet
dus een van de primaire partities zijn) die meerdere parties kan bevatten.
Oorspronkelijk bestonden deze niet, maar omdat vier partities te weinig waren,
breidde men het partitieschema uit zonder backward compatibility
te verliezen.
Een logische partitie is een partitie binnen de extended partitie. De
definities hiervan worden niet in de MBR gezet, maar binnen in de extended
partitie.
Geavanceerde Opslag
De ${arch} Installatie CDs bieden ondersteuning voor EVMS en LVM2.
EVMS en LVM2 vergroten de flexibiliteit van uw partitie indeling. Tijdens de
installatie instructies, zullen we ons richten op "reguliere" partities,
maar het is goed om te weten dat EVMS en LVM ook ondersteund worden.
1.
Een partitie schema ontwerpen
Standaard Partitie Schema
Als u niet geïnteresseerd bent in een partitie schema te tekenen voor uw
systeem, dan kunt u het partitie schema gebruiken wat we in dit boek gebruiken:
| Partitie |
Bestandssysteem |
Grootte |
Beschrijving |
| /dev/hda1 |
ext2 |
32M |
Boot partitie |
| /dev/hda2 |
(swap) |
512M |
Swap partitie (wisselbestand) |
| /dev/hda3 |
ext3 |
Rest van de schijf |
Root partitie |
Als u wel wilt weten hoe groot een partitie moet zijn, of zelfs hoeveel
partities u nodig heeft, lees dan verder. Zo niet, dan kunt u doorgaan met het
partitioneren van uw schijf, door het lezen van fdisk
gebruiken om uw schijf te partitioneren.
Hoeveel en hoe groot?
Het aantal partities hangt zeer sterk af van uw omgeving. Bijvoorbeeld, als u
een heleboel gebruikers hebt, wilt u waarschijnlijk uw /home
gescheiden houden omdat dit de snelheid en veiligheid ten goede komt en ook
backups maken is een stuk makkelijker.
Als u Gentoo installeert als een mailserver, zou u /var
gescheiden kunnen houden, omdat al uw mails in /var staan.
Een goede keuze van uw schijfindeling zal de snelheid flink verhogen.
Gameservers zullen een aparte /opt hebben omdat de meeste
gameservers daar geïnstalleerd worden, vanwege dezelfde redenen als oor
/home>: veiligheid en backups. U wilt /usr groot
houden: het zal niet alleen het grootste deel van de applicaties bevatten, de
Portage boom op zich neemt ongeveer 500 Mbyte in beslag, exclusief de
verschillende broncodes die er opgeslagen staan.
Zoals u kunt zien, hangt het sterk af van uw doel. Gescheiden partities of
volumes hebben de volgende voordelen:
-
U kunt het best presterende bestandssysteem kiezen voor iedere partitie of
volume
-
Uw totale systeem kan niet vol zitten als een programma constant files naar
een partitie of volume probeert te schrijven
-
Zo nodig kunnen bestandssysteem controles worden beperkt in tijd, omdat meerdere
controles parallel kunnen worden uitgevoerd (hoewel dit voordeel vooral geldt
bij meerdere schijven dan meerdere partities)
-
Veiligheid kan worden verbeterd door het mounten van enkele partities of
volumes als alleen-lezen, nosuid (setuid bits worden genegeerd), noexec
(uitvoerbare bits worden genegeerd) etc.
Hoewel, meerdere partities hebben een groot nadeel: indien niet goed ingesteld,
kunt u een systeem krijgen met veel vrije ruimte op de ene en niets op de
andere. Ook is er een 15-partities limiet voor SCSI en SATA.
Als een voorbeeld partitie indeling, zullen we u laten zien hoe u een
20Gb schijf die wordt gebruikt als een demonstratie laptop (met webserver,
mailserver, gnome, ...) partitioneert:
Codevoorbeeld 1.1: Voorbeeld bestandssysteem gebruik |
$ df -h
Filesystem Type Size Used Avail Use% Mounted on
/dev/hda5 ext3 509M 132M 351M 28% /
/dev/hda2 ext3 5.0G 3.0G 1.8G 63% /home
/dev/hda7 ext3 7.9G 6.2G 1.3G 83% /usr
/dev/hda8 ext3 1011M 483M 477M 51% /opt
/dev/hda9 ext3 2.0G 607M 1.3G 32% /var
/dev/hda1 ext2 51M 17M 31M 36% /boot
/dev/hda6 swap 516M 12M 504M 2% <niet gemount>
|
/usr is hier redelijk vol (83% gebruikt), maar als
alle software is geïnstalleerd groeit /usr niet meer veel. Op het
eerste gezicht lijkt /var erg groot, maar Gentoo compileert
standaard alle programmas in /var/tmp/portage. Wanneer u
/var op bescheiden formaat wilt houden (rond de 1GB), kunt u de
PORTAGE_TMPDIR variabele in /etc/make.conf aan passen en
naar een partitie met voldoende ruimte laten verwijzen wanneer u extreem grote
pakketten (oa OpenOffice, KDE) wilt compileren.
1.
fdisk gebruiken om uw schijf te partitioneren
Het volgende deel beschrijft hoe u de eerder beschreven voorbeeld
indeling maakt, namelijk:
| Partitie |
beschrijving |
| /dev/hda1 |
Boot partitie |
| /dev/hda2 |
Swap partitie |
| /dev/hda3 |
Root partitie |
Verander uw partitie indeling eventueel naar eigen inzicht.
De huidige partitie indeling bekijken
fdisk is een populaire en krachtige tool om de schijf op te delen
in partities. Start fdisk op uw schijf (in ons voorbeeld is dat
/dev/hda):
Codevoorbeeld 1.1: Fdisk starten |
# fdisk /dev/hda
|
Eenmaal in fdisk, wordt u begroet door een prompt als deze:
Codevoorbeeld 1.1: fdisk prompt |
Command (m for help):
|
Type p om uw huidige partitie indeling te laten zien:
Codevoorbeeld 1.1: Een voorbeel partitie indeling |
Command (m for help): p
Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 14 105808+ 83 Linux
/dev/hda2 15 49 264600 82 Linux swap
/dev/hda3 50 70 158760 83 Linux
/dev/hda4 71 2184 15981840 5 Extended
/dev/hda5 71 209 1050808+ 83 Linux
/dev/hda6 210 348 1050808+ 83 Linux
/dev/hda7 349 626 2101648+ 83 Linux
/dev/hda8 627 904 2101648+ 83 Linux
/dev/hda9 905 2184 9676768+ 83 Linux
Command (m for help):
|
Deze schijf is opgedeeld in zeven Linux bestandssystemen (elke met een
partitie opgegeven als "Linux") en een swap partitie (opgegeven als
"Linux swap").
Alle Partities verwijderen
Om te beginnen verwijderen we alle bestaande partities van de schijf.
Type d om een partitie te verwijderen, bijvoorbeeld een
reeds bestaande /dev/hda1:
Codevoorbeeld 1.1: Een partitie verwijderen |
Command (m for help): d
Partition number (1-4): 1
|
De partitie is nu gemarkeerd om te verwijderen. Hij zal niet langer te
voorschijn komen als u p typt, maar hij zal niet verwijderd worden tot
u de veranderingen opslaat. Als u een fout maakt en wil stoppen
zonder uw veranderingen op te slaan, type dan q en druk op
enter. Uw partitie zal dan niet worden verwijderd.
Nu, er van uit gaande dat u inderdaad de partitie wil verwijderen, type
herhaaldelijk p om de partities te zien en daarna d met het
nummer dat u wil verwijderen. Uiteindelijk eindigt u met een lege
partitie tabel:
Codevoorbeeld 1.1: Een lege partitie tabel |
Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
Command (m for help):
|
Nu de partitie tabel in het geheugen leeg is, zijn we klaar om de partities
te maken. We zullen een standaard partitie indeling gebruiken, zoals eerder
besproken. Natuurlijk bent u niet verplicht deze te volgen!
De boot partitie maken
Eerst zullen we een kleine boot partitie maken. Type n om een nieuwe
partitie te maken, daarna p om een primaire partitie te selecteren,
gevolgd door een 1 om de eerste primaire partitie te selecteren.
Als u gevraagd wordt om de eerste cylinder aan te geven, drukt u op enter. Als
er om de laatste cylinder wordt gevraagd, typt u +32M om een partitie
van 32 Mbyte te maken:
Codevoorbeeld 1.1: De boot partitie maken |
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M
|
Wanneer u nu p typt, zou u de volgende partitie printout moeten zien:
Codevoorbeeld 1.1: Gecreerde boot partitie |
Command (m for help): p
Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 14 105808+ 83 Linux
|
Deze partitie moet opstartbaar zijn. Type a om opstartbaar aan of uit
te zetten. Kies hierbij 1. Als u nu weer p indrukt, zult u zien
dat een * in de "Boot" kolom staat.
De swap partitie maken
Laten we nu de swap partitie maken. Om dit te doen, typt u n om een
nieuwe partitie te maken, daarna p om fdisk te vertellen dat u een
nieuwe primaire partitie wil. Daarna typt u 2 om de tweede primaire
partitie aan te maken, /dev/hda2 in ons geval. Als er gevraagd
wordt om de eerste cylinder, drukt u op enter. Voor de laatste cylinder, typt
u +512M om een partitie van 512MB te maken. Als u dit gedaan heeft, typt
u t om het partitie type in te stellen, 2 om de net gemaakte
partitie te selecteren en typt u 82 om het "Linux swap" te kiezen.
Na deze stappen, zou p een partitie tabel moeten laten zien die er zo
uit ziet:
Codevoorbeeld 1.1: Partitie indeling na het maken van een swap partitie |
Command (m for help): p
Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap
|
De Root Partitie maken
Eindelijk kunnen we de root partitie aanmaken. Om dit te doen, typt u n
om weer een nieuwe partitie aan te maken, p om fdisk te vertellen dat
u een primaire partitie wilt. Type daarna 3 om een derde primaire
partitie te maken, /dev/hda3 in ons geval. Als gevraagd wordt om
de eerste cylinder, druk op enter. Daarna vraagt hij om de laatste cylinder,
druk wederom op enter om een partitie te maken die de schijf verder vult. Na
deze stappen, zou p in typen een partitie tabel moeten geven die er zo
uit ziet:
Codevoorbeeld 1.1: Partitie indeling na het maken van de root partitie |
Command (m for help): p
Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap
/dev/hda3 82 3876 28690200 83 Linux
|
De partitie indeling opslaan
Om de partitie tabel op te slaan en fdisk af te sluiten, type w.
Codevoorbeeld 1.1: Opslaan en fdisk afsluiten |
Command (m for help): w
|
Nu de partities gemaakt zijn, kunt u doorgaan met Bestandssystemen maken.
1.
Bestandssystemen maken
Introductie
Nu uw partities gemaakt zijn, is het tijd om een bestandssysteem op te zetten.
Als het u niet interesseert wat voor bestandssystemen u kunt kiezen en tevreden
bent met wat we als standaard kiezen in dit handboek, ga verder met Bestandssystemen toepassen op een partitie
Als het u wel interesseert, lees dan verder...
Bestandssystemen?
ext2 is een goed getest en echt Linux bestandssysteem maar heeft geen
metadata journaling, wat betekent dat ext2 bestandssysteem controles redelijk
veel tijd kunnen kosten. Er is nu een redelijke keuze aan nieuwere journaled
bestandssystemen die zeer snel gecontroleerd kunnen worden en dus de voorkeur
hebben boven hun niet-journaled tegenhangers. Journaled bestandssystemen
voorkomen lange vertragingen als u opstart en u een beschadigd bestandssysteem
heeft.
ext3 is de journaled versie van het ext2 bestandssysteem. Het heeft
metadata journaling voor een snel herstel naast andere journaling modes zoals
full data en ordered data journaling. ext3 is een zeer goed en
betrouwbaar bestandssysteem. Het heeft een extra hashed b-tree index
optie die betere prestaties levert in bijna iedere situatie. In het kort, ext3
is een goed bestandssysteem.
ReiserFS is een B*-tree gebaseerd bestandssysteem dat zeer goede
prestaties levert. Verder verslaat het ext2 en ext3 met factor 10x-15x in de
omgang met kleine bestanden (kleiner dan 4k). ReiserFS schaalt extreem goed
en heeft metadata journaling. Sinds kernel 2.4.18+, is ReiserFS stabiel en
bruikbaar voor zowel algemeen gebruik als voor extremere gevallen zoals grote
bestandsystemen, het gebruik van veel kleine bestanden, zeer grote bestanden
en directories die tienduizenden bestanden bevatten.
XFS is een filesystem met metadata journaling met een robuuste
feature-set en geoptimaliseerd is voor schaalbaarheid. We raden dit
alleen aan op Linux systemen met high-end SCSI en/of fibre channel opslag
en een UPS (Uninterruptible Power Supply) omdat XFS agressief in-transit
data cached in het geheugen. Slecht ontworpen programma's (die geen goede
voorbereidingen nemen bij het schrijven van bestanden naar de schijf en
daar zijn er redelijk veel van) kunnen een groot deel aan data verliezen
als het systeem onverwacht plat gaat.
JFS is IBM's high-performance journaling bestandssysteem. Het is recent
productie-klaar geworden en er is nog niet genoeg ervaring mee om er iets
(positief, noch negatief) over te zeggen.
Een bestandssysteem toepassen op een partitie
Om een bestandssysteem op een partitie of volume aan te maken, zijn er tools
beschikbaar voor elk bestandssysteem:
| Filesystem |
Commando om te maken |
| ext2 |
mke2fs |
| ext3 |
mke2fs -j -O dir_index |
| reiserfs |
mkreiserfs |
| xfs |
mkfs.xfs |
| jfs |
mkfs.jfs |
Om bijvoorbeeld van de boot partitie (/dev/hda1 in ons geval)
ext2 te maken en de root partitie (/dev/hda3 in ons geval) ext3
te maken, zou u dit gebruiken:
Codevoorbeeld 1.1: Een bestandssysteem toepassen op een partitie |
# mke2fs /dev/hda1
# mke2fs -j -O dir_index /dev/hda3
|
Maak nu de bestandssystemen aan op uw vers gemaakte partities (of logische
volumes).
De swap partitie activeren
mkswap is het commando dat gebruikt wordt om swap partities te
initialiseren:
Codevoorbeeld 1.1: De swap partitie initializeren |
# mkswap /dev/hda2
|
Om de swap partitie aan te zetten, gebruik swapon:
Codevoorbeeld 1.1: Activeer de swap partitie |
# swapon /dev/hda2
|
Maak en activeer met behulp van de bovenstaande commandos de swap partitie.
1.
Mounten (Aankoppelen van bestandssystemen)
Nu onze partities gemaakt zijn en een bestandssysteem bevatten, is het tijd ze
te mounten. Gebruik het mount commando. Vergeet niet om de benodigde map
aan te maken waar u ze wilt mounten. Als een voorbeeld mounten we de root en
boot partities:
Codevoorbeeld 1.1: De partities mounten |
# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot
|
Nota:
Als u /tmp op een aparte partitie wilt plaatsen,
zorg dat de rechten goed staan na het mounten:
chmod 1777 /mnt/gentoo/tmp. Dit geld ook voor /var/tmp.
|
We zullen ook een proc bestandssysteem (een virtuele interface met de kernel)
mounten op /proc. Maar eerst moeten we onze bestanden op
de partities plaatsen.
Ga verder met (Installeren van de Gentoo
Installatie bestanden).
|