Tijdens het initialiseren van het systeem zal de FreeBSD kernel
apparaatknooppunten creëren nadat het een apparaat gevonden
heeft. Deze manier om te zoeken naar apparaten levert wat
problemen op bijvoorbeeld wanneer er een nieuwe schijf wordt
toegevoegd via USB. Het is hoogst
waarschijnlijk dat een flash apparaat een apparaatknooppunt
krijgt van da0
, waarna de originele
da0
op schuift naar
da1
. Dit levert problemen op als
bestandssystemen worden gekoppeld als ze gedefinieerd zijn in
/etc/fstab
, dit kan zelfs ertoe leiden dat
het systeem niet opstart.
Een mogelijke oplossing hiervoor is om de
SCSI schijven een vaste plek te geven op
een bepaalde volgorde, zodat zodra er een nieuwe schijf
geplaatst wordt, deze een ongebruikt apparaatknooppunt
toegewezen krijgt. Maar wat als er USB
apparaten zijn die de primaire SCSI schijf
vervangt? Dit gebeurd omdat USB apparaten
meestal eerder gevonden worden dan een SCSI
kaart. Een oplossing hiervoor is om de apparaten pas toe te
voegen als het systeem reeds gestart is, een andere methode kan
zijn om alleen een enkele ATA schijf te
koppelen en nooit SCSI schijven door middel
van /etc/fstab
.
Maar er is een betere oplossing beschikbaar. Door het gebruik
van glabel
kunnen beheerders en gebruikers een
label toevoegen aan een schijf, en deze labels gebruiken in
/etc/fstab
. Omdat glabel
het label bewaard in de laatste sector van de schijf, kan het
label bewaard blijven ook na een reboot en kan het
bestandssysteem altijd gekoppeld worden ongeacht welk
apparaatknooppunt toegekend is aan het apparaat.
Uiteraard hoeft een label niet permanent te zijn, het
glabel
programma kan zowel tijdelijke als
permanente labels aanmaken. Alleen een permanent label blijft
beschikbaar ook na een reboot. Zie de glabel(8)
handleiding voor meer informatie over de verschillen tussen de
labeltypes.
Er zijn twee type labels: een generiek label en een
bestandssysteemlabel. Labels kunnen permanent of tijdelijk
zijn. Permanente labels kunnen met de commando's tunefs(8)
of newfs(8) aangemaakt worden. Ze zullen vervolgens worden
aangemaakt in een submap van
/dev
, welke genoemd wordt
naar het bestandssysteemtype. Bijvoorbeeld
UFS2 labels worden geplaatst in de map
/dev/ufs
. Permanente
labels kunnen ook worden aangemaakt met het commando
glabel label
. Deze zijn niet specifiek voor
het bestandssysteem, en zullen in de map /dev/label
aangemaakt
worden.
Een tijdelijk label verdwijnt na een herstart van het
systeem. Deze labels worden gecreëerd in
/dev/label
en zijn
perfect voor experimenten. Een tijdelijk kan met het commando
glabel create
worden aangemaakt. Lees voor
meer informatie de handleidingpagina van glabel(8).
Om een permanent label te schrijven voor een UFS2-bestandssysteem zonder de huidige data te vernietigen:
#
tunefs -L home /dev/da3
Als het bestandssyteem vol is kan dit leiden tot data corruptie; echter als het bestandssysteem vol is zou het hoofddoel moeten zijn om oude achtergebleven bestanden weg te halen in plaats van het toevoegen van labels.
Er zou nu een label moeten bestaan in
/dev/ufs
, welke
toegevoegd kan worden aan het /etc/fstab
bestand:
/dev/ufs/home /home ufs rw 2 2
Het bestandssysteem mag niet aangekoppeld zijn op het
moment dat tunefs
gebruikt wordt.
Nu kan het bestandssysteem net als normaal worden gekoppeld:
#
mount /home
Vanaf dit moment is het mogelijk om, zolang de
geom_label.ko
geladen wordt tijdens het
opstarten van het systeem, of als deze is meegecompileerd door
middel van de GEOM_LABEL
optie in de kernel,
het apparaatknooppunt te wijzigen zonder ernstige gevolgen voor
het systeem.
Bestandssystemen kunnen ook een standaard label mee krijgen
door gebruik te maken van de -L
optie met het
newfs
commando. Zie de newfs(8)
handleiding voor meer informatie.
Het volgende commando kan worden gebruikt om een label te verwijderen:
#
glabel destroy home
Het volgende voorbeeld laat zien hoe de partities van een opstartschijf gelabeld worden.
Door de partities op de opstartschijf permanent te labelen
zou het systeem in staat moeten zijn om normaal door te gaan
met opstarten, zelfs als de schijf verplaatst is naar een
andere controller of is overgeplaatst naar een ander systeem.
In dit voorbeeld wordt aangenomen dat er een enkele
ATA-schijf wordt gebruikt, die momenteel
als ad0
door het systeem wordt
herkend. Het wordt ook aangenomen dat het standaard
partitieschema van FreeBSD wordt gebruikt, met de
bestandssystemen /
,
/var
,
/usr
, en
/tmp
, alsmede een
wisselpartitie.
Start het systeem opnieuw op, en druk bij de loader(8)-prompt op 4 om in enkele gebruikersmodus op te starten. Geef dan de volgende commando's:
#
glabel label rootfs /dev/ad0s1a
GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs#
glabel label var /dev/ad0s1d
GEOM_LABEL: Label for provider /dev/ad0s1d is label/var#
glabel label usr /dev/ad0s1f
GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr#
glabel label tmp /dev/ad0s1e
GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp#
glabel label swap /dev/ad0s1b
GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap#
exit
Het systeem zal doorgaan met opstarten in
meergebruikersmodus. Bewerk, nadat het opstarten is voltooid,
/etc/fstab
en vervang de conventionele
namen door de respectievelijke labels. Het uiteindelijke
bestand /etc/fstab
zal er als volgt
uitzien:
# Device Mountpoint FStype Options Dump Pass# /dev/label/swap none swap sw 0 0 /dev/label/rootfs / ufs rw 1 1 /dev/label/tmp /tmp ufs rw 2 2 /dev/label/usr /usr ufs rw 2 2 /dev/label/var /var ufs rw 2 2
Het systeem kan nu worden herstart. Als alles goed ging,
zal het normaal opstarten en zal mount
dit
laten zien:
#
mount
/dev/label/rootfs on / (ufs, local) devfs on /dev (devfs, local) /dev/label/tmp on /tmp (ufs, local, soft-updates) /dev/label/usr on /usr (ufs, local, soft-updates) /dev/label/var on /var (ufs, local, soft-updates)
Beginnend met FreeBSD 7.2 ondersteunt de klasse glabel(8)
een nieuw labeltype voor UFS-bestandssystemen,
gebaseerd op het unieke id van het bestandssysteem,
ufsid
. Deze labels kunnen in de map /dev/ufsid
gevonden worden en
worden automatisch tijdens het opstarten aangemaakt. Het is
mogelijk om de ufsid
-labels te gebruiken om
partities aan te koppelen door middel van de faciliteit
/etc/fstab
. Gebruik glabel
status
om een lijst van bestandssystemen en hun
overeenkomende ufsid
-labels te ontvangen:
%
glabel status
Name Status Components ufsid/486b6fc38d330916 N/A ad4s1d ufsid/486b6fc16926168e N/A ad4s1f
In het bovenstaande voorbeeld representeert
ad4s1d
het bestandssysteem /var
, terwijl
ad4s1f
het bestandssysteem /usr
representeert. Door gebruik
te maken van de gegeven ufsid
-waarden kunnen
deze partities nu aangekoppeld worden met de volgende regels in
/etc/fstab
:
/dev/ufsid/486b6fc38d330916 /var ufs rw 2 2 /dev/ufsid/486b6fc16926168e /usr ufs rw 2 2
Elke partitie met een ufsid
-label kan op
deze manier worden aangekoppeld, waardoor het niet meer nodig is
om handmatig permanente labels voor ze aan te maken, terwijl er
nog steeds van de voordelen van apparaatnaam-onafhankelijk
aankoppelen genoten kan worden.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.