FreeBSD handboek
Terug | Hoofdstuk 20. GEOM: Modulair schijftransformatie raamwerk | Volgende

# 20.7. Het labelen van schijven

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.

> Opmerking: 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.

## 20.7.1. Label types en voorbeelden

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

> WaarschuwingAls 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

> Opmerking: 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.

Voorbeeld 20-1. Partities op de opstartschijf labelen

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.

Terug | Begin | Volgende
GEOM Gate netwerk apparaten | Omhoog | UFS logboeken door middel van GEOM