[FAQ Index] [Naar Sectie 13 - Multimedia] [Naar Sectie 15 - Packages en Ports]
De details voor het instellen van schijven in OpenBSD variëren per platform, dus u zou de installatie-instructies in het INSTALL.<arch> voor uw platform moeten lezen om de bijzonderheden voor uw systeem vast te stellen.
De twee soorten "partitie" zijn:
Alle OpenBSD platformen gebruiken disklabel(8) als de primaire wijze om OpenBSD bestandssysteem partities te beheren, maar slechts enkele platformen hebben ook fdisk(8) nodig om partitietabel partities te beheren. Op de platformen die fdisk partities gebruiken, wordt één fdisk partitie gebruikt voor alle OpenBSD bestandssysteem partities. Deze partitie wordt dan onderverdeeld in disklabel partities. Deze disklabel partitions worden "a" tot en met "p" genoemd. Enkele van deze zijn "speciaal":
Sommige utilities staan u toe om de "korte" naam van een partitie (zoals "sd0d") of een schijf (zoals "wd1") te gebruiken in plaats van de echte naam van het apparaat (resp. "/dev/sd0d" of "/dev/wd1c").
Merk nogmaals op dat als u gegevens zet op wd2d en later wd1 van het systeem verwijdert en opnieuw opstart, dat uw gegevens dan op wd1d staan, aangezien uw oude wd2 nu wd1 is. De identificatie van een schijf wijzigt echter niet na het opstarten, dus als een USB-schijf wordt verwijderd of stuk gaat, zal de identificatie van andere schijven niet veranderen totdat u opnieuw opstart.
Deze UID's kunnen bijna overal worden gebruikt waar een partitie of een apparaat wordt gespecificeerd, bijvoorbeeld in /etc/fstab of op opdrachtregels. Uiteraard kunnen schijven en partities ook worden aangeduid op de traditionele wijze, met apparaat, volgnummer en partitie (bv. /dev/sd1f), en beide kunnen door elkaar worden gebruikt.
Merk op dat het DUID een kenmerk is van het disklabel, maar omdat OpenBSD slechts één disklabel per disk ondersteunt is dat slechts een academisch detail.
fdisk(8) wordt op sommige platformen (i386, amd64, macppc, zaurus en armish) gebruikt om een partitie aan te maken die herkend wordt door de boot ROM van het systeem, en waarin de OpenBSD disklabel partities geplaatst kunnen worden. Andere platformen hebben fdisk(8) niet nodig en gebruiken het niet. fdisk(8) kan ook gebruikt worden voor het manipuleren van de Master Boot Record (MBR), en dat kan een impact hebben voor alle besturingssystemen op een computer. In tegenstelling tot de fdisk-achtige programma's op sommige andere besturingssytemen, veronderstelt OpenBSD's fdisk dat u weet wat u wil doen. Voor het overgrote deel zal het u laten doen wat u moet doen, en dit maakt het een krachtig hulpmiddel om bij de hand te hebben. Het zal u ook dingen laten doen die u beter niet doet of waarvan het niet de bedoeling was dat u ze deed, dus het moet voorzichtig gebruikt worden.
Normaal zal er slechts één OpenBSD fdisk partitie op een schijf geplaatst worden. Die partitie zal dan door disklabel onderverdeeld worden in OpenBSD bestandssysteempartities.
Om gewoon uw partitietabel te bekijken met fdisk, gebruikt u:
# fdisk sd0
Dat zal een uitvoer gelijkaardig aan deze geven:
Disk: sd0 geometry: 553/255/63 [8883945 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
------------------------------------------------------------------------
*0: A6 3 0 1 - 552 254 63 [ 48195: 8835750 ] OpenBSD
1: 12 0 1 1 - 2 254 63 [ 63: 48132 ] Compaq Diag.
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
In dit voorbeeld bekijken we de fdisk uitvoer van de eerste SCSI-achtige schijf. We kunnen de OpenBSD partitie (id A6) en haar grootte zien. De * vertelt ons dat de OpenBSD partitie een bootable partitie is.
In het voorgaande voorbeeld bekeken we alleen onze informatie. Wat als we onze partietabel willen bewerken? Wel, om dat te doen moeten we de -e vlag gebruiken. Dit zal een commandoregel prompt tevoorschijn brengen om met fdisk te interageren.
# fdisk -e wd0
Enter 'help' for information
fdisk: 1> help
help Command help list
manual Show entire OpenBSD man page for fdisk
reinit Re-initialize loaded MBR (to defaults)
setpid Set the identifier of a given table entry
disk Edit current drive stats
edit Edit given table entry
flag Flag given table entry as bootable
update Update machine code in loaded MBR
select Select extended partition table entry MBR
swap Swap two partition entries
print Print loaded MBR partition table
write Write loaded MBR to disk
exit Exit edit of current MBR, without saving changes
quit Quit edit of current MBR, saving current changes
abort Abort program without saving current changes
fdisk: 1>
Hier is een overzicht van de commando's die u kan gebruiken wanneer u de -e vlag kiest.
Lees zeker eerst de disklabel(8) man pagina.
De details van het instellen van schijven in OpenBSD varieert enigszins tussen platformen. Voor i386, amd64, macppc, zaurus, en armish gebeurt de schijfinstelling in twee stadia. Eerst wordt de OpenBSD "slice" van de harde schijf gedefinieerd met fdisk(8), vervolgens wordt die slice onderverdeeld in OpenBSD partities met disklabel(8).
Alle OpenBSD platformen gebruiken echter disklabel(8) als de primaire manier om OpenBSD partities te beheren. Platformen die ook fdisk(8) gebruiken, plaatsen al de disklabel(8) partities in één enkele fdisk partitie.
Labels bevatten bepaalde informatie over uw schijf, zoals uw schijfgeometrie en informatie over de bestandssystemen op de schijf. De disklabel wordt vervolgens gebruikt door het bootstrap-programma om toegang te krijgen tot de schijf en om te weten waar bestandssystemen zich op de schijf bevinden. U kan meer gedetailleerde informatie over disklabel lezen in de disklabel(5) man pagina.
Op sommige platformen helpt disklabel architectuurbeperkingen qua schijfpartitionering te overwinnen. Op i386 bijvoorbeeld, kan u slechts 4 primaire partities hebben, maar met disklabel(8) gebruikt u één van deze 'primary' partities om al uw OpenBSD partities (bv. 'swap', '/', '/usr' en '/var', enz.) in te bewaren. En dan hebt u nog 3 partities over, beschikbaar voor andere besturingssystemen.
Een van de grote onderdelen van de OpenBSD installatie is het initieel aanmaken van labels. Tijdens de installatie gebruikt u disklabel(8) om uw afzonderlijke partities aan te maken. Als onderdeel van het installatieproces kan u uw "mount points" definiëren vanuit disklabel(8), maar u kan deze later ook wijzigen nog tijdens of na de installatie.
Er is niet één "juiste" manier om een schijf te labelen, maar er zijn veel foute manieren. Alvorens te proberen uw schijf te labelen, zie deze discussie over partitioneren en partitiegroottes.
Voor een voorbeeld van het gebruik van disklabel(8) tijdens de installatie, zie het onderdeel Aangepaste disklabel layout van de Installatiegids.
Na de installatie zal één van de meest voorkomende redenen om disklabel(8) te gebruiken zijn: bekijken hoe uw schijf georganiseerd is. Het volgende commando zal u de huidige disklabel tonen, zonder hem te wijzigen:
# disklabel wd0 <-- Of welke schijf device u graag zou bekijken type: ESDI disk: ESDI/IDE disk label: SAMSUNG HD154UI duid: d920a43a5a56ad5f flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 16 sectors/cylinder: 1008 cylinders: 2907021 total sectors: 2930277168 boundstart: 64 boundend: 2930272065 drivedata: 0 16 partitions: # size offset fstype [fsize bsize cpg] a: 1024064 64 4.2BSD 2048 16384 1 # / b: 4195296 1024128 swap c: 2930277168 0 unused d: 4195296 5219424 4.2BSD 2048 16384 1 # /usr e: 4195296 9414720 4.2BSD 2048 16384 1 # /tmp f: 20972448 13610016 4.2BSD 2048 16384 1 # /var h: 2097632 34582464 4.2BSD 2048 16384 1 # /home
Merk op hoe bij deze schijf momenteel slechts een deel van de capaciteit is toegekend. Disklabel biedt twee verschillende modi om de disklabel aan te passen: een ingebouwde commandogestuurde editor (dit is hoe u OpenBSD oorspronkelijk installeerde), en een volwaardige editor zoals vi(1). U zal misschien de commandogestuurde editor "gemakkelijker" vinden, aangezien hij u doorheen alle stappen gidst en op verzoek hulp biedt, maar de volwaardige editor heeft zeker ook nut.
Laten we aan het bovenstaande systeem een partitie toevoegen.
Waarchuwing: Wanneer u aan uw disklabel begint te peuteren, brengt u alle gegevens op uw schijf in gevaar. Zorg ervoor dat uw gegevens gebackupt zijn alvorens een bestaande disklabel te wijzigen!
We zullen de ingebouwde commandogestuurde editor gebruiken, die aangeroepen wordt met de "-E" optie van disklabel(8).
In dit geval was disklabel(8) vriendelijk genoeg om een goede start "offset" te berekenen voor de partitie. In veel gevallen zal het dit kunnen doen, maar als u "gaten" hebt in de disklabel (dus u hebt een partitie verwijderd, of u houdt er gewoon van om uw leven ellendig te maken) kan het gebeuren dat u met pen en papier de juiste offset moet berekenen. Merk op dat hoewel disklabel(8) een beetje gezondheidscontrole uitvoert, het heel goed mogelijk is om hier heel verkeerde dingen te doen. Wees voorzichtig, begrijp de betekenis van de getallen die u ingeeft.# disklabel -E wd0 ... > a k offset: [36680096] size: [2893591969] 1T Rounding to cylinder: 2147483536 FS type: [4.2BSD] > p m OpenBSD area: 64-2930272065; size: 1430796.9M; free: 364310.8M # size offset fstype [fsize bsize cpg] a: 500.0M 64 4.2BSD 2048 16384 1 # / b: 2048.5M 1024128 swap c: 1430799.4M 0 unused d: 2048.5M 5219424 4.2BSD 2048 16384 1 # /usr e: 2048.5M 9414720 4.2BSD 2048 16384 1 # /tmp f: 10240.5M 13610016 4.2BSD 2048 16384 1 # /var h: 1024.2M 34582464 4.2BSD 2048 16384 1 # /home k: 1048575.9M 36680192 4.2BSD 8192 65536 1 > q Write new label?: [y]
Op de meeste OpenBSD platformen zijn er zestien disklabel-partities beschikbaar, aangeduid van "a" tot "p". (bepaalde "speciale" systemen kunnen er slechts acht hebben). Elke disklabel zou een 'c' partitie moeten hebben, met een "fstype" van "unused", die de gehele fysische schijf bedekt. Als uw disklabel er niet zo uitziet, moet hij hersteld worden, de "D" optie (zie hieronder) kan helpen. Probeer nooit de "c" partitie te gebruiken voor iets anders dan toegang te krijgen tot de "raw" sectoren van de schijf, probeer niet om een bestandssysteem aan te maken op "c". Op de boot device wordt "a" gereserveerd voor de rootpartitie, en is "b" de swappartitie, maar alleen de boot device maakt dit onderscheid. Andere devices kunnen alle vijftien partities behalve "c" gebruiken voor bestandssystemen.
Zodra u uw schijf JUIST geïnstalleerd krijgt, moet u fdisk(8) (alleen i386) en disklabel(8) gebruiken om uw schijf in te stellen in OpenBSD.
Voor i386 mensen, begin met fdisk. Andere architecturen kunnen dit negeren. In het onderstaande voorbeeld voegen we een derde SCSI-achtige schijf toe aan het systeem.
Dit zal de "echte" partitietabel van de schijf initialiseren voor exclusief gebruik door OpenBSD. Vervolgens moet u er een disklabel voor aanmaken. Dit zal verwarrend lijken.# fdisk -i sd2
Ten eerste, negeer de 'c' partitie, die is er altijd en dient om programma's als disklabel te laten functioneren! Fstype voor OpenBSD is 4.2BSD. Total sectors is de totale grootte van de schijf. Stel dat dit een 3 gigabyte schijf is. Drie gigabytes betekent in schijffabrikant-termen 3000 megabytes. Deel dus 6185088/3000 (gebruik bc(1)). U bekomt 2061. Om dus partitiegroottes te verzinnen voor a, d, e, f, g, ... vermenigvuldigt u gewoon X*2061 om X megabytes ruimte te krijgen op die partitie. De offset voor uw eerste nieuwe partitie moet hetzelfde zijn als de "sectors/track" eerder vermeld in de uitvoer van disklabel. Voor ons is dit 63. De offset voor elke volgende partitie moet een combinatie zijn van de grootte van elke partiite en de offset van elke partitie (behalve de 'c' partitie, aangezien die geen rol speelt in deze vergelijking.)# disklabel -e sd2 (scherm wordt leeg, uw $EDITOR verschijnt) type: SCSI ...bla... sectors/track: 63 total sectors: 6185088 ...bla... 16 partitions: # size offset fstype [fsize bsize cpg] c: 6185088 0 unused 0 0 # (Cyl. 0 - 6135) d: 1405080 63 4.2BSD 1024 8192 16 # (Cyl. 0*- 1393*) e: 4779945 1405143 4.2BSD 1024 8192 16 # (Cyl. 1393*- 6135)
Of, als u gewoon één partitie op de schijf wil, stel dat u het hele ding voor webruimte of een home directory of zoiets wil gebruiken, neem dan gewoon de totale grootte van de schijf en trek het aantal sectoren per track ervan af. 6185088-63 = 6185025. Uw partitie is
d: 6185025 63 4.2BSD 1024 8192 16
>
Als dit allemaal nodeloos complex lijkt, kan u gewoon disklabel -E gebruiken
om dezelfde paritioneringsmodus te krijgen die u op uw installatieschijf heeft
verkregen!
Daar kan u gewoon "96M" gebruiken om "96 megabytes" te specificeren, of
96G voor 96 gigs.
Dat was veel. Maar u bent nog niet klaar. Tenslotte moet u een bestandssysteem aanmaken op die schijf met newfs(8).
# newfs sd2d
Of hoe uw schijf ook werd genoemd door OpenBSD's schijfnummeringsschema. (Kijk naar de uitvoer van dmesg(8) om te zien hoe uw schijf genoemd werd door OpenBSD.)
Zoek nu uit waar u deze nieuwe partitie die u net gemaakt hebt, gaat mounten. Stel dat u ze op /u wil plaatsen. Maak eerst de directory /u. Mount ze vervolgens.
# mount /dev/sd2d /u
Voeg dit tenslotte toe aan /etc/fstab(5).
/dev/sd2d /u ffs rw 1 1
Wat als u een bestaande directory zoals /usr/local moet migreren? U kunt het best de nieuwe schijf in /mnt mounten en /usr/local naar de /mnt directory kopiëren. Bijvoorbeeld:
Bewerk het /etc/fstab(5) bestand om aan te geven dat de /usr/local partitie nu /dev/sd2d is (uw vers geformatteerde partitie). Voorbeeld:# cd /usr/local && pax -rw -p e . /mnt
/dev/sd2d /usr/local ffs rw 1 1
Herstart in single user modus met boot -s, verplaats de bestaande /usr/local naar /usr/local-backup (of verwijder het als het vandaag uw geluksdag is) en maak een lege directory /usr/local aan. Herstart vervolgens het systeem, en voila, de bestanden zijn er!
Een niet voor de hand liggend gebruik van swap is om een plek te bieden aan de kernel om een kopie te dumpen van wat er in de core zit in het geval van een system panic voor latere analyse. Om dit te laten werken, moet u een swap-partitie hebben (geen swap-file) die minstens zo groot is als de hoeveelheid RAM. Het systeem bewaart standaard een kopie van deze dump in /var/crash wanneer het opstart, dus als u dit automatisch wilt kunnen doen, dan moet er voldoende vrije ruimte zijn op /var. U kunt het systeem echter ook booten in sinlge-user mode en savecore(8) gebruiken om de demp elders op te slaan.
Veel typen systemen kunnen correct geconfigureerd zijn met helemaal geen swap. Een firewall bijvoorbeeld zou niet moeten swappen bij normaal gebruik. Machines met flash opslag zouden in het algemeen niet moeten swappen. Als uw firewall op flash is gebaseerd, heeft u wellicht een (klein) voordeel door geen swap partitie te alloceren, maar in de meeste andere gevallen kan een swap partitie absoluut geen kwaad; de meeste schijven hebben meer dan genoeg ruimte om een beetje swap te alloceren.
Er zijn allerlei soorten tips over het optimaliseren van swap (waar op de schijf, aparte schijven, etc.), maar als u in een situatie zit waarbij het optimaliseren van swap een probleem is, dan heeft u waarschijnlijk meer RAM nodig. De beste optimalisatie voor swap is in het algemeen om het niet nodig te hebben.
In OpenBSD wordt swap beheerd met het swapctl(8) programma, dat swap devices en bestanden toevoegt, verwijdert, laat zien en prioriteiten toekent.
Op OpenBSD wordt de 'b' partitie op de boot disk standaard en automatisch gebruikt voor swap. Hiervoor is geen configuratie nodig. Als u geen swap op de boot disk wilt gebruiken, definieer dan geen 'b' partitie. Als u wilt swappen op andere partities of andere schijven, dan moet u deze partities in /etc/fstab definiëren met regels als:
/dev/sd3b none swap sw 0 0 /dev/sd3d none swap sw 0 0
Soms blijkt uw eerste gok over de hoeveelheid swap die u nodig heeft niet te kloppen en moet u extra swapruimte toevoegen, soms met spoed (bijvoorbeeld: "Gut, als we met deze snelheid de swap opstoken, worden we binnen 5 minuten geplet"). Als u zich in deze positie bevindt, kan het toevoegen van swapruimte in een bestand op een bestaand filesystem een snelle oplossing bieden.
Het bestand mag niet op een bestandssysteem staan dat SoftUpdates ingeschakeld heeft (dit is standaard uitgeschakeld). Om te beginnen kan u zien hoeveel swap u momenteel hebt en hoeveel u gebruikt met de swapctl(8) utility. U kan dit doen met het commando:
$ swapctl -l Device 512-blocks Used Avail Capacity Priority swap_device 65520 8 65512 0% 0
Dit toont de devices die momenteel gebruikt worden om te swappen en hun huidige statistieken. In het bovenstaande voorbeeld is er slechts één device, met name "swap_device". Dit is het voorgedefinieerde gebied op de schijf dat gebruikt wordt om te swappen. (Verschijnt als partitie b bij het bekijken van disklabels.) Zoals u ook kan zien in het bovenstaande voorbeeld, wordt dat device momenteel niet veel gebruikt, maar voor de bedoeling van dit document zullen we doen alsof er 32M extra benodigd is.
De eerste stap om een bestand als een swap device in te stellen, is om een bestand aan te maken. Het beste is om dit te doen met de dd(1) utility. Hier is een voorbeeld van het aanmaken van het bestand /var/swap dat 32M groot is.
$ sudo dd if=/dev/zero of=/var/swap bs=1k count=32768 32768+0 records in 32768+0 records out 33554432 bytes transferred in 20 secs (1677721 bytes/sec)
Zodra dit gebeurd is, kunnen we swappen naar dat device aanzetten. Gebruik het volgende commando om het swappen naar dit device aan te zetten
$ sudo chmod 600 /var/swap $ sudo swapctl -a /var/swap
Nu moeten we controleren om te zien of het juist werd toegevoegd aan de lijst van onze swap devices.
$ swapctl -l Device 512-blocks Used Avail Capacity Priority swap_device 65520 8 65512 0% 0 /var/swap 65536 0 65536 0% 0 Total 131056 8 131048 0%
Nu het bestand is ingesteld en het swappen gebeurt, moet u een lijn toevoegen aan uw /etc/fstab bestand zodat dit bestand geconfigureerd wordt ook de volgende keer als u start. Als deze lijn niet toegevoegd wordt, zal dit swap device niet geconfigureerd worden.
$ cat /etc/fstab /dev/wd0a / ffs rw 1 1 /var/swap /var/swap swap sw 0 0
Soft Updates is gebaseerd op een idee voorgesteld door Greg Ganger en Yale Patt en ontwikkeld voor FreeBSD door Kirk McKusick. SoftUpdates legt een gedeeltelijke schikking op aan de buffer cache operaties die toelaat de vereiste voor het synchroon schrijven van directory entries te verwijderen uit de FFS code. Dus, een grote performantiestijging wordt waargenomen in schijf-schrijfprestatie.
Soft updates inschakelen moet gedaan worden met een mount-optie. Bij het mounten van een partitie met de mount(8) utility, kan u specificeren dat u soft updates wenst in te schakelen op die partitie. Hieronder is een voorbeeld /etc/fstab(5) lijn die één partitie sd0a heeft die we graag zouden mounten met soft updates.
/dev/sd0a / ffs rw,softdep 1 1
Opmerking voor sparc gebruikers: Schakel soft updates niet in op sun4 of sun4c machines. Deze architecturen ondersteunen slechts een heel beperkte hoeveelheid kernelgeheugen en kunnen deze functionaliteit niet gebruiken. sun4m machines zijn echter wel goed.
Hoewel OpenBSD zijn eigen MBR code bevat, bent u niet verplicht om deze te gebruiken, aangezien praktisch gelijk welke MBR code OpenBSD kan booten. De MBR wordt gemanipuleerd door het fdisk(8) programma, dat gebruikt wordt zowel om de partitietabel de bewerken, als om de MBR code op de schijf te installeren.
OpenBSD's MBR kondigt zichzelf aan met de boodschap:
Using drive 0, partition 3.
wat de schijf en de partitie toont waar het de PBR vandaan zal laden.
Bovenop het vanzelfsprekende, toont dit ook een punt (".") achteraan, wat
aangeeft dat de machine LBA vertaling kan gebruiken om te booten.
Als de machine geen LBA translatie kon gebruiken, zou de bovenstaande
punt zijn vervangen door een puntkomma (";"), dat CHS vertaling aangeeft:
Merk op dat het punt of kommapunt achteraan gebruikt kan worden als een indicator van de "nieuwe" OpenBSD MBR, geïntroduceerd in OpenBSD 3.5.Using drive 0, partition 3;
De PBR wordt geïnstalleerd door installboot(8), dat verder in dit document nader beschreven wordt. De PBR kondigt zichzelf aan met de boodschap:
Loading...
en geeft daarbij een punt weer voor elk bestandssysteem-blok dat het probeert
te laden.
Ook hier, de PBR toont of hij LBA of CHS gebruikt om te laden, als hij CHS
vertaling moet gebruiken, toont hij een boodschap met een kommapunt:
Loading;...
boot(8) is een interactief programma. Nadat het laadt, probeert het /etc/boot.conf te localiseren en te lezen, indien het bestaat (dit is niet het geval op een standaardinstallatie), en verwerkt de commando's daarin. Tenzij anders opgelegd door /etc/boot.conf, geeft het vervolgens een prompt aan de gebruiker:
Het geeft de gebruiker (standaard) vijf seconden om het andere taken te geven, maar als er geen gegeven worden voor de timeout, begint het zijn standaardgedrag: de kernel, bsd, inladen vanaf de root partitie van de eerste harde schijf. De second-stage boot loader onderzoekt uw systeem hardware via de BIOS (aangezien de OpenBSD kernel niet geladen is). Hierboven kan u enkele dingen zien die het gezocht en gevonden heeft:probing: pc0 com0 com1 apm mem[636k 190M a20=on] disk: fd0 hd0+ >> OpenBSD/i386 BOOT 3.18 boot>
Using drive 0, partition 3. <- MBR
Loading.... <- PBR
probing: pc0 com0 com1 apm mem[636k 190M a20=on] <- /boot
disk: fd0 hd0+
>> OpenBSD/i386 BOOT 3.18
boot>
booting hd0a:/bsd 4464500+838332 [58+204240+181750]=0x56cfd0
entry point at 0x100120
[ using 386464 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993 <- Kernel
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2012 OpenBSD. All rights reserved. http://www.OpenBSD.org
OpenBSD 5.2 (GENERIC) #278: Wed Aug 1 10:04:16 MDT 2012
deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
...
U kan de OpenBSD MBR op uw schijf installeren met het fdisk programma. Boot vanaf uw installatiemedium, kies "Shell" om een commandoprompt te krijgen:
U kan met fdisk ook een specieke MBR naar de schijf schrijven:# fdisk -u wd0
dit zal het bestand /usr/mdec/mbr installeren als MBR van uw systeem. Dit welbepaald bestand is op een standaard OpenBSD installatie toevallig de standaard MBR die ook in fdisk ingebouwd zit, maar gelijk welke andere MBR zou hier kunnen gespecificeerd worden.# fdisk -u -f /usr/mdec/mbr wd0
Voor meer informatie over het i386 bootproces, zie
OpenBSD ondersteunt zowel FFS als FFS2 (ook bekend als UFS en UFS2) bestandssystemen. FFS is het historische OpenBSD bestandssysteem, FFS2 is nieuw vanaf 4.3. Alvorens de grenzen van elk systeem te bekijken, moeten we enkele meer algemene systeemgrenzen bekijken.
Natuurlijk zijn de mogelijkheden van bestandssystemen en de mogelijkheden van bepaalde hardware twee verschillende dingen. Een nieuwere 250G harde schijf kan problemen hebben op oudere (pre >137G standaarden) interfaces (hoewel ze voor het grootste deel gewoon prima werken), en bij sommige heel oude SCSI adapters werden problemen gezien met meer moderne schijven, en sommige oudere BIOSen zullen vasthangen wanneer ze een harde schijf met moderne grootte tegenkomen. U moet natuurlijk de mogelijkheden van uw hardware en boot code respecteren.
Om deze reden moet het volledige /bsd bestand (de kernel) op de schijf staan binnen de door het boot ROM adresseerbare gebied. Dit betekent dat op sommige oudere i386 systemen, de root partitie volledig binnen de eerste 504M moet vallen, maar nieuwere computers kunnen beperkingen van 2G, 8G, 32G, 128G of meer hebben. Het is de moeite waard om op te merken dat vele relatief nieuwe computers die schijven groter dan 128G ondersteunen, in feite BIOS beperkingen hebben waardoor ze enkel van binnen de eerste 128G kunnen booten. U kan deze systemen met grotere schijven gebruiken, maar uw root partitie moet vallen binnen de ruimte die ondersteund wordt door het boot ROM.
Merk op dat het mogelijk is om een 40G schijf op een oude 486 te installeren en OpenBSD er op te laden als één grote partitie, en te denken dat u met succes de bovenstaande regel overtreden hebt. Het kan u echter op de meest onaangename manier komen kwellen:
Waarom? Omdat wanneer u het nieuwe /bsd bestand "over" kopieerde, dit niet het oude overschreef, het werd een nieuwe locatie toegekend op de schijf, waarschijnlijk buiten het 504M bereik dat het BIOS ondersteunt. De boot loader kon het bestand /bsd niet opvragen, en het systeem hing vast.
Om OpenBSD te kunnen booten, moeten de boot loaders (biosboot(8) en /boot in het geval van i386/amd64) en de kernel (/bsd) binnen het door het BIOS ondersteunde bereik zitten, en binnen hun eigen mogelijkheden. Om op veilig te spelen, is de regel eenvoudig:
De volledige root partitie moet binnen de door het BIOS van de computer (of door het boot ROM) adresseerbare ruimte vallen.
Sommige niet-i386 gebruikers denken dat ze hier immuun voor zijn, maar de meeste platformen hebben een vorm van boot ROM beperking voor schijfgrootte. Helemaal zeker te weten komen wat die beperking is, kan echter moeilijk zijn.
Dit is nog een andere goede reden om uw schijf te partitioneren, veeleer dan één grote partitie te gebruiken.
De tijd vereist om fsck op de schijf uit te voeren, kan een probleem worden naarmate het bestandssysteem uitbreidt, maar u hoeft alleen de schijfruimte te fsck'en die werkelijk gealloceerd is aan gemounte bestandssystemen. Dit is nog een reden waarom u NIET al uw schijfruimte wil toekennen gewoon omdat ze er is. Bestandssystemen mounten met RO of ze niet mounten helpt om te vermijden dat ze gefsck(8)ed moeten worden na het struikelen over een netsnoer. Het reduceren van het aantal inodes (met de -i optie van newfs) kan ook helpen om de fsck-tijd te verbeteren, ervan uitgaande dat u ze ook echt niet nodig heeft.
Vergeet niet dat als u meerdere schijven in het systeem hebt, het zou kunnen dat ze allemaal terzelfdertijd gefsck(8)ed worden na een crash, dus dat zou meer RAM kunnen vergen dan een enkele schijf.
De boot/installatiekernels ondersteunen alleen FFS, niet FFS2, dus systeempartities met een sleutelrol (/, /usr, /var, /tmp) mogen niet FFS2 zijn, of ernstige onderhoudsproblemen kunnen zich voordoen (er zou toch geen reden mogen zijn waarom die partities zo groot moeten zijn). Om deze reden worden heel grote partities best alleen gebruikt worden voor "niet-systeem" partities, bijvoorbeeld /home, /var/www/, /bigarray, etc.
Merk op dat niet alle controllers en drivers grote schijven ondersteunen. Bijvoorbeeld, ami(4) heeft een begrenzing van 2TB per logisch volume. Wees er altijd van bewust wat er beschikbaar was op het moment dat een controller of interface werd gemaakt en vertrouw niet op "de connector past".
Om schijven groter dan 2TB te kunnen gebruiken maakt u een OpenBSD-partitie op de schijf met fdisk, ongeacht de grootte die fdisk laat zien. Als u de disk indeelt met disklabel(8), gebruik dan de "b" optie om de grenzen die OpenBSD ziet (die standaard zijn ingesteld op de grootte van de fdisk partitie) in te stellen op de gehele schijf. U kunt nu uw partities maken zoals u wenst. U moet echter nog steeds de mogelijkheden van uw BIOS respecteren, die de beperking heeft om alleen fdisk partities te snappen. Uw 'a' partitie moet geheel binnen het fdisk-gedeelte van uw schijf liggen, in aanvulling op eventuele beperkingen van het BIOS.
OpenBSD heeft een heel robuuste bootloader die vrij onverschillig is voor schijfgeometrie. Hij is echter wel gevoelig voor waar het /boot bestand zich op de schijf bevindt. Als u iets doet waardoor boot(8) verplaatst wordt naar een nieuwe plek op de schijf (eigenlijk een nieuwe inode), dan zal u uw systeem "breken", het zal niet juist meer kunnen opstarten. Om uw boot block te herstellen zodat u normaal kan booten, plaatst u eerst een boot-CDROM in uw CD-speler (of gebruik een bootable floppy) en typ op de boot prompt "boot hd0a:/bsd" om het te dwingen vanaf de eerste harde schijf (en niet vanaf de CD of diskette) te booten. Uw machine zou zoals normaal moeten opstarten. Nu moet u de first-stage bootloader (biosboot(8)) herinstalleren op basis van de positie van het /boot bestand, met het installboot(8) programma.
Ons voorbeeld zal veronderstellen dat uw boot schijf sd0 is (maar voor IDE zou het wd0, enz. zijn):
Merk op dat "/boot" de fysieke locatie van het bestand "boot" is dat u wilt gebruiken voor het booten van het systeem zoals het momenteel gemount is. Als uw situatie enigszins afwijkt en u net geboot heeft vanaf CD, waarbij uw 'a' partitie is gemount op /mnt, dan moet u waarschijnlijk "/mnt/boot" gebruiken. installboot(8) doet twee dingen -- het installeert het bestand "biosboot" op de juiste plek in het Partition Boot Record en modificeert het met de fysieke locatie van het "/boot" bestand.# cd /usr/mdec; ./installboot /boot biosboot sd0
Als u van plan bent om iets te draaien dat een productieserver zou kunnen genoemd worden, is het aan te raden om een vorm van backup te hebben voor het geval één van uw vaste schijven het begeeft of de data op een andere wijze verloren gaat.
Deze informatie zal u de standaard dump(8)/restore(8) utilities helpen gebruiken die voorzien zijn in OpenBSD. Meer geavanceerde backup utilities, zoals "Amanda" en "Bacula" zijn beschikbaar via packages om meerdere servers naar schijf en tape te backuppen.
Backup naar tape vereist kennis van waar uw bestandssystemen gemount zijn. U kan te weten komen hoe uw bestandssystemen gemount zijn met het mount(8) commando op uw shell prompt. U zou uitvoer moeten krijgen gelijkaardig aan:
# mount /dev/sd0a on / type ffs (local) /dev/sd0h on /usr type ffs (local)
In dit voorbeeld staat het root (/) bestandssysteem fysisch op sd0a dat aangeeft: SCSI-achtige vaste schijf 0, partitie a. Het /usr bestandssysteem verblijft op sd0h, wat aangeeft: SCSI vaste schijf 0, partitie h.
Een ander voorbeeld van een meer geavanceerde mount-tabel zou kunnen zijn:
# mount /dev/sd0a on / type ffs (local) /dev/sd0d on /var type ffs (local) /dev/sd0e on /home type ffs (local) /dev/sd0h on /usr type ffs (local)
In dit meer geavanceerde voorbeeld staat het root (/) bestandssysteem fysisch op sd0a. Het /var bestandssysteem staat op sd0d, het /home bestandssysteem op sd0e en tenslotte /usr op sd0h.
Om uw machine te backup'en zal u dump de naam moeten meegeven van elke vaste schijfpartitie. Hier is een voorbeeld van de commando's nodig voor een backup van de eenvoudigere mount-tabel die hoger getoond werd:
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h # mt -f /dev/rst0 rewind
Voor het voorbeeld van de meer geavanceerde mount tabel, zou u iets gebruiken dat lijkt op:
# /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0d # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0e # /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h # mt -f /dev/rst0 rewind
U kan de dump(8) man pagina bekijken om precies te leren wat elke commandolijn-optie doet. Hier is een korte omschrijving van de parameters die hierboven gebruikt werden:
Tenslotte welke partitie te backup'en (/dev/rsd0a, etc.)
Aan het einde wordt het mt(1) commando gebruikt om de tape terug te spoelen. Bekijk de mt man pagina voor meer opties (zoals eject).
Als u niet zeker bent van uw tape devicenaam, gebruik dan dmesg om hem te localiseren. Een voorbeeld van een tape drive entry in dmesg zou hierop kunnen lijken:
st0 at scsibus0 targ 5 lun 0: <ARCHIVE, Python 28388-XXX, 5.28>
U hebt misschien opgemerkt dat bij de backup, toegang tot de tape gebeurt via de devicenaam "nrst0" in plaats van de "st0" naam die in dmesg gezien wordt. Wanneer u st0 als nrst0 benadert, benadert u dezelfde fysische tape maar zegt u daarbij dat hij niet moet terugspoelen aan het einde van de taak en benadert u het device in "raw" modus. Om meerdere bestandssystemen naar een enkele tape te backup'en, gebruik dan zeker het non-rewind device, als u een rewind device (rst0) gebruikt om meerdere bestandssystemen te backup'en, zal u uiteindelijk het vorige door het volgende bestandssysteem overschrijven dat dump naar tape probeert te schrijven. U kan een meer uitgebreide beschrijving van verschillende tape devices terugvinden in de dump man pagina.
Als u een klein script met de naam "backup" wou schrijven, zou dit er ongeveer zou kunnen uitzien:
echo " Starting Full Backup..." /sbin/dump -0au -f /dev/nrst0 /dev/rsd0a /sbin/dump -0au -f /dev/nrst0 /dev/rsd0d /sbin/dump -0au -f /dev/nrst0 /dev/rsd0e /sbin/dump -0au -f /dev/nrst0 /dev/rsd0h echo echo -n " Rewinding Drive, Please wait..." mt -f /dev/rst0 rewind echo "Done." echo
Als geplande nachtelijke backups gewenst zijn, zou cron(8) gebruikt kunnen worden om uw backup script automatisch te starten.
Het zal ook nuttig zijn om te documenteren (op een stukje papier) hoe groot elk bestandssysteem moet zijn. U kan "df -h" gebruiken om te bepalen hoeveel ruimte elke partitie momenteel gebruikt. Dit zal handig zijn als de schijf het begeeft en u uw partitietabel op de nieuwe schijf opnieuw moet maken.
Uw gegevens herstellen zal ook fragmentatie helpen reduceren. Om er zeker van te zijn dat u alle bestanden meeneemt, is de beste manier voor een backup het systeem rebooten in single user modus. Bestandssystemen hoeven niet gemount te zijn om gebackupt te worden. Vergeet niet om root (/) r/w te mounten na het booten van uw systeem in single user modus of uw dump zal mislukken wanneer hij dumpdata probeert weg te schrijven. Geef "bsd -s" in op de boot> prompt voor single user modus.
Nadat u voor het eerst uw bestandssystemen gebackupt hebt, zou het een goed idee zijn om kort uw tape te testen en er zeker van te zijn dat de gegevens er op staan zoals u verwacht.
U kan het volgende voorbeeld gebruiken om een catalogus van bestanden op een dump tape te na te kijken:
# /sbin/restore -tvs 1 -f /dev/rst0
Dit zorgt ervoor dat een lijst van bestanden verschijnt die op de 1ste partitie van de dump tape staan. Volgens de bovenstaande voorbeelden, zou 1 uw root (/) bestandssysteem zijn.
Om te zien wat er op de 2de tape partitie staat en de uitvoer naar een bestand te sturen, zou u een commando gelijkaardig aan dit gebruiken:
# /sbin/restore -tvs 2 -f /dev/rst0 > /home/me/list.txt
Als u een mount-tabel hebt zoals de eenvoudige, zou 2 /usr zijn, als de uwe een meer geavanceerde mount-tabel is, zou 2 /var of een ander fs kunnen zijn. Het sequentienummer stemt overeen met de volgorde waarin de bestandssystemen naar tape geschreven worden.
Het voorbeeldscenario hieronder zou nuttig zijn als uw vaste schijf het volledig heeft laten afweten. Voor het geval u een enkel bestand vanaf tape wil restoren, kijk de restore man pagina na en let daarbij op de interactive mode instructies.
Als u zich goed hebt voorbereid, kan een schijf vervangen en uw gegevens restoren een heel snel proces zijn. De standaard OpenBSD installatie/boot diskette bevat reeds de vereiste restore utility en ook de binaries vereist om uw nieuwe schijf te partitioneren en bootable te maken. In de meeste gevallen zijn deze diskette en uw meest recente dump tape al wat u zal nodig hebben om weer aan de slag te geraken.
Na het fysisch vervangen van de kapotte schijf, zijn de basisstappen om uw gegevens te restoren de volgende:
Boot vanaf de OpenBSD installatie/boot diskette. Bij de menuselectie kiest
u Shell. Bescherm uw tape tegen overschrijven en plaats hem in de lezer.
Maak met het fdisk(8) commando een primaire OpenBSD partitie op deze nieuw geïnstalleerde schijf. Voorbeeld:
# fdisk -e sd0
Zie fdisk FAQ voor meer info.
Maak met het disklabel commando opnieuw uw OpenBSD partitietabel binnen die primaire OpenBSD partitie die u net met fdisk hebt aangemaakt. Voorbeeld:
# disklabel -E sd0
(Vergeet swap niet, zie disklabel FAQ voor meer info)
Gebruik het newfs commando om een proper bestandssysteem te bouwen op elke partitie die u in de vorige stap aanmaakte. Voorbeeld:
# newfs /dev/rsd0a # newfs /dev/rsd0h
Mount uw zonet voorbereid root (/) bestandssysteem op /mnt. Voorbeeld:
# mount /dev/sd0a /mnt
Ga naar dat gemounte root bestandssysteem en start het restore proces. Voorbeeld:
# cd /mnt # restore -rs 1 -f /dev/rst0
U zal willen dat deze nieuwe schijf bootable is, gebruik het volgende om een nieuwe MBR naar uw schijf te schrijven. Voorbeeld:
# fdisk -i sd0
Bovenop het wegschrijven van een nieuwe MBR naar de schijf, zal u er boot blocks moeten op installeren. Het volgende is een kort voorbeeld:
# cp /usr/mdec/boot /mnt/boot # /usr/mdec/installboot -v /mnt/boot /usr/mdec/biosboot sd0
Uw nieuw root bestandssysteem op de vaste schijf zou moeten klaar zijn zodat u het kan booten en verder gaan met de rest van uw bestandssystemen te restoren. Aangezien uw besturingssysteem nog niet volledig is, zorgt u er voor om in single user modus te booten. Voer op de shell prompt de volgende commando's uit om het systeem te unmounten en te stoppen:
# umount /mnt # halt
Verwijder de installatie/boot diskette uit het station en herstart uw systeem. Voer op de OpenBSD boot> prompt het volgende commando uit:
boot> bsd -s
De bsd -s zal ervoor zorgen dat de kernel in single user modus gestart wordt, wat alleen een root (/) bestandssysteem vereist.
In de veronderstelling dat u de bovenstaande stappen correct hebt uitgevoerd en er niets verkeerd gegaan is, zou u moeten terechtkomen op een prompt die u vraagt om een shell pad in te geven of return te duwen. Duw return om sh te gebruiken. Vervolgens zal u root in r/w willen hermounten in tegenstelling tot read only. Voer het volgende commando uit:
# mount -u -w /
Zodra u / in r/w modus gehermount hebt kan u verdergaan met uw andere bestandssystemen te restoren. Voorbeeld:
(eenvoudige mount-tabel) # mount /dev/sd0h /usr; cd /usr; restore -rs 2 -f /dev/rst0 (meer geavanceerde mount-tabel) # mount /dev/sd0d /var; cd /var; restore -rs 2 -f /dev/rst0 # mount /dev/sd0e /home; cd /home; restore -rs 3 -f /dev/rst0 # mount /dev/sd0h /usr; cd /usr; restore -rs 4 -f /dev/rst0
U zou "restore rvsf" kunnen gebruiken in plaats van gewoon rsf om de namen van objecten te zien terwijl ze vanaf de dump set uitgepakt worden.
Tenslotte, nadat u klaar bent met al uw andere bestandssystemen op schijf te restoren, kan u herstarten in multi-user modus. Als alles ging zoals gepland, zal uw systeem weer in de toestand zijn waarin het zich bevond ten tijde van uw meest recente backup, en opnieuw klaar om te gebruiken.
Om een schijfimage (ISO images, schijfimages gemaakt met dd, enz.) te mounten in OpenBSD, moet u een vnd(4) device configureren. Bijvoorbeeld, als u een ISO image hebt staan in /tmp/ISO.image, zou u de volgende stappen volgen om de image te mounten.
# vnconfig vnd0 /tmp/ISO.image # mount -t cd9660 /dev/vnd0c /mnt
Merk op dat aangezien dit een ISO-9660 image is, zoals gebruikt door CD's en DVD's, u als type cd9660 moet specificeren bij het mounten. Dit geldt ongeacht het type, u moet bv. type ext2fs gebruiken bij het mounten van Linux schijfimages.
Gebruik de volgende commando's om de image te unmounten.
# umount /mnt # vnconfig -u vnd0
Raadpleeg voor meer informatie de vnconfig(8) man pagina.
DMA IDE transfers, ondersteund door pciide(4) zijn onbetrouwbaar bij vele combinaties van oudere hardware.
OpenBSD is aggressief en probeert de hoogste DMA Mode die het kan configureren. Dit zal corruptie van gegevenstransfers veroorzaken in sommige configuraties vanwege buggy moederbord chipsets, buggy schijven, en/of ruis op de kabels. Gelukkig beschermt Ultra-DMA gegevenstransfers met een CRC om corruptie te detecteren. Wanneer de Ultra-DMA CRC mislukt, zal OpenBSD een foutboodschap geven en de operatie opnieuw proberen.
wd2a: aborted command, interface CRC error reading fsbn 64 of 64-79 (wd2 bn 127; cn 0 tn 2 sn 1), retrying
Na enkele keren te falen, zal OpenBSD "downgraden" naar een tragere (hopelijk meer betrouwbare) Ultra-DMA mode. Als Ultra-DMA mode 0 bereikt is, dan zal de schijf downgraden naar PIO mode.
UDMA fouten worden vaak veroorzaakt door lage kwaliteits- of beschadigde kabels. Kabelproblemen zouden gewoonlijk de eerste verdachte moeten zijn indien u veel DMA fouten of onverwacht lage DMA prestatie krijgt. Het is ook een slecht idee om de CD-ROM op hetzelfde kanaal als een harde schijf te zetten.
Als het vervangen van de kabels het probleem niet oplost en OpenBSD niet met succes downgrade't, of het proces zorgt ervoor dat uw machine hard vasthangt, of veroorzaakt buitensporig veel boodschappen op de console en in de logs, dan wil u misschien het systeem dwingen tot het standaard gebruiken van een lager DMA of UDMA level. Dit kan gedaan worden met UKC of config(8) om de vlaggen van het wd(4) device te veranderen.
Wanneer een bestandssysteem gemaakt wordt met newfs(8), wordt een beetje van de beschikbare ruimte op reserve gehouden weg van normale gebruikers. Dit biedt een foutenmarge wanneer u per ongeluk de schijf vult, en helpt om schijffragmentering tot een minimum te beperken. Standaard hiervoor is 5% van de schijfcapaciteit, dus als de root gebruiker achteloos de schijf aan het vullen geweest is, kan u tot 105% van de beschikbare capaciteit in gebruik zien.
Als de waarde van 5% niet gepast is voor u, kan u ze veranderen met het tunefs(8) commando.
Als u een beschadigde partitietabel hebt, zijn er verschillende dingen die u kan proberen om ze te herstellen.
Ten eerste, panikeer. Dit doet u gewoonlijk toch, dus u kan er maar beter komaf mee maken. Doe gewoon niets doms. Panikeer weg van uw machine. Ontspan vervolgens, en kijk of de onderstaande stappen u niet helpen.
Er wordt voor elke schijf een kopie van het disklabel bewaard in /var/backups als onderdeel van het dagelijkse systeemonderhoud. In de veronderstelling dat u nog steeds de var partitie hebt, kan u eenvoudigweg de uitvoer lezen en terugplaatsen in het disklabel.
In het geval u die partitie niet langer kan zien, zijn er twee opties. Herstel voldoende van de schijf zodat u ze kan zien, of herstel voldoende van de schijf zodat u uw gegevens er kan afhalen. Afhankelijk van wat er gebeurde, kan het ene of het andere te verkiezen zijn (bij stervende schijven wil u eerst de data, met vuile vingers kan u gewoon het label hebben).
De eerste tool die u nodig hebt is scan_ffs(8) (bemerk de underscore, het heet niet "scanffs"). scan_ffs(8) zal een schijf bekijken, en proberen partities te vinden en u ook zeggen welke informatie het erover terugvindt. U kan deze informatie gebruiken om het disklabel te reconstrueren. Als u gewoon /var terug wil, kan u de partitie voor /var opnieuw aanmaken, en dan het backup-label herstellen en de rest van daar uit toevoegen.
disklabel(8) zal de kernel zijn begrip van het disklabel updaten, en ook het label naar de schijf proberen te schrijven. Daarom zal u, zelfs als het gebied van de schijf dat het disklabel bevat onleesbaar is, het kunnen mount(8)en tot de volgende reboot.
We zullen een algemeen overzicht geven van het gebruik van één van deze bestandssystemen onder OpenBSD. Om een bestandssysteem te kunnen gebruiken, moet het gemount worden. Raadpleeg voor details en mountopties alstublieft de mount(8) manual pagina, en die van het mount commando voor het bestandssysteem dat u zal mounten, bv. mount_msdos, mount_ext2fs, ...
Eerst moet u weten op welk device uw bestandssysteem zich bevindt. Dit kan gewoon uw eerste harde schijf, wd0 of sd0, zijn maar het kan ook minder voor de hand liggend zijn. Alle herkende en geconfigureerde devices op uw systeem worden vermeld in de uitvoer van het dmesg(1) commando: een devicenaam, gevolgd door een beschrijving op één lijn van het device. Mijn eerste CD-ROM lezer wordt bijvoorbeeld als volgt herkend:
cd0 at scsibus0 targ 0 lun 0: <COMPAQ, DVD-ROM LTD163, GQH3> SCSI0 5/cdrom removable
Voor een veel kortere lijst van beschikbare schijven kan u het sysctl(8) commando gebruiken. Het commando
zal alle schijven tonen die uw systeem momenteel kent, bijvoorbeeld:# sysctl hw.disknames
hw.disknames=cd0:,cd1:,wd0:,fd0:,cd2:
Op dit punt is het tijd om te weten te komen welke partities er op het device zijn, en in welke partitie het gewenste bestandssysteem zit. Daarvoor onderzoeken we het device met disklabel(8). De disklabel bevat een lijst van partities, met een maximum aantal van 16. Partitie c duidt altijd het volledige device aan. Partities a-b en d-p worden gebruikt door OpenBSD. Partities i-p kunnen automatisch toegewezen worden aan bestandssystemen van andere besturingssystemen. In dit geval zal ik de disklabel van mijn harde schijf bekijken, die een aantal verschillende bestandssystemen bevat.
OPMERKING: OpenBSD werd na de andere besturingssystemen geïnstalleerd op dit systeem, en tijdens de installatie werd een disklabel op de schijf geïnstalleerd die partities bevat voor zowel de "native" als de vreemde bestandssystemen. Als u echter vreemde bestandssystemen installeert nadat de OpenBSD disklabel reeds geïnstalleerd is op de schijf, moet u ze nadien handmatig toevoegen of wijzigen. Dit zal uitgelegd worden in deze subsectie.
# disklabel wd0 # using MBR partition 2: type A6 off 20338290 (0x1365672) size 29318625 (0x1bf5de1) # /dev/rwd0c: type: ESDI disk: ESDI/IDE disk label: ST340016A duid: d920a43a5a56ad5f flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 16 sectors/cylinder: 1008 cylinders: 16383 total sectors: 78165360 boundstart: 20338290 boundend: 49656915 drivedata: 0 16 partitions: # size offset fstype [fsize bsize cpg] a: 408366 20338290 4.2BSD 2048 16384 16 # / b: 1638000 20746656 swap c: 78165360 0 unused d: 4194288 22384656 4.2BSD 2048 16384 16 # /usr e: 409248 26578944 4.2BSD 2048 16384 16 # /tmp f: 10486224 26988192 4.2BSD 2048 16384 16 # /var g: 12182499 37474416 4.2BSD 2048 16384 16 # /home i: 64197 63 unknown j: 20274030 64260 unknown k: 1975932 49656978 MSDOS l: 3919797 51632973 unknown m: 2939832 55552833 ext2fs n: 5879727 58492728 ext2fs o: 13783707 64372518 ext2fs
Zoals gezien kan worden in de bovenstaande uitvoer, worden eerst de OpenBSD partities opgesomd. Daarbuiten zijn er een aantal ext2 partities en één MSDOS partitie, en ook enkele 'onbekende' partities. Op i386 en amd64 systemen kan u daarover gewoonlijk meer te weten komen met de fdisk(8) utility. Voor de nieuwsgierige lezer: partitie i is een onderhoudspartitie aangemaakt door de verkoper, partitie j is een NTFS partitie en partitie l is een Linux swappartitie.
Zodra u bepaald hebt welke partitie het is die u wil gebruiken, kan u overgaan tot de laatste stap: het bestandssysteem dat er in zit mounten. De meeste bestandssystemen worden ondersteund in de GENERIC kernel: kijk maar eens naar het kernelconfiguratiebestand, te vinden in de /usr/src/sys/arch/<arch>/conf directory. Als u één van de bestandssystemen wil gebruiken die niet ondersteund zijn in GENERIC, zal u een aangepaste kernel moeten bouwen.
Wanneer u de benodigde informatie hebt verzameld zoals hierboven vermeld, is het tijd om het bestandssysteem te mounten. Laten we aannemen dat een directory /mnt/anderfs bestaat, die we zullen gebruiken als mountpunt waar we het gewenste bestandssysteem zullen mounten. In dit voorbeeld zullen we het ext2 bestandssysteem in partitie m mounten:
# mount -t ext2fs /dev/wd0m /mnt/anderfs
Als u van plan bent dit bestandssysteem regelmatig te gebruiken, kan u uzelf wat tijd besparen door er een lijn voor in /etc/fstab te plaatsen, bijvoorbeeld iets als:
Bemerk de 0 waarden in het vijfde en zesde veld. Dit betekent dat we niet vereisen dat het bestandssysteem gedumpt moet worden, en gecontroleerd met fsck. In het algemeen zijn dat dingen die u wil laten afhandelen door het moeder-besturingssyssteem geassocieerd met het bestandssysteem./dev/wd0m /mnt/anderfs ext2fs rw,noauto,nodev,nosuid 0 0
Als voorbeeld heb ik één van mijn bestaande ext2 partities gewijzigd: met het Linux fdisk programma heb ik de grootte van de 'o' partitie (zie disklabel uitvoer hierboven) gereduceerd tot 1G. We zullen ze gemakkelijk kunnen herkennen aan haar startpositie (offset: 64372518) en grootte (13783707). Merk op dat deze waarden sectornummers zijn, en dat het gebruik van sectornummers (niet megabytes of gelijk welke andere maat) de meest exacte en veiligste manier is om deze informatie uit te lezen.
Vóór de wijziging zag de partitie er als volgt uit met OpenBSD's fdisk(8) utility (alleen relevante uitvoer overlatend):
# fdisk wd0
. . .
Offset: 64372455 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
------------------------------------------------------------------------
0: 83 4007 1 1 - 4864 254 63 [ 64372518: 13783707 ] Linux files*
. . .
Zoals u kan zien, zijn de startpositie en grootte precies die die eerder
door disklabel(8) vermeld werden.
(Laat u niet misleiden door de waarde aangeduid door "Offset": ze verwijst
naar de startpositie van de "extended" partitie waarin de ext2 partitie
vervat zit.)
Na het wijzigen van de partitiegrootte vanuit Linux, ziet ze er zo uit:
# fdisk wd0
. . .
Offset: 64372455 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
------------------------------------------------------------------------
0: 83 4007 1 1 - 4137 254 63 [ 64372518: 2104452 ] Linux files*
. . .
Nu moet dit veranderd worden met disklabel(8).
U kan bijvoorbeeld disklabel -e wd0 ingeven, wat een editor zal
opstarten gespecificeerd door de EDITOR omgevingsvariabele (standaard is vi).
Verander binnen de editor de laatste lijn van de disklabel zodat ze de
nieuwe grootte bevat:
Bewaar de disklabel op de schijf wanneer u klaar bent. Nu de disklabel opnieuw up to date is, zou u uw partities moeten kunnen mounten zoals hoger beschreven werd.o: 2104452 64372518 ext2fs
U kan een heel gelijkaardige procedure volgen om nieuwe partities toe te voegen.
Deze lijnen geven aan dat de umass(4) (USB mass storage) driver vastgehangen werd aan het geheugentoestel, en dat hij het SCSI systeem gebruikt. De laatste twee lijnen zijn de belangrijkste: ze zeggen op welke device node het geheugentoestel vastgemaakt werd, en wat de totale hoeveelheid opslagruimte is. Als u op één of andere manier deze lijnen gemist hebt, kan u ze nadien nog steeds zien met het dmesg(1) commando. De gerapporteerde CHS geometrie is eerder fictief, aangezien het flash geheugen behandeld wordt als gelijk welke gewone SCSI schijf.umass0 at uhub1 port 1 configuration 1 interface 0 umass0: LEXR PLUG DRIVE LEXR PLUG DRIVE, rev 1.10/0.01, addr 2 umass0: using SCSI over Bulk-Only scsibus2 at umass0: 2 targets sd0 at scsibus2 targ 1 lun 0: <LEXAR, DIGITAL FILM, /W1.> SCSI2 0/direct removable sd0: 123MB, 512 bytes/sec, 251904 sec total
We zullen hieronder twee scenario's bespreken.
In dit voorbeeld maakte ik gewoon één partitie a waarin ik een FFS bestandssysteem zal plaatsen:
# newfs sd0a
Warning: inode blocks/cyl group (125) >= data blocks (62) in last
cylinder group. This implies 1984 sector(s) cannot be allocated.
/dev/rsd0a: 249856 sectors in 122 cylinders of 64 tracks, 32 sectors
122.0MB in 1 cyl groups (122 c/g, 122.00MB/g, 15488 i/g)
super-block backups (for fsck -b #) at:
32,
Laten we het bestandssysteem dat we in de a partitie aanmaakten,
mounten op /mnt/flashmem.
Maak het mountpunt eerst aan als het niet bestaat.
# mkdir /mnt/flashmem # mount /dev/sd0a /mnt/flashmem
Er is een aanzienlijke kans dat de andere persoon niet OpenBSD gebruikt, dus er kan een vreemd bestandssysteem op het geheugentoestel staan. Daarom zullen we eerst moeten te weten komen welke partities er op het toestel staan, zoals beschreven in FAQ 14 - Vreemde Bestandssystemen.
Zoals kan gezien worden in de disklabel uitvoer hierboven, is er slechts één partitie i, die een FAT bestandssysteem bevat, aangemaakt op een Windows machine. Zoals gewoonlijk geeft de c partitie de volledige device weer.# disklabel sd0 # /dev/rsd0c: type: SCSI disk: SCSI disk label: DIGITAL FILM flags: bytes/sector: 512 sectors/track: 32 tracks/cylinder: 64 sectors/cylinder: 2048 cylinders: 123 total sectors: 251904 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # microseconds track-to-track seek: 0 # microseconds drivedata: 0 16 partitions: # size offset fstype [fsize bsize cpg] c: 251904 0 unused 0 0 # Cyl 0 - 122 i: 250592 32 MSDOS # Cyl 0*- 122*
Laten we nu het bestandssysteem in de i partitie mounten op /mnt/flashmem.
Nu kan u het beginnen gebruiken net zoals gelijk welke andere schijf.# mount -t msdos /dev/sd0i /mnt/flashmem
WAARSCHUWING: U moet het bestandssysteem altijd unmounten voor het uittrekken van het geheugentoestel. Als u dit niet doet, kan het bestandssysteem in een inconsistente toestand achterblijven, wat kan leiden tot corrupte gegevens.
Bij het uittrekken van het geheugentoestel uit uw machine zal u opnieuw zien dat de kernel hierover boodschappen naar de console schrijft:
umass0: at uhub1 port 1 (addr 2) disconnected sd0 detached scsibus2 detached umass0 detached
Een flashapparaat dat is aangesloten op een USB-poort zal verschijnen als een sd(4) SCSI-achtig apparaat. Als het is aangesloten op een IDE-adapter, dan zal het verschijnen als een wd(4) apparaat.
In het geval van flashmedia in een IDE-adapater, dan kan ieder systeem ervan booten dat kan booten van een IDE harde schijf op dezelfde adapter. Op alle mogelijke wijzen ziet het systeem de flashmedia als een IDE schijf. Configureer de hardware simpelweg op de juiste manier en installeer OpenBSD op de flashschijf zoals gebruikelijk.
In het geval van booten vanaf een USB-device moet uw systeem kunnen booten vanaf het USB-device zonder te worden afgeleid door andere apparaten op het systeem. Merk op dat als u de intentie heeft om een draagbare boot-omgeving op een USB-apparaat te maken, dat u dan echt DUIDs zou moeten gebruiken in plaats van de traditionele "/dev/sd0X" notatie. Het USB-apparaat zal verschijnen als een SCSI-disk, soms sd0. Als u dit apparaat zonder DUID verbindt met een systeem dat al enkele SCSI-achtige apparaten heeft (zoals apparaten aangesloten op een ahci(4) interface), dan zal het een andere identificatie toegewezen krijgen, wat het rouleren van systeem naar systeem zou compliceren, omdat u /etc/fstab zou moeten aanpassen. Met DUID's is dit probleem volledig opgelost.
Enkele opmerkingen:
Enkele redenen waarom u dit wellicht zou willen:
Er zijn enkele zaken die u wellicht wilt doen na de installatie om uw resultaten te verbeteren:
Schijfprestatie is een veelbetekenende factor in de globale snelheid van uw computer. Het wordt nog belangrijker wanneer uw computer een multi-user (alle soorten gebruikers, van zij die interactief inloggen tot zij die u zien als fileserver of webserver) omgeving host. Gegevensopslag heeft voortdurend aandacht nodig, vooral wanneer uw partities ruimte tekort komen of als uw schijven het laten afweten. OpenBSD heeft enkele mogelijkheden om de snelheid van uw schijfoperaties te vergroten.
Vraag: "Ik doe gewoon "mount -u -o async /" wat een pakket dat ik gebruik (dat er op staat om van tijd tot tijd enkele honderden dingen aan te raken) bruikbaar maakt. Waarom staat men afkeurend tegenover async mounten en is het niet standaard ingeschakeld (zoals het op enkele andere unixen wel is)? Is het niet een veel eenvoudigere, en daarom, veiligere manier om de prestatie in sommige toepassingen te verbeteren?"
Antwoord: "Async mounts zijn inderdaad sneller dan sync mounts, maar ze zijn ook minder veilig. Wat gebeurt er in het geval van een stroompanne? Of een hardware probleem? De zoektocht naar snelheid zou de betrouwbaarheid en de stabiliteit van het systeem niet mogen opofferen. Bekijk de man pagina van mount(8)."
async All I/O to the file system should be done asynchronously. This is a dangerous flag to set since it does not guaran- tee to keep a consistent file system structure on the disk. You should not use this flag unless you are pre- pared to recreate the file system should your system crash. The most common use of this flag is to speed up restore(8) where it can give a factor of two speed in- crease.
Aan de andere kant, wanneer u met tijdelijke gegevens te maken hebt die u vanaf nul opnieuw kan maken na een crash, kan u snelheid winnen door een afzonderelijke partitie te gebruiken voor alleen die gegevens en deze async te mounten. Opnieuw, doe dit alleen als u het verlies van alle gegevens in de partitie niet erg vindt als er iets verkeerd gaat. Om deze reden worden mfs(8) partities asynchroon gemount, aangezien ze bij een herstart toch gewist en opnieuw gemaakt worden.
[FAQ Index] [Naar Sectie 13 - Multimedia] [Naar Sectie 15 - Packages en Ports]