aboutsummaryrefslogtreecommitdiff
path: root/nl_NL.ISO8859-1/books/handbook/vinum/chapter.xml
diff options
context:
space:
mode:
Diffstat (limited to 'nl_NL.ISO8859-1/books/handbook/vinum/chapter.xml')
-rw-r--r--nl_NL.ISO8859-1/books/handbook/vinum/chapter.xml1366
1 files changed, 1366 insertions, 0 deletions
diff --git a/nl_NL.ISO8859-1/books/handbook/vinum/chapter.xml b/nl_NL.ISO8859-1/books/handbook/vinum/chapter.xml
new file mode 100644
index 0000000000..c5bb64c310
--- /dev/null
+++ b/nl_NL.ISO8859-1/books/handbook/vinum/chapter.xml
@@ -0,0 +1,1366 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!--
+ De Vinum Volume Manager
+ Door Greg Lehey (grog at lemis dot com)
+
+ Toegevoegd aan het Handboek door Hiten Pandya <hmp@FreeBSD.org>
+ en Tom Rhodes <trhodes@FreeBSD.org>
+
+ The Dutch FreeBSD Documentation Project
+
+ $FreeBSD$
+
+ %SOURCE% en_US.ISO8859-1/books/handbook/vinum/chapter.xml
+ %SRCID% 40781
+-->
+
+<chapter id="vinum-vinum">
+ <chapterinfo>
+ <authorgroup>
+ <author>
+ <firstname>Greg</firstname>
+ <surname>Lehey</surname>
+ <contrib>Geschreven door </contrib>
+ </author>
+ </authorgroup>
+ <authorgroup>
+ <author>
+ <firstname>Erwin</firstname>
+ <surname>Kooi</surname>
+ <contrib>Vertaald door </contrib>
+ </author>
+ </authorgroup>
+ </chapterinfo>
+
+ <title>De VINUM volumebeheerder</title>
+
+ <sect1 id="vinum-synopsis">
+ <title>Overzicht</title>
+
+ <para>Welke harde schijven er ook gebruikt worden, er zijn altijd
+ mogelijke problemen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Ze kunnen te klein zijn.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ze kunnen te traag zijn.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ze kunnen te onbetrouwbaar zijn.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Er zijn verschillende oplossingen voor deze problemen
+ voorgesteld en geïmplementeerd. Eén manier waarop
+ gebruikers zich wapenen tegen een aantal van deze problemen is
+ door meerdere en soms ook redundante schijven te gebruiken. Naast
+ ondersteuning voor verschillende kaarten en controllers die
+ hardware-RAID ondersteunen, bevat het &os; basissysteem ook de
+ Vinum Volume Manager, een
+ <quote>blokapparaatstuurprogramma</quote> waarmee virtuele
+ schijven gemaakt kunnen worden. <emphasis>Vinum</emphasis> is een
+ zogenaamde <emphasis>Volume Manager</emphasis>, een stuurprogramma
+ voor virtuële schijven dat deze drie problemen in beschouwing
+ neemt. Vinum biedt meer flexibiliteit, prestaties en
+ betrouwbaarheid dan traditionele schijfopslag en er kan RAID-0,
+ RAID-1 en RAID-5 mee gemaakt worden of een combinatie van deze
+ RAID-niveaus.</para>
+
+ <para>In dit hoofdstuk wordt een overzicht gegeven van de mogelijke
+ problemen die traditionele schijfopslag met zich meebrengt en de
+ Vinum Volume Manager wordt geïntroduceerd.</para>
+
+ <note>
+ <para>Vanaf &os;&nbsp;5, is Vinum herschreven om in de
+ GEOM-architectuur (<xref linkend="GEOM"/>) te passen, met behoud
+ van de originele ideëen, terminologie, en metagegevens die
+ op de schijf staan. Deze herschrijving wordt
+ <emphasis>gvinum</emphasis> (voor <emphasis>GEOM
+ vinum</emphasis>) genoemd. De volgende tekst refereert aan
+ <emphasis>Vinum</emphasis> als een abstracte naam, onafhankelijk
+ van de implementatievariant. Alle commando-aanroepen dienen nu
+ met het commando <command>gvinum</command> gedaan te worden, en
+ de naam van de kernelmodule is veranderd van
+ <filename>vinum.ko</filename> naar
+ <filename>geom_vinum.ko</filename>, en alle apparaatknooppunten
+ bevinden zich in <filename class="directory">/dev/gvinum</filename> in
+ plaats van <filename class="directory">/dev/vinum</filename>. Sinds
+ &os;&nbsp;6 is de oude implementatie van Vinum niet meer beschikbaar in
+ de broncode.</para>
+ </note>
+ </sect1>
+
+ <sect1 id="vinum-intro">
+ <title>Schijfgrootte</title>
+
+ <indexterm><primary>Vinum</primary></indexterm>
+
+ <indexterm>
+ <primary>RAID</primary>
+
+ <secondary>software</secondary>
+ </indexterm>
+
+ <para>De capaciteit van schijven wordt groter, maar ook de vraag
+ naar capaciteit neemt toe. Vaak is het gewenste bestandssysteem
+ groter dan de op dat moment beschikbare schijven. Hoewel dit
+ probleem niet meer zo actueel als het tien jaar geleden was,
+ bestaat het nog steeds. In sommige systemen is dit opgelost door
+ een virtuele harde schijf te maken die de gegevens op meerdere
+ fysieke harde schijven kan opslaan.</para>
+ </sect1>
+
+ <sect1 id="vinum-access-bottlenecks">
+ <title>Snelheid van toegang</title>
+
+ <para>Moderne systemen hebben vaak simultaan toegang tot gegevens
+ nodig. FTP en webservers kunnen bijvoorbeeld duizenden simultane
+ sessies onderhouden en hebben vaak meerdere 100 Mbit/s
+ verbindingen met de rest van de wereld. De benodigde
+ gegevensdoorvoer is dan groter dan de meeste schijven kunnen
+ leveren.</para>
+
+ <para>Huidige schijven kunnen gegevens sequentieel overdragen met
+ ongeveer 70 MB/s, maar deze snelheid heeft geen waarde in een
+ omgeving waar onafhankelijke processen toegang tot de schijf
+ hebben. In zo'n situatie is het interessanter om vanuit het
+ standpunt van de schijfstuurprogramma te kijken: de belangrijkste
+ parameter is dan de belasting die een bepaalde gegevensoverdracht
+ op het stuurprogramma plaatst. Met andere woorden: wat is het
+ tijdsbeslag van een gegevensoverdracht op te schijf?</para>
+
+ <para>Bij elke gegevensoverdracht moet de schijf eerst zijn kop
+ positioneren, wachten tot de eerste sector onder de kop doorkomt
+ en vervolgens de overdracht starten. Deze acties duren bijzonder
+ kort. Het heeft geen enkele zin om ze te onderbreken.</para>
+
+ <para><anchor id="vinum-latency"/>Neem een overdracht van ongeveer
+ 10 kB: de huidige generatie high-performance schijven kan de kop
+ in 3.5 ms plaatsen. De snelste schijven draaien met 15.000
+ toeren per minuut, dus de gemiddelde rotatie vertraging (een
+ halve omwenteling) bedraagt 2 ms. Met 70&nbsp;MB/s de overdracht
+ zelf duurt ongeveer 150 &mu;s, bijna niets vergeleken met de tijd
+ die verloren is gegaan aan het positioneren. In zulke gevallen
+ daalt de gegevensoverdracht naar iets meer dan 1 MB/s en is dus
+ duidelijk afhankelijk van de grootte van de over te dragen
+ gegevens.</para>
+
+ <para>De traditionele en logische oplossing voor dit probleem is
+ <quote>meer schijven</quote>: in plaats van één
+ grote schijf, meerdere kleine schijven met een zelfde totale
+ opslagcapaciteit. Iedere schijf is in staat om onafhankelijk de
+ kop te plaatsen en de gegevens over te dragen, dus de effectieve
+ doorvoer neemt toe met een factor bijna gelijk aan het aantal
+ schijven.</para>
+
+ <para>De exacte verbetering van de doorvoer is natuurlijk kleiner
+ dan het aantal schijven, want hoewel iedere schijf in staat is om
+ parallel de gegevens over te dragen, er is geen garantie dat de
+ gegevens gelijk over de schijven verdeeld is. De belasting op de
+ ene schijf zal dan ook groter zijn dan op de andere schijf.</para>
+
+ <indexterm>
+ <primary>aaneenschakelen</primary>
+
+ <secondary>schijven aaneenschakelen</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>Vinum</primary>
+
+ <secondary>aaneenschakelen</secondary>
+ </indexterm>
+
+ <indexterm><primary>RAID</primary></indexterm>
+
+ <para>Een gelijke belasting van de schijven is in grote mate
+ afhankelijk van de manier waarop gegevens over de schijven zijn
+ verdeeld. In het volgende stuk is de opslag van een virtuele
+ schijf voor te stellen als een verzameling sectoren die met een
+ nummer aangesproken kan worden, net als bladzijden in een boek.
+ De meest voor de hand liggende methode om een virtuele schijf
+ te maken is het achter elkaar plakken van de fysieke schijven.
+ Een virtueel boek zou dan opgebouwd zijn uit verschillende achter
+ elkaar zittende fysieke hoofdstukken. Deze methode heet
+ <emphasis>aaneenschakelen</emphasis>
+ (<quote>concatenation</quote>) en heeft het voordeel dat schijven
+ verschillend van grootte kunnen zijn. Dit werkt prima als
+ toegang tot de gegevens gelijk verdeeld is over de hele
+ gegevensverzameling. Als die toegang beperkt is tot een klein
+ deel van de gegevensverzameling, is de snelheidsverbetering een
+ stuk kleiner. <xref linkend="vinum-concat"/> laat de manier zien
+ hoe aaneengeschakelde schijven hun gegevens opslaan.</para>
+
+ <para>
+ <figure id="vinum-concat">
+ <title>Aaneengeschakeld georganiseerd</title>
+
+ <graphic fileref="vinum/vinum-concat"/>
+ </figure></para>
+
+ <indexterm>
+ <primary>verdelen</primary>
+
+ <secondary>schijven stripen</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>Vinum</primary>
+
+ <secondary>verdelen</secondary>
+ </indexterm>
+
+ <para>Een andere methode is het verdelen van de totale opslag van
+ de virtuele schijf in kleinere stukjes van gelijke grootte en ze
+ achter elkaar op verschillende fysieke schijven op te slaan.
+ Bijvoorbeeld: de eerste 256 sectoren worden op schijf 1
+ opgeslagen, de tweede 256 sectoren op schijf 2 enzovoort, tot de
+ laatste schijf is gebuikt, waarna weer bij schijf 1 verder wordt
+ gegaan, net zolang tot de schijven vol zijn. Deze methode heet
+ <emphasis>verdelen</emphasis> (<quote>striping</quote>) of
+ <acronym>RAID-0</acronym>.
+
+ <footnote>
+ <para><acronym>RAID</acronym> staat voor <emphasis>Redundant
+ Array of Inexpensive Disks</emphasis> (Redundante Reeks van
+ Goedkope Schijven) en biedt verschillende vormen van
+ fouttolerantie. Hoewel die laatste term wat misleidend is:
+ het biedt namelijk geen redundantie.</para></footnote>.
+
+ Bij RAID-0 kost het iets meer moeite om de gegevens te vinden en
+ het kan extra I/O belasting met zich meebrengen als gegevens zijn
+ verdeeld over verschillende fysieke schijven. Het kan echter ook
+ zorgen voor een constantere belasting van die schijven.
+ <xref linkend="vinum-striped"/> geeft weer hoe RAID-0 schijven hun
+ gegevens opslaan.</para>
+
+ <para>
+ <figure id="vinum-striped">
+ <title>Verdeeld georganiseerd</title>
+
+ <graphic fileref="vinum/vinum-striped"/>
+ </figure></para>
+ </sect1>
+
+ <sect1 id="vinum-data-integrity">
+ <title>Betrouwbaarheid van gegevens</title>
+
+ <para>Het laatste probleem met de huidige schijven is dat ze
+ onbetrouwbaar zijn. Hoewel de betrouwbaarheid de laatste jaren
+ enorm is toegenomen, blijven schijven het vitale onderdeel van
+ een server dat waarschijnlijk als eerste kapot gaat. Als dat
+ gebeurt kan het catastrofale gevolgen hebben: het vervangen van
+ de schijf en het terugplaatsen van de gegevens kan dagen
+ kosten.</para>
+
+ <indexterm>
+ <primary>spiegelen</primary>
+
+ <secondary>schijven spiegelen</secondary>
+ </indexterm>
+
+ <indexterm>
+ <primary>Vinum</primary>
+
+ <secondary>spiegelen</secondary>
+ </indexterm>
+
+ <indexterm><primary>RAID-1</primary></indexterm>
+
+ <para>De traditionele manier om dit te voorkomen is
+ <emphasis>spiegelen</emphasis> (<quote>mirroring</quote>): het
+ hebben van een kopie van de gegevens op een andere fysieke schijf.
+ Sinds de uitvinding van RAID niveaus staat dit bekend als
+ RAID-1. Een schrijfactie naar de virtuele schijf gebeurt op
+ beide fysieke schijven. Een leesactie hoeft slechts vanaf
+ één te gebeuren. Op deze manier kan de virtuele
+ schijf dus blijven werken als één van de twee
+ fysieke schijven kapot is.</para>
+
+ <para>RAID-1 heeft twee problemen:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Prijs. Er is twee keer zoveel schijfruimte nodig als bij
+ een niet-redundante schijf.</para>
+ </listitem>
+
+ <listitem>
+ <para>Prestatie. Een schrijfactie moet op twee schijven
+ gebeuren en kost dus twee keer zoveel bandbreedte. Een
+ leesactie hoeft maar op één schijf te gebeuren
+ en heeft hier dus geen last van.</para>
+ </listitem>
+ </orderedlist>
+
+ <indexterm>
+ <primary>RAID-5</primary>
+ </indexterm>
+
+ <para>Een andere manier is <emphasis>pariteit</emphasis>,
+ uitgevoerd in <acronym>RAID</acronym> niveaus 2, 3, 4 en 5.
+ Van deze vier is <acronym>RAID-5</acronym> het meest interessant.
+ In Vinum is het geïmplementeerd als een variant van een
+ verdeelde organisatie waarbij één blok van elk deel
+ is gereserveerd voor de pariteit van één van de andere
+ blokken. Voor Vinum is een <acronym>RAID-5</acronym> samenstelling
+ (<quote>plex</quote>) dan ook gelijk aan een verdeelde
+ samenstelling, met als verschil dat het een pariteitblok bevat in
+ ieder deel. Zoals voorgeschreven door <acronym>RAID-5</acronym>
+ wisselt de locatie van dit pariteitblok van het ene deel naar het
+ andere. De nummers in de gegevensblokken geven de relatieve
+ bloknummers aan.</para>
+
+ <para>
+ <figure id="vinum-raid5-org">
+ <title>RAID-5 georganiseerd</title>
+
+ <graphic fileref="vinum/vinum-raid5-org"/>
+ </figure></para>
+
+ <para>Vergeleken met spiegelen heeft <acronym>RAID-5</acronym> het
+ voordeel dat er beduidend minder opslagcapaciteit nodig is.
+ Lezen gebeurt op dezelfde manier als bij een verdeelde
+ organisatie, maar schrijven kost beduidend meer tijd, ongeveer
+ 25% van de leesprestaties meer. Als één schijf
+ uitvalt, kan de reeks doorwerken in een <emphasis>verslechterde
+ staat</emphasis> (<quote>degraded mode</quote>): gegevens van
+ een functionerende schijf kunnen zonder problemen gelezen worden,
+ maar gegevens van de defecte schijf moeten eerst worden
+ samengesteld uit de pariteit van de overeenkomende blokken van de
+ resterende schijven.</para>
+ </sect1>
+
+ <sect1 id="vinum-objects">
+ <title>Vinum objecten</title>
+
+ <para>Om deze problemen op te lossen, hanteert vinum een
+ hiërarchie met vier niveaus van objecten:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Het meest zichtbare object is de virtuele schijf. Dit
+ object wordt <emphasis>volume</emphasis> genoemd. Op een
+ paar kleine details na, hebben volumes dezelfde
+ eigenschappen als een &unix; schijf. Het belangrijkste
+ verschil is dat er geen beperking aan de grootte van de
+ schijf is.</para>
+ </listitem>
+
+ <listitem>
+ <para>Volumes zijn opgebouwd uit
+ <emphasis>samenstellingen</emphasis>, die elk de totale
+ opslagcapaciteit van het volume hebben. Dit niveau in de
+ hiërarchie biedt daarom redundantie. Een samenstelling
+ is goed voor te stellen als een individuele schijf in een
+ <acronym>RAID-1</acronym> systeem. Iedere schijf bevat
+ dezelfde gegevens.</para>
+ </listitem>
+
+ <listitem>
+ <para>Omdat Vinum bestaat binnen het &unix; opslagsysteem, moet
+ het mogelijk zijn om &unix; partities te gebruiken als
+ bouwstenen voor samenstellingen die uit meerdere schijven
+ bestaan. Maar het blijkt dat dit te inflexibel is: &unix;
+ schijven hebben een beperkt aantal partities. In plaats
+ daarvan verdeelt Vinum een &unix; partitie (de schijf) in
+ aaneengesloten stukken die <emphasis>subschijven</emphasis>
+ worden genoemd. Deze subschijven worden vervolgens als
+ bouwstenen voor de samenstelling gebruikt.</para>
+ </listitem>
+
+ <listitem>
+ <para>Subschijven bestaan op Vinum
+ <emphasis>schijven</emphasis>, op dit moment &unix;
+ partities. Een Vinum schijf kan een oneindig aantal
+ subschijven bevatten. Met uitzondering van een klein stukje
+ aan het begin van de schijf, dat wordt gebruikt om informatie
+ over de instellingen en de toestand op te slaan, is de gehele
+ schijf beschikbaar voor de opslag van gegevens.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>In de volgende paragrafen wordt beschreven hoe deze objecten
+ de functionaliteit van Vinum leveren.</para>
+
+ <sect2>
+ <title>Volumegrootte overwegingen</title>
+
+ <para>Een samenstelling kan meerdere subschijven bevatten die
+ uitgespreid zijn over alle schijven in de Vinum instelling.
+ Dat houdt in dat de grootte van een individuele schijf geen
+ limiet is voor de samenstelling en dus niet voor het
+ volume.</para>
+ </sect2>
+
+ <sect2>
+ <title>Redundante gegevensopslag</title>
+
+ <para>Vinum implementeert <acronym>RAID-0</acronym> door meerdere
+ samenstellingen aan een volume te koppelen. Elke samenstelling
+ representeert hierbij de gegevens in het volume. Een volume kan
+ tussen de één en acht samenstellingen
+ bevatten.</para>
+
+ <para>Hoewel een samenstelling de totale gegevens van een volume
+ voorstelt, is het mogelijk dat delen van deze voorstelling
+ missen, door ontwerp (door geen subschijf voor delen van de
+ samenstelling te definiëren) of per ongeluk (door een
+ defecte schijf). Zo lang tenminste één
+ samenstelling de gegevens voor het gehele volume kan leveren, is
+ het volume volledig bruikbaar.</para>
+ </sect2>
+
+ <sect2>
+ <title>Prestaties</title>
+
+ <para>Vinum implementeert aaneenschakelen en spiegelen op het
+ niveau van de samenstelling:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Een aaneengeschakelde samenstelling gebruikt de
+ adresruimte van elke subschijf achter elkaar.</para>
+ </listitem>
+
+ <listitem>
+ <para>Een verdeelde samenstelling spreiden de gegevens over
+ iedere subschijf. De subschijven moeten daarvoor allemaal
+ dezelfde grootte hebben en er moeten tenminste twee
+ subschijven zijn om onderscheid te kunnen maken met een
+ aaneengeschakelde samenstelling.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Welke samenstelling?</title>
+
+ <para>De versie van Vinum die met &os;&nbsp;&rel.current; wordt
+ meegeleverd, kent twee soorten samenstellingen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Aaneengeschakelde samenstellingen zijn het meest
+ flexibel: ze kunnen een oneindig aantal subschijven
+ bevatten die verschillend van lengte mogen zijn. De
+ samenstelling kan uitgebreid worden door subschijven toe te
+ voegen. Ze kosten minder <acronym>CPU</acronym> tijd dan
+ verdeelde samenstellingen, hoewel het verschil van de
+ <acronym>CPU</acronym> belasting niet meetbaar is. Aan de
+ andere kant, ze zijn het meest kwetsbaar voor
+ <quote>hot-spots</quote>, waar één schijf
+ heel intensief gebruikt wordt en anderen ongebruikt
+ blijven.</para>
+ </listitem>
+
+ <listitem>
+ <para>Het grootste voordeel van verdeelde samenstellingen
+ (<acronym>RAID-0</acronym>) is dat ze geen
+ <quote>hot-spots</quote> hebben. Door het kiezen van een
+ optimale deelgrootte (veelal 256 kB) kan de belasting op de
+ fysieke schijven gelijk getrokken worden. De nadelen van
+ deze aanpak zijn (minuscuul) complexere code en beperkingen
+ aan de subschijven: ze moeten allemaal van gelijke grootte
+ zijn en het uitbreiden van een samenstelling met extra
+ subschijven is zo gecompliceerd, dat de huidige versie van
+ Vinum dit niet ondersteunt. Vinum voegt een extra,
+ triviale, beperking toe: een verdeelde samenstelling moet
+ tenminste twee subschijven hebben, omdat die anders niet
+ onderscheiden kan worden van een aaneengeschakelde
+ samenstelling.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>In <xref linkend="vinum-comparison"/> worden de voor- en
+ nadelen van elke samenstelling samengevat.</para>
+
+ <table id="vinum-comparison" frame="none">
+ <title>Vinum samenstellingen</title>
+
+ <tgroup cols="5">
+ <thead>
+ <row>
+ <entry>Samenstellingtype</entry>
+
+ <entry>Minimaal aantal subschijven</entry>
+
+ <entry>Subschijven toevoegen</entry>
+
+ <entry>Gelijke grootte</entry>
+
+ <entry>Toepassing</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>aaneengeschakeld</entry>
+
+ <entry>1</entry>
+
+ <entry>ja</entry>
+
+ <entry>nee</entry>
+
+ <entry>Veel gegevensopslag met maximale flexibiliteit en
+ gemiddelde performance.</entry>
+ </row>
+
+ <row>
+ <entry>verdeeld</entry>
+
+ <entry>2</entry>
+
+ <entry>nee</entry>
+
+ <entry>ja</entry>
+
+ <entry>Hoge prestaties, ook bij veel gelijktijdige
+ toegang.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect2>
+ </sect1>
+
+ <sect1 id="vinum-examples">
+ <title>Voorbeelden</title>
+
+ <para>Vinum houdt een <emphasis>instellingendatabase</emphasis>
+ bij waarin beschreven staat welke objecten bekend zijn in het
+ systeem. Bij het instellen vult de gebruiker deze database uit
+ één of meer instellingenbestanden met behulp van
+ het hulpprogramma &man.gvinum.8;. Vinum bewaart een kopie van de
+ database op iedere slice (die Vinum <emphasis>apparaat</emphasis>
+ noemt) die door Vinum wordt beheerd. Deze database wordt na
+ iedere statuswijziging bijgewerkt, zodat een na een herstart
+ accuraat de toestand van ieder Vinum object wordt weergegeven.</para>
+
+ <sect2>
+ <title>Het instellingenbestand</title>
+
+ <para>Het instellingenbestand beschrijft de individuele vinum
+ objecten. De definitie van een eenvoudig volume kan er zo
+ uitzien:</para>
+
+ <programlisting>drive a device /dev/da3h
+ volume myvol
+ plex org concat
+ sd length 512m drive a</programlisting>
+
+ <para>Dit bestand beschrijft vier Vinum objecten:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>De <emphasis>drive</emphasis> regel beschrijft een
+ partitie (<emphasis>drive</emphasis>) en de relatieve
+ positie ten opzichte van de onderliggende hardware. Het
+ heeft de symbolische naam <emphasis>a</emphasis>. Deze
+ scheiding van de symbolische naam van de schijf maakt het
+ mogelijk om schijven te verplaatsen van de ene locatie naar
+ de andere, zonder verwarring te veroorzaken.</para>
+ </listitem>
+
+ <listitem>
+ <para>De <emphasis>volume</emphasis> regel beschrijft een
+ volume. Het enige benodigde attribuut is de naam:
+ <emphasis>myvol</emphasis>.</para>
+ </listitem>
+
+ <listitem>
+ <para>De <emphasis>plex</emphasis> regel beschrijft een
+ samenstelling. Het enige benodigde attribuut is de
+ organisatie, in dit geval <emphasis>concat</emphasis>. Er
+ is geen naam nodig: het systeem genereert automatisch een
+ naam door <emphasis>.p</emphasis><emphasis>x</emphasis> aan
+ de volumenaam toe te voegen, waarbij <emphasis>x</emphasis>
+ het nummer van de samenstelling in het volume is. De naam
+ van deze samenstelling wordt dus
+ <emphasis>myvol.p0</emphasis>.</para>
+ </listitem>
+
+ <listitem>
+ <para>De <emphasis>sd</emphasis> regel beschrijft een
+ subschijf. De minimale specificaties zijn de naam van een
+ schijf waar de subschijf kan worden opgeslagen en de lengte
+ van de subschijf. Net als bij een samenstelling is er geen
+ naam nodig: het systeem genereert automatisch een naam door
+ <emphasis>.s</emphasis><emphasis>x</emphasis> aan de
+ samenstellingnaam toe te voegen, waarbij
+ <emphasis>x</emphasis> het nummer van de subschijf is. De
+ naam van deze subschijf is dus
+ <emphasis>myvol.p0.s0</emphasis>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Na het verwerken van dit bestand ziet de uitvoer van
+ &man.gvinum.8; er als volgt uit:</para>
+
+ <programlisting width="97">
+ &prompt.root; gvinum -&gt; <userinput>create config1</userinput>
+ Configuration summary
+ Drives: 1 (4 configured)
+ Volumes: 1 (4 configured)
+ Plexes: 1 (8 configured)
+ Subdisks: 1 (16 configured)
+
+ D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)
+
+ V myvol State: up Plexes: 1 Size: 512 MB
+
+ P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
+
+ S myvol.p0.s0 State: up PO: 0 B Size: 512 MB</programlisting>
+
+ <para>Deze uitvoer geeft de korte uitvoer van &man.gvinum.8; weer.
+ Het is grafisch weergegeven in
+ <xref linkend="vinum-simple-vol"/>.</para>
+
+ <para>
+ <figure id="vinum-simple-vol">
+ <title>Een eenvoudig Vinum volume</title>
+
+ <graphic fileref="vinum/vinum-simple-vol"/>
+ </figure></para>
+
+ <para>Deze en de volgende figuren stellen een volume voor dat
+ samenstellingen bevat die weer de subschijven bevatten. In dit
+ triviale voorbeeld bevat het volume een samenstelling en deze
+ samenstelling bevat een subschijf.</para>
+
+ <para>Dit speciale volume heeft geen voordeel boven een gewone
+ schijf partitie. Het bevat één samenstelling, dus
+ het is niet redundant. De samenstelling bevat
+ één subschijf, dus er is geen verschil in de
+ plaats van de gegevens met een conventionele schijfpartitie. In
+ de volgende paragrafen worden meer interessante instellingen
+ getoond.</para>
+ </sect2>
+
+ <sect2>
+ <title>Verbeterde betrouwbaarheid: spiegelen</title>
+
+ <para>De betrouwbaarheid van een volume wordt vergroot door
+ spiegelen. Bij het opzetten van een gespiegeld volume is het
+ van belang dat subschijven van iedere samenstelling op een
+ andere schijf staan, zodat een defecte schijf niet beide
+ samenstellingen beïnvloedt. De volgende instelling maakt
+ een gespiegeld volume:</para>
+
+ <programlisting>drive b device /dev/da4h
+ volume mirror
+ plex org concat
+ sd length 512m drive a
+ plex org concat
+ sd length 512m drive b</programlisting>
+
+ <para>In dit voorbeeld was het niet nodig om schijf
+ <emphasis>a</emphasis> opnieuw te definiëren, omdat Vinum
+ alle objecten bijhoudt in de instellingendatabase. Na het
+ verwerken van deze definitie, ziet de instelling er als volgt
+ uit:</para>
+
+ <programlisting width="97">
+ Drives: 2 (4 configured)
+ Volumes: 2 (4 configured)
+ Plexes: 3 (8 configured)
+ Subdisks: 3 (16 configured)
+
+ D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)
+ D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)
+
+ V myvol State: up Plexes: 1 Size: 512 MB
+ V mirror State: up Plexes: 2 Size: 512 MB
+
+ P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
+ P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
+ P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
+
+ S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
+ S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
+ S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB</programlisting>
+
+ <para>Het is grafisch weergegeven in
+ <xref linkend="vinum-mirrored-vol"/>.</para>
+
+ <para>
+ <figure id="vinum-mirrored-vol">
+ <title>Een gespiegeld Vinum volume</title>
+
+ <graphic fileref="vinum/vinum-mirrored-vol"/>
+ </figure></para>
+
+ <para>In dit voorbeeld bevat iedere samenstelling de volledige 512
+ MB van de opslagcapaciteit. Net als in het vorige voorbeeld
+ bevat iedere samenstelling slechts één
+ subschijf.</para>
+ </sect2>
+
+ <sect2>
+ <title>Verbeterde prestatie</title>
+
+ <para>Het gespiegelde volume in het vorige voorbeeld is beter
+ bestand tegen hardware fouten dan een niet-gespiegeld volume,
+ maar de prestaties zijn lager: iedere schrijfactie naar het
+ volume moet op beide schijven worden uitgevoerd, waardoor een
+ groter deel van de bandbreedte van de schijf nodig is. Als
+ prestaties een belangrijke rol spelen, moet er een andere
+ benadering gekozen worden: in plaats van spiegelen worden de
+ gegevens verdeeld over zoveel mogelijk schijven. De volgende
+ instelling laat een volume zien waarbij een samenstelling
+ over vier schijven verdeeld is:</para>
+
+ <programlisting>drive c device /dev/da5h
+ drive d device /dev/da6h
+ volume stripe
+ plex org striped 512k
+ sd length 128m drive a
+ sd length 128m drive b
+ sd length 128m drive c
+ sd length 128m drive d</programlisting>
+
+ <para>Zoals eerder al te zien was, is het niet nodig om schijven
+ die al bekend zijn bij Vinum opnieuw te definiëren. Na
+ het verwerken van deze definitie, ziet de instelling er zo
+ uit:</para>
+
+ <programlisting width="92">
+ Drives: 4 (4 configured)
+ Volumes: 3 (4 configured)
+ Plexes: 4 (8 configured)
+ Subdisks: 7 (16 configured)
+
+ D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)
+ D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)
+ D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)
+ D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)
+
+ V myvol State: up Plexes: 1 Size: 512 MB
+ V mirror State: up Plexes: 2 Size: 512 MB
+ V striped State: up Plexes: 1 Size: 512 MB
+
+ P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
+ P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
+ P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
+ P striped.p1 State: up Subdisks: 1 Size: 512 MB
+
+ S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
+ S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
+ S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
+ S striped.p0.s0 State: up PO: 0 B Size: 128 MB
+ S striped.p0.s1 State: up PO: 512 kB Size: 128 MB
+ S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB
+ S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB</programlisting>
+
+ <para>
+ <figure id="vinum-striped-vol">
+ <title>Een verdeeld Vinum volume</title>
+
+ <graphic fileref="vinum/vinum-striped-vol"/>
+ </figure></para>
+
+ <para>Dit volume wordt weergegeven in
+ <xref linkend="vinum-striped-vol"/>. De grijstinten geven de
+ positie binnen de samenstelling aan: de lichtste strepen komen
+ het eerst, de donkerste het laatst.</para>
+ </sect2>
+
+ <sect2>
+ <title>Betrouwbaarheid en prestaties</title>
+
+ <para><anchor id="vinum-resilience"/>Met voldoende hardware is het
+ mogelijk om een volume te bouwen met zowel verbeterde
+ betrouwbaarheid als verbeterde prestaties ten opzichte van een
+ standaard &unix; partitie. De volgende instelling is een
+ voorbeeld van zo'n volume:</para>
+
+ <programlisting>volume raid10
+ plex org striped 512k
+ sd length 102480k drive a
+ sd length 102480k drive b
+ sd length 102480k drive c
+ sd length 102480k drive d
+ sd length 102480k drive e
+ plex org striped 512k
+ sd length 102480k drive c
+ sd length 102480k drive d
+ sd length 102480k drive e
+ sd length 102480k drive a
+ sd length 102480k drive b</programlisting>
+
+ <para>De subschijven van de tweede samenstelling zijn twee
+ schijven verschoven ten opzichte van die van de eerste
+ samenstelling. Dit zorgt ervoor dat een schrijfactie niet naar
+ dezelfde schijven gaat, zelfs niet als die schrijfactie over
+ twee schijven plaatsvindt.</para>
+
+ <para><xref linkend="vinum-mirrored-vol"/> laat deze instelling
+ zien in grafische vorm.</para>
+
+ <para>
+ <figure id="vinum-raid10-vol">
+ <title>Een gespiegeld en verdeeld Vinum volume</title>
+
+ <graphic fileref="vinum/vinum-raid10-vol"/>
+ </figure></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="vinum-object-naming">
+ <title>Objectnamen</title>
+
+ <para>Zoals eerder in dit hoofdstuk beschreven staat, kent Vinum
+ standaardnamen toe aan samenstellingen en subschijven. Er mag
+ echter een andere naam aan gegeven worden. Een andere naamgeving
+ wordt niet aangeraden: ervaring met de VERITAS volumebeheerder,
+ die een willekeurige object benaming toestaat, heeft laten zien
+ dat deze flexibiliteit geen beduidend voordeel heeft, terwijl het
+ de kans op verwarring vergroot.</para>
+
+ <para>Namen mogen bestaan uit alle karakters, behalve de spatie,
+ maar het wordt aanbevolen om alleen letters, cijfers en het
+ liggende streepje te gebruiken. De namen van de volumes,
+ samenstellingen en subschijven kunnen 64 tekens lang zijn en de
+ namen van schijven kunnen 32 tekens lang zijn.</para>
+
+ <para>Vinum objecten worden apparaatknooppunten toegekend in de
+ hiërarchie <filename class="directory">/dev/gvinum</filename>. Met
+ de instellingen uit de vorige paragraaf creërt Vinum de volgende
+ apparaatknooppunten:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Karakterapparaatingangen voor elk volume. Dit zijn de
+ primaire apparaten die door Vinum gebruikt worden. De
+ bovenstaande configuratie zou dus deze apparaten bevatten:
+ <filename class="devicefile">/dev/gvinum/myvol</filename>,
+ <filename class="devicefile">/dev/gvinum/mirror</filename>,
+ <filename class="devicefile">/dev/gvinum/striped</filename>,
+ <filename class="devicefile">/dev/gvinum/raid5</filename> en
+ <filename class="devicefile">/dev/gvinum/raid10</filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Alle volumes krijgen ingangen direct onder
+ <filename class="directory">/dev/gvinum/</filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>De mappen
+ <filename class="directory">/dev/gvinum/plex</filename>, en
+ <filename class="directory">/dev/gvinum/sd</filename>, welke
+ respectievelijk apparaatknooppunten voor elke plex en voor elke
+ subschijf bevatten.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Dit is een volgend voorbeeld:</para>
+
+ <programlisting>drive drive1 device /dev/sd1h
+ drive drive2 device /dev/sd2h
+ drive drive3 device /dev/sd3h
+ drive drive4 device /dev/sd4h
+ volume s64 setupstate
+ plex org striped 64k
+ sd length 100m drive drive1
+ sd length 100m drive drive2
+ sd length 100m drive drive3
+ sd length 100m drive drive4</programlisting>
+
+ <para>Na verwerking van dit bestand maakt &man.gvinum.8; de volgende
+ structuur aan in <filename
+ class="directory">/dev/gvinum</filename>:</para>
+
+ <programlisting>drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex
+ crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64
+ drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd
+
+
+ /dev/vinum/plex:
+ total 0
+ crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0
+
+ /dev/vinum/sd:
+ total 0
+ crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0
+ crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1
+ crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2
+ crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3</programlisting>
+
+ <para>Hoewel het wordt aangeraden om samenstellingen en subschijven
+ geen naam mee te geven, moeten Vinum schijven een naam hebben.
+ Hierdoor kan een schijf naar een andere locatie verplaatst worden
+ terwijl hij nog steeds automatisch herkend wordt. Schijfnamen
+ mogen maximaal 32 tekens lang zijn.</para>
+
+ <sect2>
+ <title>Bestandssystemen maken</title>
+
+ <para>Volumes lijken voor het systeem identiek aan schijven, met
+ één uitzondering: in tegenstelling tot &unix;
+ schijven partitioneert Vinum het volume niet en het bevat dus
+ geen partitietabel. Daarom was het nodig een paar
+ schijfhulpprogramma's te veranderen, met name &man.newfs.8;, dat
+ voorheen probeerde om de laatste letter van een Vinum
+ volumenaam als een partitie te zien. Bijvoorbeeld: een schijf
+ kan een naam hebben als <filename
+ class="devicefile">/dev/ad0a</filename> of <filename
+ class="devicefile">/dev/da2h</filename>. Deze namen stellen
+ respectievelijk de eerste partitie (<devicename>a</devicename>)
+ op de eerste (0) IDE schijf (<devicename>ad</devicename>) en de
+ achtste partitie (<devicename>h</devicename>) op de derde (2)
+ SCSI schijf (<devicename>da</devicename>) voor. Een Vinum
+ volume kan daarentegen <filename
+ class="devicefile">/dev/gvinum/concat</filename>
+ heten, een naam die geen enkele relatie met een partitienaam
+ heeft.</para>
+
+ <para>Gebruik &man.newfs.8; om een bestandssysteem op dit volume
+ aan te maken:</para>
+
+ <screen>&prompt.root; <userinput>newfs /dev/gvinum/concat</userinput></screen>
+ </sect2>
+ </sect1>
+
+ <sect1 id="vinum-config">
+ <title>Vinum instellen</title>
+
+ <para>De <filename>GENERIC</filename> kernel bevat geen Vinum. Het
+ is mogelijk een kernel te bouwen waar Vinum in zit, maar dit
+ wordt niet aangeraden. De standaard manier om Vinum te starten
+ is als kernelmodule (<acronym>kld</acronym>). Het is zelfs niet
+ nodig om &man.kldload.8; te gebruiken voor Vinum. Als
+ &man.gvinum.8; wordt gestart en de module is niet geladen, dan
+ gebeurt dit alsnog automatisch.</para>
+
+ <sect2>
+ <title>Opstarten</title>
+
+ <para>Vinum slaat de instellingeninformatie op de schijfslices op
+ in ongeveer dezelfde vorm als de instellingenbestanden. Bij
+ het lezen van de instellingendatabase herkent Vinum een aantal
+ sleutelwoorden die niet zijn toegestaan in
+ instellingenbestanden. Een schijfinstelling kan bijvoorbeeld
+ de volgende tekst bevatten:</para>
+
+ <programlisting width="119">volume myvol state up
+volume bigraid state down
+plex name myvol.p0 state up org concat vol myvol
+plex name myvol.p1 state up org concat vol myvol
+plex name myvol.p2 state init org striped 512b vol myvol
+plex name bigraid.p0 state initializing org raid5 512b vol bigraid
+sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b
+sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b
+sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b
+sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b
+sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b
+sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b
+sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b
+sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b
+sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b
+sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b
+sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b
+sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b
+sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b</programlisting>
+
+ <para>Duidelijke verschillen zijn de aanwezigheid van expliciete
+ locatie informatie en namen (beide zijn toegestaan, maar worden
+ afgeraden) en informatie over de toestand (die niet beschikbaar
+ is voor de gebruiker). Vinum slaat geen informatie over
+ schijven op in de instellingen: het vindt de schijven door de
+ ingestelde schijven te scannen naar partities met een
+ vinum label. Hierdoor kan Vinum zelfs schijven detecteren als
+ ze aan een andere &unix; schijf worden toegekend.</para>
+
+ <sect3 id="vinum-rc-startup">
+ <title>Automatisch opstarten</title>
+
+ <para><emphasis>Gvinum</emphasis> start altijd automatisch op
+ wanneer de kernelmodule eenmaal is geladen, via
+ &man.loader.conf.5;. Voeg
+ <literal>geom_vinum_load="YES"</literal> toe aan
+ <filename>/boot/loader.conf</filename> om de module
+ <emphasis>GVinum</emphasis> tijdens het opstarten te
+ laden.</para>
+
+ <para>Als Vinum met <command>gvinum start</command> wordt
+ gestart, leest Vinum de instellingendatabase van
+ één van de Vinum schijven. Normaal gesproken
+ bevat iedere schijf een identieke kopie van de
+ instellingendatabase. Het maakt dus niet uit welke schijf
+ gelezen wordt. Na een crash moet Vinum echter bepalen welke
+ schijf het laatst is bijgewerkt en de instellingen van die
+ schijf gebruiken. Als het nodig is worden de instellingen
+ van de oudere schijven daarna bijgewerkt, in volgorde van
+ leeftijd.</para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="vinum-root">
+ <title>Het rootbestandssysteem op Vinum</title>
+
+ <para>Bij een machine die een volledig gespiegeld bestandssysteem
+ heeft, is het wenselijk ook het rootbestandssysteem te spiegelen.
+ Het bouwen van zo'n instelling is niet zo rechttoe-rechtaan als
+ bij een ander bestandssysteem omdat:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Het rootbestandssysteem al heel snel beschikbaar moet zijn
+ tijdens het opstartproces, dus de Vinum infrastructuur moet
+ dan al beschikbaar zijn.</para>
+ </listitem>
+
+ <listitem>
+ <para>Het volume met het rootbestandssysteem bevat ook de
+ bootstrap en de kernel, die gelezen moeten worden door de
+ eigen systeemprogramma's (bijvoorbeeld de BIOS op PC's), die
+ meestal ingesteld kunnen worden om Vinum te gebruiken.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>In de volgende paragrafen wordt de term
+ <quote>rootvolume</quote> gebruikt voor het Vinum volume dat het
+ rootbestandssysteem bevat. Het is waarschijnlijk een goed idee om
+ de naam <literal>root</literal> te gebruiken voor dit volume, maar
+ dit is niet technisch noodzakelijk. Alle commandovoorbeelden in
+ de volgende stukken gaan echter uit van deze naam.</para>
+
+ <sect2>
+ <title>Vinum op tijd starten voor het rootbestandssysteem</title>
+
+ <para>Om dit te bereiken, moeten een aantal stappen worden
+ doorlopen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Vinum moet beschikbaar zijn voor de kernel tijdens
+ het opstarten. De methode zoals beschreven in
+ <xref linkend="vinum-rc-startup"/> is dus niet geschikt en
+ de <literal>start_vinum</literal> parameter mag zelfs
+ <emphasis>niet</emphasis> aanwezig zijn als de volgende
+ opzet wordt gebruikt. De eerste optie is Vinum statisch
+ in de kernel te compileren, zodat het altijd beschikbaar
+ is. Maar die is vaak niet wenselijk. Er is nog een
+ mogelijkheid door <filename>/boot/loader</filename>
+ (<xref linkend="boot-loader"/>) de Vinum kernel module te
+ laten laden, voordat de kernel gestart wordt. Dit wordt
+ gedaan door de volgende regel in
+ <filename>/boot/loader.conf</filename> op te nemen:</para>
+
+ <programlisting>gvinum_load="YES"</programlisting>
+ </listitem>
+
+ <listitem>
+ <para>Voor <emphasis>Gvinum</emphasis> wordt alles
+ automatisch opgestart nadat de kernelmodule eenmaal is
+ geladen, dus is alleen de procedure die hierboven is
+ beschreven nodig.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2>
+ <title>Een Vinum rootvolume beschikbaar maken voor
+ bootstrap</title>
+
+ <para>Omdat de huidige &os; bootstrap maar 7,5 KB code bevat en
+ al belast is met het lezen van bestanden (zoals
+ <filename>/boot/loader</filename>) van het UFS bestandssysteem,
+ is het bijna onmogelijk om het ook te leren hoe Vinum
+ informatie gelezen moet worden en deze dan te gebruiken om de
+ elementen van het bootvolume samen te stellen. Er zijn daarom
+ een paar trucs nodig om de bootstrapcode wijs te maken dat er
+ een standaard <literal>"a"</literal> partitie aanwezig is met
+ het rootbestandssysteem.</para>
+
+ <para>Om dit mogelijk te maken, moet het rootvolume aan de
+ volgende eisen voldoen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Het rootvolume mag niet verdeeld of RAID-5 zijn.</para>
+ </listitem>
+
+ <listitem>
+ <para>Het rootvolume mag niet meer dan één
+ aaneengeschakelde subschijf per samenstelling
+ bevatten.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Het is mogelijk en wenselijk om meer dan één
+ samenstelling te hebben, ieder met een replica van het
+ rootbestandssysteem. Het bootstrapproces gebruikt wel maar
+ één van deze replica's om de bootstrap en alle
+ andere bestanden te vinden, tot het moment dat de kernel het
+ rootbestandssysteem laadt. Iedere subschijf binnen deze
+ samenstellingen heeft dus zijn eigen <literal>"a"</literal>
+ partitievoorstelling nodig om dit apparaat opstartbaar te maken.
+ Het is niet verplicht dat iedere voorgestelde
+ <literal>"a"</literal> partitie op dezelfde offset is geplaatst
+ binnen het apparaat, vergeleken met andere apparaten die
+ samenstellingen van het rootvolume bevatten. Het is wel een
+ goed idee om op die manier Vinum volumes te maken, zodat de
+ resulterende gespiegelde apparaten symmetrisch zijn. Dit om
+ verwarring te voorkomen.</para>
+
+ <para>Om deze <literal>"a"</literal> partities voor ieder
+ apparaat dat een deel van het rootvolume bevat te maken, moet
+ het volgende worden gedaan:</para>
+
+ <procedure>
+ <step>
+ <para>De locatie (offset vanaf het begin van het apparaat) en
+ de grootte van de subschijf die onderdeel is van het
+ rootvolume moet als volgt bekeken worden:</para>
+
+ <screen>&prompt.root; <userinput>gvinum l -rv root</userinput></screen>
+
+ <note><para>De Vinum offsets en groottes worden aangegeven in
+ bytes. Ze moeten door 512 worden gedeeld om de bloknummers
+ te krijgen die in <command>bsdlabel</command> moeten
+ worden gebruikt.</para></note>
+ </step>
+
+ <step>
+ <para>Voor elk apparaat dat deelneemt aan het
+ rootbestandssysteem moet het onderstaande command
+ uitgevoerd worden:</para>
+
+ <screen>&prompt.root; <userinput>bsdlabel -e <replaceable>apparaatnaam</replaceable></userinput></screen>
+
+ <para><replaceable>apparaatnaam</replaceable> moet of de naam
+ van een schijf (zoals <devicename>da0</devicename>) voor
+ schijven zonder slice-tabel zijn (ook wel: fdisk), of de
+ naam van de slice zijn (zoals
+ <devicename>ad0s1</devicename>).</para>
+
+ <para>Als er al een <literal>"a"</literal> partitie op het
+ apparaat aanwezig is (waarschijnlijk met een pre-Vinum
+ rootbestandssysteem), moet die eerst worden hernoemd,
+ zodat het wel toegankelijk blijft (voor de zekerheid), maar
+ niet langer gebruikt wordt om het systeem van op te
+ starten. Actieve partities (zoals een rootbestandssysteem
+ dat op dit moment aangekoppeld is) kan geen andere naam
+ gegeven worden. Dit moet dus gebeuren als het systeem vanaf
+ een <quote>Fixit</quote> medium opgestart is of in twee
+ stappen, waar (in een gespiegelde situatie) de schijf waar
+ niet van opgestart is als eerste wordt aangepast.</para>
+
+ <para>Daarna moet de offset van de Vinum partitie op dit
+ apparaat (als het bestaat) opgeteld worden bij de offset
+ van de rootvolume subschijf op dit apparaat. De
+ resulterende waarde wordt de <literal>"offset"</literal>
+ waarde voor de nieuwe <literal>"a"</literal> partitie. De
+ <literal>"size"</literal> waarde voor deze partitie kan
+ worden gehaald uit bovenstaande berekening. De
+ <literal>"fstype"</literal> wordt
+ <literal>4.2BSD</literal>. De <literal>"fsize"</literal>,
+ <literal>"bsize"</literal> en <literal>"cpg"</literal>
+ waardes moeten zo goed mogelijk worden gekozen om een
+ daadwerkelijk bestandssysteem na te bootsen, hoewel ze
+ vrij onbelangrijk zijn in deze context.</para>
+
+ <para>Op deze manier wordt een nieuwe <literal>"a"</literal>
+ partitie gemaakt dat de Vinum partitie op dit apparaat
+ overlapt. Het <command>bsdlabel</command> staat deze
+ overlap alleen toe als de Vinum partitie gemarkeerd is met
+ het bestandssysteemtype <literal>"vinum"</literal>.</para>
+ </step>
+
+ <step>
+ <para>Dat is het! Er bestaat nu een nep
+ <literal>"a"</literal> partitie op ieder apparaat dat een
+ replica van het rootvolume heeft. Het is aan te bevelen
+ om de resultaten nogmaals te verifiëren met iets
+ als:</para>
+
+ <screen>&prompt.root; <userinput>fsck -n /dev/<replaceable>devnaam</replaceable>a</userinput></screen>
+ </step>
+ </procedure>
+
+ <note>
+ <para>Alle bestanden die controle informatie bevatten
+ moeten relatief zijn ten opzichte van het
+ rootbestandssysteem in het Vinum volume dat, bij het
+ creëren van een Vinum volume, niet overeen hoeft te komen
+ met het rootbestandssysteem dat op dit moment in gebruik is.
+ Dit geldt in het bijzonder voor
+ <filename>/etc/fstab</filename> en
+ <filename>/boot/loader.conf</filename>.</para>
+ </note>
+
+ <para>Bij de volgende herstart zou de bootstrap de juiste
+ controle informatie moeten vinden in het nieuwe, op Vinum
+ gebaseerde, rootbestandssysteem en moeten starten. Aan het
+ einde van het kernel initialisatie proces, nadat alle apparaten
+ aangemeld zijn, geeft het volgende bericht aan dat het opzetten
+ gelukt is:</para>
+
+ <screen>Mounting root from ufs:/dev/gvinum/root</screen>
+ </sect2>
+
+ <sect2>
+ <title>Een op Vinum gebaseerde rootinstallatie</title>
+
+ <para>Nadat het Vinum rootvolume is opgezet, geeft
+ <command>gvinum l -rv root</command> een volgend
+ resultaat:</para>
+
+ <screen>...
+Subdisk root.p0.s0:
+ Size: 125829120 bytes (120 MB)
+ State: up
+ Plex root.p0 at offset 0 (0 B)
+ Drive disk0 (/dev/da0h) at offset 135680 (132 kB)
+
+Subdisk root.p1.s0:
+ Size: 125829120 bytes (120 MB)
+ State: up
+ Plex root.p1 at offset 0 (0 B)
+ Drive disk1 (/dev/da1h) at offset 135680 (132 kB)</screen>
+
+ <para>De interessante waarden zijn <literal>135680</literal> voor
+ de offset (relatief ten opzichte van de partitie
+ <filename class="devicefile">/dev/da0h</filename>). Dit vertaalt zich
+ naar 265 schijfblokken van 512 bytes in termen van
+ <command>bsdlabel</command>.
+ Zo is de grootte van dit rootvolume 245760 blokken van 512 bytes.
+ <filename class="devicefile">/dev/da1h</filename>, dat de tweede
+ replica van dit rootvolume bevat, is symmetrische opgezet.</para>
+
+ <para>Het bsdlabel voor deze apparaten kan er zo uitzien:</para>
+
+ <screen>...
+8 partitions:
+# size offset fstype [fsize bsize bps/cpg]
+ a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*)
+ c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*)
+ h: 71771672 16 vinum # (Cyl. 0*- 4467*)</screen>
+
+ <para>Hieruit blijkt dat de <literal>"size"</literal> parameter
+ voor de nep <literal>"a"</literal> partitie overeenkomt met
+ de waarde als hierboven beschreven en dat de
+ <literal>"offset"</literal> parameter de som is van de offset
+ binnen de Vinum partitie <literal>"h"</literal> en de offset
+ van deze partitie binnen het apparaat (of de slice). Dit is
+ een normale opzet om problemen te voorkomen zoals in <xref
+ linkend="vinum-root-panic"/> beschreven is. Verder blijkt
+ dat de hele <literal>"a"</literal> partitie volledig binnen de
+ <literal>"h"</literal> partitie valt die alle Vinum gegevens
+ voor dit apparaat bevat.</para>
+
+ <para>In het bovenstaande voorbeeld is de volledige schijf voor
+ Vinum gereserveerd en er is geen restant van de pre-Vinum
+ rootpartitie, omdat dit een nieuwe schijf is die vanaf het begin
+ af aan bedoeld was als onderdeel van een Vinum instelling.</para>
+ </sect2>
+
+ <sect2>
+ <title>Problemen oplossen</title>
+
+ <para>Als er iets fout gaat moet er een manier zijn om dat te
+ herstellen. De volgende lijst bevat een paar bekende valkuilen
+ en oplossingen.</para>
+
+ <sect3>
+ <title>Systeem bootstrap laadt, maar systeem start niet
+ door</title>
+
+ <para>Als om wat voor reden dan ook het systeem niet doorgaat
+ met opstarten, kan de bootstrap worden onderbroken door de
+ <keycap>spatie</keycap> toets in te drukken tijdens de 10
+ seconden waarschuwing. Dan kunnen de loader variabelen
+ (zoals <literal>vinum.autostart</literal>) bekeken worden
+ met behulp van <command>show</command> en aangepast worden
+ met <command>set</command> of
+ <command>unset</command>.</para>
+
+ <para>Als het enige probleem was dat de Vinum kernelmodule
+ nog niet in de lijst van modules staat die automatisch
+ geladen wordt, dan zal <command>load geom_vinum</command>
+ helpen.</para>
+
+ <para>Als alles in orde is, kan het opstartproces doorgestart
+ worden met <command>boot -as</command>. De opties
+ <option>-as</option> geven de kernel aan om het
+ rootbestandssysteem te vragen (<option>-a</option>),
+ en het opstartproces te stoppen in single-user mode
+ (<option>-s</option>), waarbij het rootbestandssysteem als
+ alleen-lezen aangekoppeld wordt. Op die manier is er geen
+ risico op gegevensinconsistentie tussen de samenstellingen,
+ zelfs niet als er maar één samenstelling van
+ een multi-samenstellingen volume aangekoppeld is.</para>
+
+ <para>Op de prompt, waar om het rootbestandssysteem gevraagd
+ wordt, kan ieder apparaat dat een valide rootbestandssysteem
+ bevat worden opgegeven. Als <filename>/etc/fstab</filename>
+ goed is opgezet, is iets als
+ <literal>ufs:/dev/gvinum/root</literal> te zien. Een typische
+ andere keuze kan <literal>ufs:da0d</literal> zijn, dat een
+ hypothetische partitie is die het pre-Vinum
+ rootbestandssysteem bevat. Als één van de alias
+ <literal>"a"</literal> partities ingevuld wordt die
+ eigenlijk een referentie naar de subschijf van het Vinum
+ rootapparaat zijn, dan wordt in een gespiegelde opzet maar
+ éé kant van het gespiegelde volume aangekoppeld.
+ Als dit bestandssysteem later als lezen/schrijven
+ aangekoppeld wordt, moet(en) de andere samenstelling(en) van
+ het rootvolume verwijderd worden, omdat deze samenstellingen
+ anders inconsistente gegevens bevatten.</para>
+ </sect3>
+
+ <sect3>
+ <title>Alleen primaire bootstrap laadt</title>
+
+ <para>Als <filename>/boot/loader</filename> niet start, maar
+ de primaire bootstrap laadt wel (zichtbaar door een enkel
+ minteken in de linker bovenhoek van het scherm, direct na de
+ start van het opstartproces), kan worden geprobeerd het
+ primaire opstartproces te onderbreken door op de
+ <keycap>spatie</keycap> toets te drukken. Dit zorgt ervoor
+ dat het opstartproces stopt bij de tweede fase (zie ook
+ <xref linkend="boot-boot1"/>). Hier kan worden geprobeerd
+ vanaf een andere partitie te starten, bijvoorbeeld van de
+ partitie waar het vorige rootbestandssysteem op stond, dat
+ nu van de <literal>"a"</literal> verplaatst is.</para>
+ </sect3>
+
+ <sect3 id="vinum-root-panic">
+ <title>Niets start, paniek van bootstrap</title>
+
+ <para>Dit gebeurt als de bootstrap is vernietigd door de Vinum
+ installatie. Helaas laat Vinum op dit moment slechts 4 KB
+ vrij aan het begin van zijn partitie voordat de Vinum volume
+ identificatie geschreven wordt. De stage 1 en 2 bootstraps
+ en de bsdlabel-informatie hebben ongeveer 8 KB nodig. Dus
+ als de Vinum partitie op offset 0 van de slice van de schijf
+ begint die als opstartbaar was bedoeld, zal deze Vinum
+ informatie de bootstrap vernielen.</para>
+
+ <para>Als bovenstaande situatie is omzeild, bijvoorbeeld door
+ te starten vanaf een <quote>Fixit</quote> medium, en de
+ bootstrap opnieuw is aangemaakt met
+ <command>bsdlabel -B</command> zoals beschreven in
+ <xref linkend="boot-boot1"/>, overschrijft de nieuwe bootstrap
+ de Vinum identificatie en kan Vinum de Vinum schijven niet
+ langer vinden. Hoewel geen instellingsgegevens van Vinum of
+ gegevens in de Vinum volumes overschreven wordt en alle
+ gegevens hersteld kunnen worden door precies dezelfde
+ instellingsgegevens van Vinum opnieuw in te vullen, is dit
+ een lastige situatie om te herstellen. Het zou nodig zijn om
+ de complete Vinum partitie tenminste 4&nbsp;KB te
+ verplaatsen, om te voorkomen dat de Vinum identificatie en de
+ bootstrap met elkaar botsen.</para>
+ </sect3>
+ </sect2>
+ </sect1>
+</chapter>