1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
|
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!--
The FreeBSD Dutch Documentation Project
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/geom/chapter.xml
%SRCID% 39544
-->
<chapter id="GEOM">
<chapterinfo>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>Geschreven door </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Siebrand</firstname>
<surname>Mazeland</surname>
<contrib>Vertaald door </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>GEOM: Modulair schijftransformatie raamwerk</title>
<sect1 id="GEOM-synopsis">
<title>Overzicht</title>
<indexterm><primary>GEOM</primary></indexterm>
<indexterm>
<primary>GEOM schijf raamwerk</primary>
<see>GEOM</see>
</indexterm>
<para>Dit hoofdstuk beschrijft het gebruik van schijven in het
GEOM raamwerk in &os;. Hieronder vallen de belangrijkste
<acronym
role="Redundant Array of Inexpensive Disks">RAID</acronym>
besturingsprogramma's die het raamwerk gebruikt voor
instellingen. In dit hoofdstuk wordt niet diepgaand beschreven
hoe GEOM omgaat met I/O, het onderliggende subsysteem of code.
Die informatie staat in het hulppagina voor &man.geom.4; en de
verscheidene <quote>SEE ALSO</quote> referenties. Dit hoofdstuk
is ook geen definitief stuk over het instellen van
<acronym>RAID</acronym>. Alleen de door GEOM ondersteunde
<acronym>RAID</acronym>-classificaties worden beschreven.</para>
<para>Na het lezen van dit hoofdstuk weet de lezer:</para>
<itemizedlist>
<listitem>
<para>Welk type <acronym>RAID</acronym>-ondersteuning via GEOM
beschikbaar is;</para>
</listitem>
<listitem>
<para>Hoe de basisgereedschappen te gebruiken om de
verschillende <acronym>RAID</acronym>-niveaus in te stellen,
te onderhouden en te wijzigen;</para>
</listitem>
<listitem>
<para>Hoe schijfapparaten via GEOM te spiegelen, aaneen te
schakelen, te versleutelen en vanaf afstand schijven aan te
sluiten;</para>
</listitem>
<listitem>
<para>Hoe problemen op te lossen met schijven die via het GEOM
raamwerk zijn aangesloten.</para>
</listitem>
</itemizedlist>
<para>Veronderstelde voorkennis:</para>
<itemizedlist>
<listitem>
<para>Begrijpen hoe &os; omgaat met schijfapparaten (<xref
linkend="disks"/>);</para>
</listitem>
<listitem>
<para>Weten hoe een nieuwe &os; kernel in te stellen en te
installeren (<xref linkend="kernelconfig"/>).</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="GEOM-intro">
<title>GEOM inleiding</title>
<para>GEOM staat toegang en controle toe op klassen, Master Boot
Records, <acronym>BSD</acronym> labels, enzovoort, door gebruik
te maken van diensten of de speciale bestanden in <filename
class="directory">/dev</filename>. GEOM ondersteunt
verschillende software <acronym>RAID</acronym> instellingen en
biedt transparante toegang tot het besturingssysteem en de
hulpprogramma's.</para>
</sect1>
<sect1 id="GEOM-striping">
<sect1info>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>Geschreven door </contrib>
</author>
<author>
<firstname>Murray</firstname>
<surname>Stokely</surname>
</author>
</authorgroup>
</sect1info>
<title>RAID0 - aaneengeschakeld</title>
<indexterm><primary>GEOM</primary></indexterm>
<indexterm><primary>aaneengeschakeld</primary></indexterm>
<para>Aaneenschakelen is een methode die gebruikt wordt
om meerdere schijven te combineren tot een enkele volume. In
veel gevallen wordt dit gedaan met hardware controllers. Het
GEOM subsysteem biedt softwareondersteuning voor
<acronym>RAID</acronym>0, ook wel bekend als aaneenschakelen
(<quote>disk striping</quote>).</para>
<para>In een <acronym>RAID</acronym>0-systeem worden gegevens
opgedeeld in blokken die verdeeld worden over de schijven in een
reeks. In plaats van te hoeven wachten tot een systeem 256k naar
één schijf heeft geschreven, kan een
<acronym>RAID</acronym>0-systeem tegelijkertijd 64k naar vier
verschillende schijven schrijven, waardoor superieure I/O
prestaties worden bereikt. Deze prestaties kunnen nog verbeterd
worden door meerdere schijfcontrollers te gebruiken.</para>
<para>Iedere schijf in een
<acronym>RAID</acronym>0-aaneenschakeling moet van dezelfde
grootte zijn, omdat I/O-verzoeken altijd zijn opgebouwd uit
precies gelijk over de schijven verdeelde verzoeken tot lezen of
schrijven.</para>
<mediaobject>
<imageobject>
<imagedata fileref="geom/striping" align="center"/>
</imageobject>
<textobject>
<phrase>Illustratie aaneengeschakelde schijven</phrase>
</textobject>
</mediaobject>
<procedure>
<title>Ongeformatteerde ATA-schijven aaneenschakelen</title>
<step>
<para>Laad de module <filename>geom_stripe.ko</filename>:</para>
<screen>&prompt.root; <userinput>kldload geom_stripe</userinput></screen>
</step>
<step>
<para>Zorg ervoor dat er een koppelpunt beschikbaar is. Als dit
volume een rootpartitie wordt, gebruikt dan tijdelijk een
ander koppelpunt zoals <filename
class="directory">/mnt</filename>:</para>
<screen>&prompt.root; <userinput>mkdir /mnt</userinput></screen>
</step>
<step>
<para>Stel de apparaatnamen voor de schijven vast die aaneen
worden geschakeld en maak het nieuwe apparaat aan. Om twee
ongebruikte, ongepartitioneerde <acronym>ATA</acronym>
schijven aaneen te schakelen (<filename>/dev/ad2</filename>
en <filename>/dev/ad3</filename>):</para>
<screen>&prompt.root; <userinput>gstripe label -v st0 /dev/ad2 /dev/ad3</userinput>
Metadata value stored on /dev/ad2.
Metadata value stored on /dev/ad3.
Done.</screen>
</step>
<step>
<para>Schrijf een standaard label naar de nieuwe partitie, ook
wel bekend als een partitietabel en installeer de standaard
opstart code:</para>
<screen>&prompt.root; <userinput>bsdlabel -wB /dev/stripe/st0</userinput></screen>
</step>
<step>
<para>Dit proces hoort twee nieuwe apparaten gemaakt te hebben
in de map <filename class="directory">/dev/stripe</filename>
naast het apparaat <devicename>st0</devicename>, te weten
<devicename>st0a</devicename> en
<devicename>st0c</devicename>. Vanaf nu kan er een
bestandssysteem op <devicename>st0a</devicename> worden
gezet met behulp van de <command>newfs</command> applicatie:</para>
<screen>&prompt.root; <userinput>newfs -U /dev/stripe/st0a</userinput></screen>
<para>Na het uitvoeren van het bovenstaande commando rollen er
veel getallen over het scherm en na een aantal seconden is
het proces afgerond. Het volume is gereed en klaar om
aangekoppeld te worden.</para>
</step>
</procedure>
<para>Om de nieuwe aaneengeschakelde schijf handmatig te koppelen
moet het volgende gedaan worden:</para>
<screen>&prompt.root; <userinput>mount /dev/stripe/st0a /mnt</userinput></screen>
<para>Om dit aaneengeschakelde bestandssysteem automatisch aan te
koppelen bij het opstarten wordt de volume-informatie in
<filename>/etc/fstab</filename> gezet. Voor dit doel wordt een
permanent koppelpunt, genaamd <filename
class="directory">stripe</filename>, aangemaakt:</para>
<screen>&prompt.root; <userinput>mkdir /stripe</userinput>
&prompt.root; <userinput>echo "/dev/stripe/st0a /mnt ufs rw 2 2" \</userinput>
<userinput>>> /etc/fstab</userinput></screen>
<para>Laadt de module <filename>geom_stripe.ko</filename> ook
automatisch bij het initialiseren van een systeem door de volgende
regel toe te voegen aan <filename>/boot/loader.conf</filename>:</para>
<screen>&prompt.root; <userinput>echo 'geom_stripe_load="YES"' >> /boot/loader.conf</userinput></screen>
</sect1>
<sect1 id="GEOM-mirror">
<title>RAID1 - spiegelen</title>
<indexterm><primary>GEOM</primary></indexterm>
<indexterm><primary>schijf spiegelen</primary></indexterm>
<para>Spiegelen (<quote>mirroring</quote>) is een technologie die
door veel bedrijven en thuisgebruikers wordt ingezet om gegevens
te back-uppen zonder onderbrekingen. Als er een spiegel bestaat,
betekent dat eenvoudigweg dat schijfB een kopie is van schijfA,
of misschien zijn schijvenC+D een kopie van schijvenA+B. Los van
de schijfinstellingen is het belangrijkste aspect dat de
gegevens van de ene schijf of partitie worden gerepliceerd naar
de andere. Later kunnen die gegevens eenvoudiger worden hersteld
of geback-upped zonder dat dit leidt tot onderbrekingen in
dienstverlening of toegang tot gegevens en schijven kunnen zelfs
fysiek worden opgeslagen in een kluis.</para>
<para>Begin met een systeem dat twee schijven heeft van gelijke
grootte. Deze oefeningen stellen dat het directe-toegang
(&man.da.4;) <acronym>SCSI</acronym>-schijven zijn.</para>
<sect2>
<title>Primaire schijven spiegelen</title>
<para>Aannemende dat &os; op het eerste
<devicename>da0</devicename>-schijfapparaat is
geïnstalleerd, dient er aan &man.gmirror.8; verteld te
worden om daar de primaire gegevens op te slaan.</para>
<para>Voordat de mirror gebouwd wordt, dient aanvullende
debuginformatie en openingstoegang tot het apparaat aangezet te
worden door de &man.sysctl.8;-optie
<varname>kern.geom.debugflags</varname> op de volgende waarde in
te stellen:</para>
<screen>&prompt.root; <userinput>sysctl kern.geom.debugflags=17</userinput></screen>
<para>Maak nu de mirror aan. Begin het proces door informatie
over metagegevens op het primaire schijfapparaat op te slaan,
waardoor effectief het apparaat <filename
class="devicefile">/dev/mirror/gm</filename> aangemaakt
wordt met het volgende commando:</para>
<warning>
<para>Het creëeren van een mirror buiten de opstartschijf
kan resulteren in gegevensverlies als er enige gegevens zijn
opgeslagen op de laatste sector van de schijf. Dit gevaar
wordt verminderd als het creëeren van de mirror direct na
een verse installatie van &os; wordt gedaan. De volgende procedure
werkt ook niet samen met de instellingen van de standaardinstallatie
van &os; 9.<replaceable>X</replaceable> dat het nieuwe
partitieschema <acronym>GPT</acronym> gebruikt. GEOM zal de
metagegevens van <acronym>GPT</acronym> overschrijven, wat'
gegevensverlies en mogelijk een onstartbaar systeem tot gevolg
heeft.</para>
</warning>
<screen>&prompt.root; <userinput>gmirror label -vb round-robin gm0 /dev/da0</userinput></screen>
<para>Het systeem hoort te antwoorden met:</para>
<screen>Metadata value stored on /dev/da0.
Done.</screen>
<para>Initialiseer GEOM, dit zal de kernelmodule
<filename>/boot/kernel/geom_mirror.ko</filename> laden:</para>
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
<note>
<para>Wanneer dit commando succesvol verloopt, maakt het het
apparaatknooppunt <devicename>gm0</devicename> aan onder de
map <filename class="directory">/dev/mirror</filename>.</para>
</note>
<para>Maak het mogelijk om de kernelmodule
<filename>geom_mirror.ko</filename> tijdens systeeminitialisatie
te laden:</para>
<screen>&prompt.root; <userinput>echo 'geom_mirror_load="YES"' >> /boot/loader.conf</userinput></screen>
<para>Bewerk het bestand <filename>/etc/fstab</filename>, waarbij
verwijzingen naar het oude <devicename>da0</devicename> worden
vervangen door de nieuwe apparaatknooppunten van het
mirrorapparaat <devicename>gm0</devicename>.</para>
<note>
<para>Indien &man.vi.1; de geprefereerde tekstverwerker is, is
het volgende een gemakkelijke manier om deze taak te
volbrengen:</para>
<screen>&prompt.root; <userinput>vi /etc/fstab</userinput></screen>
<para>Maak een reservekopie van de huidige gegevens van
<filename>fstab</filename> in &man.vi.1; door <userinput>:w
/etc/fstab.bak</userinput> in te typen. Vervang daarna alle
oude verwijzingen naar <devicename>da0</devicename> door
<devicename>gm0</devicename> door
<userinput>:%s/da/mirror\/gm/g</userinput> in te typen.</para>
</note>
<para>Het resulterende <filename>fstab</filename> zou er ongeveer
hetzelfde als het volgende uit moeten zien. Het maakt niet uit
of de schijfstations <acronym>SCSI</acronym> of
<acronym>RAID</acronym> zijn, het
<acronym>RAID</acronym>-apparaat zal ongeacht hiervan
<devicename>gm</devicename> zijn.</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1d /usr ufs rw 0 0
/dev/mirror/gm0s1f /home ufs rw 2 2
#/dev/mirror/gm0s2d /store ufs rw 2 2
/dev/mirror/gm0s1e /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0</programlisting>
<para>Start het systeem opnieuw op:</para>
<screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
<para>Tijdens de systeeminitialisatie dient het apparaat
<devicename>gm0</devicename> in plaats van
<devicename>da0</devicename> gebruikt te worden. Als het
systeem volledig is geïnitialiseerd, kan dit gecontroleerd
worden door de uitvoer van het commando <command>mount</command>
te inspecteren:</para>
<screen>&prompt.root; <userinput>mount</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 1012974 224604 707334 24% /
devfs 1 1 0 100% /dev
/dev/mirror/gm0s1f 45970182 28596 42263972 0% /home
/dev/mirror/gm0s1d 6090094 1348356 4254532 24% /usr
/dev/mirror/gm0s1e 3045006 2241420 559986 80% /var
devfs 1 1 0 100% /var/named/dev</screen>
<para>De uitvoer ziet er als verwacht uit. Plaats als laatste
stap, om synchronisatie te beginnen, de schijf
<devicename>da1</devicename> in de mirror met het volgende
commando:</para>
<screen>&prompt.root; <userinput>gmirror insert gm0 /dev/da1</userinput></screen>
<para>De status kan gecontroleerd worden tijdens het bouwen van de
mirror met het volgende commando:</para>
<screen>&prompt.root; <userinput>gmirror status</userinput></screen>
<para>Wanneer de mirror gebouwd is en alle huidige gegevens zijn
gesynchroniseerd, dient de uitvoer van het bovenstaande commando
er als volgt uit te zien:</para>
<screen> Name Status Components
mirror/gm0 COMPLETE da0
da1</screen>
<para>Als er problemen zijn, of als de mirror nog bezig is om het
bouwproces te voltooien, zal het voorbeeld
<literal>DEGRADED</literal> in plaats van
<literal>COMPLETE</literal> laten zien.</para>
</sect2>
<sect2>
<title>Problemen oplossen</title>
<sect3>
<title>Systeem weigert op te starten</title>
<para>Als een systeem opstart in een prompt dat op het volgende
lijkt:</para>
<programlisting>ffs_mountroot: can't find rootvp
Root mount failed: 6
mountroot></programlisting>
<para>Herstart te machine met de aan/uit-schakelaar of met de
resetknop. Selecteer in het bootmenu optie zes (6).
Hierdoor komt een systeem in een &man.loader.8; prompt. Laad
de kernelmodules handmatig:</para>
<screen>OK? <userinput>load geom_mirror</userinput>
OK? <userinput>boot</userinput></screen>
<para>Als dit werkt werd de module om welke reden dan ook niet
juist geladen. Controleer of de relevante regel in
<filename>/boot/loader.conf</filename> correct is. Als het
probleem aanhoudt, zet dan de onderstaande regel in het
bestand met kernelinstellingen en herbouw en installeer de
kernel.</para>
<programlisting>options GEOM_MIRROR</programlisting>
<para>Hiermee moet het probleem opgelost zijn.</para>
</sect3>
</sect2>
<sect2>
<title>Herstellen van falende schijven</title>
<para>Het mooie aan het spiegelen van schijven is dat als een
schijf faalt, deze vervangen kan worden, aangenomen zonder
gegevensverlies.</para>
<para>Neem met betrekking tot de vorige
<acronym>RAID</acronym>1-configuratie aan dat
<devicename>da1</devicename> het geeft begeven en vervangen moet
worden. Bepaal, om het te vervangen, welke schijf het heeft
begeven en schakel het systeem uit. Op dit moment kan de schijf
worden verwisseld door een nieuwe en kan het systeem weer worden
opgestart. Nadat het systeem is herstart, kunnen de volgende
commando's worden gebruikt om de schijf te vervangen:</para>
<screen>&prompt.root; <userinput>gmirror forget gm0</userinput></screen>
<screen>&prompt.root; <userinput>gmirror insert gm0 /dev/da1</userinput></screen>
<para>Gebruik het commando <command>gmirror status</command> om de
voortgang van het herbouwen te bekijken. Zo eenvoudig is het.</para>
</sect2>
</sect1>
<sect1 id="GEOM-raid3">
<sect1info>
<authorgroup>
<author>
<firstname>Mark</firstname>
<surname>Gladman</surname>
<contrib>Geschreven door </contrib>
</author>
<author>
<firstname>Daniel</firstname>
<surname>Gerzo</surname>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>Gebaseerd op documentatie van </contrib>
</author>
<author>
<firstname>Murray</firstname>
<surname>Stokely</surname>
</author>
</authorgroup>
</sect1info>
<title><acronym>RAID</acronym>3 - Striping op byte-niveau met toegewijde
pariteit</title>
<indexterm><primary>GEOM</primary></indexterm>
<indexterm><primary>RAID3</primary></indexterm>
<para><acronym>RAID</acronym>3 is een methode om verschillende schijven te
combineren in een enkel volume met een toegewijde schijf voor de pariteit.
In een <acronym>RAID</acronym>3-systeem worden de gegevens opgesplitst in
een aantal bytes die over alle schijven in de rij worden geschreven,
behalve naar één schijf die als een toegewijde schijf voor
de pariteit dient. Dit betekent dat het lezen van 1024 kB van een
<acronym>RAID</acronym>3-implementatie alle schijven in de rij zal
benaderen. De prestatie kan worden verhoogd door meerdere
schijfcontrollers te gebruiken. De <acronym>RAID</acronym>3-rij biedt een
fouttolerantie van 1 schijf, terwijl het een capaciteit van 1 - 1/n maal
de totale capaciteit biedt van alle schijven in de rij, waarbij n het
aantal harde schijven in de rij is. Zulke configuraties zijn meestal
geschikt voor het opslaan van gegevens van grotere groottes, bijvoorbeeld
multimedia-bestanden.</para>
<para>Er zijn minstens 3 fysieke harde schijven nodig om een
<acronym>RAID</acronym>3-rij te bouwen. Elke schijf moet van dezelfde
grootte zijn, aangezien I/O-verzoeken worden verweven om parallel naar
meerdere schijven te lezen of schrijven. Bovendien moet vanwege de aard
van <acronym>RAID</acronym>3 het aantal schijven gelijk zijn aan 3, 5, 9,
17, enzovoorts (dus 2^n + 1).</para>
<sect2>
<title>Een toegewijde <acronym>RAID</acronym>3-rij aanmaken.</title>
<para>In &os; is ondersteuning voor <acronym>RAID</acronym>3
geïmplementeerd in de <acronym>GEOM</acronym>-klasse
&man.graid3.8;. Voor het aanmaken van een toegewijde
<acronym>RAID</acronym>3-rij op &os; zijn deze stappen nodig.</para>
<note>
<para>Hoewel het theoretisch mogelijk is om op &os; van een
<acronym>RAID</acronym>3-rij op te starten, is deze configuratie
ongebruikelijk en niet aangeraden.</para>
</note>
<procedure>
<step>
<para>Laad ten eerste de kernelmodule
<filename>geom_raid3.ko</filename> door de volgende opdracht uit te
voeren:</para>
<screen>&prompt.root; <userinput>graid3 load</userinput></screen>
<para>Het is ook mogelijk om handmatig de module
<filename>geom_raid3.ko</filename> te laden:</para>
<screen>&prompt.root; <userinput>kldload geom_raid3.ko</userinput></screen>
</step>
<step>
<para>Zorg ervoor dat er een geschikt aankoppelpunt bestaat of maak
het aan:</para>
<screen>&prompt.root; <userinput>mkdir <replaceable>/multimedia/</replaceable></userinput></screen>
</step>
<step>
<para>Bepaal de apparaatnamen voor de schijven die aan de rij worden
toegevoegd en maak het nieuwe <acronym>RAID</acronym>3-apparaat
aan. Het laatst vermelde apparaat zal dienst doen als de toegewijde
schijf voor de pariteit. Dit voorbeeld gebruikt drie
ongepartitioneerde <acronym>ATA</acronym>-schijven:
<devicename><replaceable>ada1</replaceable></devicename> en
<devicename><replaceable>ada2</replaceable></devicename> voor
gegevens en <devicename><replaceable>ada3</replaceable></devicename>
voor pariteit.</para>
<screen>&prompt.root; <userinput>graid3 label -v gr0 /dev/ada1 /dev/ada2 /dev/ada3</userinput>
Metadata value stored on /dev/ada1.
Metadata value stored on /dev/ada2.
Metadata value stored on /dev/ada3.
Done.</screen>
</step>
<step>
<para>Partitioneer het nieuw aangemaakte apparaat
<devicename>gr0</devicename> en zet er een UFS-bestandssysteem
op:</para>
<screen>&prompt.root; <userinput>gpart create -s GPT /dev/raid3/gr0</userinput>
&prompt.root; <userinput>gpart add -t freebsd-ufs /dev/raid3/gr0</userinput>
&prompt.root; <userinput>newfs -j /dev/raid3/gr0p1</userinput></screen>
<para>Vele getallen zullen over het scherm lopen, en na wat tijd zal
het proces voltooid zijn. Het volume is aangemaakt en is klaar om
aangekoppeld te worden.</para>
</step>
<step>
<para>De laatste stap is het aankoppelen van het
bestandssysteem:</para>
<screen>&prompt.root; <userinput>mount /dev/raid3/gr0p1 /multimedia/</userinput></screen>
<para>De <acronym>RAID</acronym>3-rij is nu klaar voor gebruik.</para>
</step>
</procedure>
<para>Aanvullende configuratie is nodig om de bovenstaande opstelling te
behouden tussen het opnieuw starten van het systeem.</para>
<procedure>
<step>
<para>De module <filename>geom_raid3.ko</filename> moet geladen zijn
voordat de rij kan worden aangekoppeld. Voeg de volgende regel toe
aan <filename>/boot/loader.conf</filename> om de kernelmodule
automatisch tijdens de initialisatie van het systeem te
laden:</para>
<programlisting>geom_raid3_load="YES"</programlisting>
</step>
<step>
<para>De volgende volume-informatie moet aan het bestand
<filename>/etc/fstab</filename> worden toegevoegd om het
bestandssysteem van de rij automatisch aan de koppelen tijdens het
opstarten van het systeem:</para>
<programlisting>/dev/raid3/gr0p1 /multimedia ufs rw 2 2</programlisting>
</step>
</procedure>
</sect2>
</sect1>
<sect1 id="geom-ggate">
<title>GEOM Gate netwerk apparaten</title>
<para>GEOM ondersteund het op afstand gebruiken van apparaten, zoals
schijven, CD-ROMs, bestanden, etcetera door het gebruik van de
gate-applicaties. Dit is vergelijkbaar met <acronym>NFS</acronym>.</para>
<para>Om te beginnen moet er een exports bestand gemaakt worden.
Dit bestand specificeert wie de geëxporteerde bron mag
benaderen en welke rechten er op dat moment verleend worden.
Bijvoorbeeld om de vierde slice te exporteren van de eerste
<acronym>SCSI</acronym> schijf, moet het volgende in
<filename>/etc/gg.exports</filename> gezet worden:</para>
<programlisting>192.168.1.0/24 RW /dev/da0s4d</programlisting>
<para>Dit staat alle machines in het privé netwerk toe om het
bestandssysteem op <devicename>da0s4d</devicename> te benaderen.</para>
<para>Om dit apparaat te kunnen exporteren is het van belang dat de
schijf nog niet gekoppeld is en moet de &man.ggated.8; dienst
gestart worden.</para>
<screen>&prompt.root; <userinput>ggated</userinput></screen>
<para>Om vervolgens het apparaat aan een client machine te koppelen
moet het volgende gedaan worden:</para>
<screen>&prompt.root; <userinput>ggatec create -o rw 192.168.1.1 /dev/da0s4d</userinput>
ggate0
&prompt.root; <userinput>mount /dev/ggate0 /mnt</userinput></screen>
<para>Vanaf dit moment kan de schijf benaderd worden via het
koppelpunt <filename class="directory">/mnt</filename>.</para>
<note>
<para>Let op, dit mislukt als de schijf reeds gekoppeld is op
de server machine of als deze reeds gekoppeld is aan een andere
machine op het netwerk.</para>
</note>
<para>Zodra het apparaat niet langer nodig is, kan het veilig
ontkoppeld worden met behulp van &man.umount.8; net zoals met
elke andere schijf.</para>
</sect1>
<sect1 id="geom-glabels">
<title>Het labelen van schijven</title>
<indexterm><primary>GEOM</primary></indexterm>
<indexterm><primary>Disk Labels</primary></indexterm>
<para>Tijdens het initialiseren van het systeem zal de &os; 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 <acronym>USB</acronym>. Het is hoogst
waarschijnlijk dat een flash apparaat een apparaatknooppunt
krijgt van <devicename>da0</devicename>, waarna de originele
<devicename>da0</devicename> op schuift naar
<devicename>da1</devicename>. Dit levert problemen op als
bestandssystemen worden gekoppeld als ze gedefinieerd zijn in
<filename>/etc/fstab</filename>, dit kan zelfs ertoe leiden dat
het systeem niet opstart.</para>
<para>Een mogelijke oplossing hiervoor is om de
<acronym>SCSI</acronym> 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 <acronym>USB</acronym>
apparaten zijn die de primaire <acronym>SCSI</acronym> schijf
vervangt? Dit gebeurd omdat <acronym>USB</acronym> apparaten
meestal eerder gevonden worden dan een <acronym>SCSI</acronym>
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 <acronym>ATA</acronym> schijf te
koppelen en nooit <acronym>SCSI</acronym> schijven door middel
van <filename>/etc/fstab</filename>.</para>
<para>Maar er is een betere oplossing beschikbaar. Door het gebruik
van <command>glabel</command> kunnen beheerders en gebruikers een
label toevoegen aan een schijf, en deze labels gebruiken in
<filename>/etc/fstab</filename>. Omdat <command>glabel</command>
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.</para>
<note>
<para>Uiteraard hoeft een label niet permanent te zijn, het
<command>glabel</command> programma kan zowel tijdelijke als
permanente labels aanmaken. Alleen een permanent label blijft
beschikbaar ook na een reboot. Zie de &man.glabel.8;
handleiding voor meer informatie over de verschillen tussen de
labeltypes.</para>
</note>
<sect2>
<title>Label types en voorbeelden</title>
<para>Er zijn twee type labels: een generiek label en een
bestandssysteemlabel. Labels kunnen permanent of tijdelijk
zijn. Permanente labels kunnen met de commando's &man.tunefs.8;
of &man.newfs.8; aangemaakt worden. Ze zullen vervolgens worden
aangemaakt in een submap van
<filename class="directory">/dev</filename>, welke genoemd wordt
naar het bestandssysteemtype. Bijvoorbeeld
<acronym>UFS</acronym>2 labels worden geplaatst in de map
<filename class="directory">/dev/ufs</filename>. Permanente
labels kunnen ook worden aangemaakt met het commando
<command>glabel label</command>. Deze zijn niet specifiek voor
het bestandssysteem, en zullen in de map <filename
class="directory">/dev/label</filename> aangemaakt
worden.</para>
<para>Een tijdelijk label verdwijnt na een herstart van het
systeem. Deze labels worden gecreëerd in
<filename class="directory">/dev/label</filename> en zijn
perfect voor experimenten. Een tijdelijk kan met het commando
<command>glabel create</command> worden aangemaakt. Lees voor
meer informatie de handleidingpagina van &man.glabel.8;.</para>
<!-- XXXTR: How do you create a file system label without running newfs
or when there is no newfs (e.g.: cd9660)? -->
<para>Om een permanent label te schrijven voor een
<acronym>UFS</acronym>2-bestandssysteem zonder de huidige data
te vernietigen:</para>
<screen>&prompt.root; <userinput>tunefs -L <replaceable>home</replaceable> <replaceable>/dev/da3</replaceable></userinput></screen>
<warning>
<para>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.</para>
</warning>
<para>Er zou nu een label moeten bestaan in
<filename class="directory">/dev/ufs</filename>, welke
toegevoegd kan worden aan het <filename>/etc/fstab</filename>
bestand:</para>
<programlisting>/dev/ufs/home /home ufs rw 2 2</programlisting>
<note>
<para>Het bestandssysteem mag niet aangekoppeld zijn op het
moment dat <command>tunefs</command> gebruikt wordt.</para>
</note>
<para>Nu kan het bestandssysteem net als normaal worden gekoppeld:</para>
<screen>&prompt.root; <userinput>mount /home</userinput></screen>
<para>Vanaf dit moment is het mogelijk om, zolang de
<filename>geom_label.ko</filename> geladen wordt tijdens het
opstarten van het systeem, of als deze is meegecompileerd door
middel van de <literal>GEOM_LABEL</literal> optie in de kernel,
het apparaatknooppunt te wijzigen zonder ernstige gevolgen voor
het systeem.</para>
<para>Bestandssystemen kunnen ook een standaard label mee krijgen
door gebruik te maken van de <option>-L</option> optie met het
<command>newfs</command> commando. Zie de &man.newfs.8;
handleiding voor meer informatie.</para>
<para>Het volgende commando kan worden gebruikt om een label te
verwijderen:</para>
<screen>&prompt.root; <userinput>glabel destroy home</userinput></screen>
<para>Het volgende voorbeeld laat zien hoe de partities van een
opstartschijf gelabeld worden.</para>
<example>
<title>Partities op de opstartschijf labelen</title>
<para>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
<acronym>ATA</acronym>-schijf wordt gebruikt, die momenteel
als <devicename>ad0</devicename> door het systeem wordt
herkend. Het wordt ook aangenomen dat het standaard
partitieschema van &os; wordt gebruikt, met de
bestandssystemen <filename class="directory">/</filename>,
<filename class="directory">/var</filename>,
<filename class="directory">/usr</filename>, en
<filename class="directory">/tmp</filename>, alsmede een
wisselpartitie.</para>
<para>Start het systeem opnieuw op, en druk bij de
&man.loader.8;-prompt op 4 om in enkele gebruikersmodus op te
starten. Geef dan de volgende commando's:</para>
<screen>&prompt.root; <userinput>glabel label rootfs /dev/ad0s1a</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
&prompt.root; <userinput>glabel label var /dev/ad0s1d</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
&prompt.root; <userinput>glabel label usr /dev/ad0s1f</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
&prompt.root; <userinput>glabel label tmp /dev/ad0s1e</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
&prompt.root; <userinput>glabel label swap /dev/ad0s1b</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
&prompt.root; <userinput>exit</userinput></screen>
<para>Het systeem zal doorgaan met opstarten in
meergebruikersmodus. Bewerk, nadat het opstarten is voltooid,
<filename>/etc/fstab</filename> en vervang de conventionele
namen door de respectievelijke labels. Het uiteindelijke
bestand <filename>/etc/fstab</filename> zal er als volgt
uitzien:</para>
<programlisting># 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</programlisting>
<para>Het systeem kan nu worden herstart. Als alles goed ging,
zal het normaal opstarten en zal <command>mount</command> dit
laten zien:</para>
<screen>&prompt.root; <userinput>mount</userinput>
/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)</screen>
</example>
<para>Beginnend met &os; 7.2 ondersteunt de klasse &man.glabel.8;
een nieuw labeltype voor <acronym>UFS</acronym>-bestandssystemen,
gebaseerd op het unieke id van het bestandssysteem,
<literal>ufsid</literal>. Deze labels kunnen in de map <filename
class="directory">/dev/ufsid</filename> gevonden worden en
worden automatisch tijdens het opstarten aangemaakt. Het is
mogelijk om de <literal>ufsid</literal>-labels te gebruiken om
partities aan te koppelen door middel van de faciliteit
<filename>/etc/fstab</filename>. Gebruik <command>glabel
status</command> om een lijst van bestandssystemen en hun
overeenkomende <literal>ufsid</literal>-labels te ontvangen:</para>
<screen>&prompt.user; <userinput>glabel status</userinput>
Name Status Components
ufsid/486b6fc38d330916 N/A ad4s1d
ufsid/486b6fc16926168e N/A ad4s1f</screen>
<para>In het bovenstaande voorbeeld representeert
<devicename>ad4s1d</devicename> het bestandssysteem <filename
class="directory">/var</filename>, terwijl
<devicename>ad4s1f</devicename> het bestandssysteem <filename
class="directory">/usr</filename> representeert. Door gebruik
te maken van de gegeven <literal>ufsid</literal>-waarden kunnen
deze partities nu aangekoppeld worden met de volgende regels in
<filename>/etc/fstab</filename>:</para>
<programlisting>/dev/ufsid/486b6fc38d330916 /var ufs rw 2 2
/dev/ufsid/486b6fc16926168e /usr ufs rw 2 2</programlisting>
<para>Elke partitie met een <literal>ufsid</literal>-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.</para>
</sect2>
</sect1>
<sect1 id="geom-gjournal">
<title>UFS logboeken door middel van GEOM</title>
<indexterm><primary>GEOM</primary></indexterm>
<indexterm><primary>Journaling</primary></indexterm>
<para>Met de komst van &os; 7.0 komt ook de langverwachte
optie van <acronym>UFS</acronym> logboeken. De implementatie
zelf is gedaan door middel van het GEOM subsysteem, welke
makkelijk geconfigureerd kan worden met behulp van de
&man.gjournal.8; applicatie.</para>
<para>Wat is logboeken? Logboek mogelijkheden betekend het opslaan
van bestandssysteem transacties, zoals wijzigingen die een
complete schrijfactie zijn, voor er meta-data wordt toegevoegd
en voor de wijzigingen op schijf worden gezet. Deze transactie
log kan later opnieuw afgespeeld worden om te voorkomen dat er
bestandssysteem inconsistenties voorkomen.</para>
<para>Deze methode is een extra manier om te beschermen tegen
gegevensverlies en inconsistenties van het bestandssysteem. In
tegenstelling tot Soft Updates, welke bijhoud welke meta-data
wijzigingen er worden uitgevoerd en Snapshots, wat een beeld
bestand is van het bestandssysteem, wordt er een complete log
bewaard in de schijfruimte die speciaal voor deze taak is
gereserveerd, en in sommige gevallen op een compleet andere
schijf.</para>
<para>In tegenstelling tot andere logboek implementaties is de
<command>gjournal</command> methode blok gebaseerd en niet
geïmplementeerd als onderdeel van het bestandssysteem maar
als uitbreiding op <acronym>GEOM</acronym>.</para>
<para>Om ondersteuning in te schakelen voor
<command>gjournal</command>, moet de kernel over de volgende optie
beschikken, welke standaard is op &os; 7.X-systemen:</para>
<programlisting>options UFS_GJOURNAL</programlisting>
<para>Indien gejournalde volumes tijdens het opstarten aangekoppeld
moeten worden, moet de kernelmodule
<filename>geom_journal.ko</filename> ook geladen zijn, door de
volgende regel aan <filename>/boot/loader.conf</filename> toe te
voegen:</para>
<programlisting>geom_journal_load="YES"</programlisting>
<para>Ook kan deze functie in een eigen kernel worden ingebouwd,
door de volgende regel aan het kernelinstellingenbestand toe te
voegen:</para>
<programlisting>options GEOM_JOURNAL</programlisting>
<para>Het creëren van een logboek op een vrij en beschikbaar
bestandssysteem kan nu gedaan worden met behulp van de volgende
stappen, ervan uitgaande dat <devicename>da4</devicename> de
nieuwe beschikbare <acronym>SCSI</acronym> schijf is:</para>
<screen>&prompt.root; <userinput>gjournal load</userinput>
&prompt.root; <userinput>gjournal label /dev/da4</userinput></screen>
<para>Op dit moment zou er een <devicename>ad4</devicename>
apparaatknooppunt en een <devicename>ad4.journal</devicename>
apparaatknooppunt moeten zijn. Nu kan er een bestandssysteem op
gezet worden:</para>
<screen>&prompt.root; <userinput>newfs -O 2 -J /dev/da4.journal</userinput></screen>
<para>Het hiervoor ingevoerde commando zal een
<acronym>UFS</acronym>2 bestandssysteem met logboek
ondersteuning aanmaken.</para>
<para>Koppel het apparaat op een gewenst koppelpunt met:</para>
<screen>&prompt.root; <userinput>mount /dev/da4.journal <replaceable>/mnt</replaceable></userinput></screen>
<note>
<para>In het geval dat er meerdere slices zijn, zal er een logboek
voor elke slice gecreëerd worden. Bijvoorbeeld, als
<devicename>ad4s1</devicename> en <devicename>ad4s2</devicename>
allebei slices zijn, dan zal <command>gjournal</command> een
<devicename>ad4s1.journal</devicename> en een
<devicename>ad4s2.journal</devicename> creëeren.</para>
</note>
<para>Voor performance doeleinden is het gewenst om het logboek op een
andere schijf te bewaren. Voor deze gevallen moet de
logboekleverancier of het opslagapparaat gespecificeerd worden
achter het apparaat waarop de logboek functionaliteit aangebracht
moet worden. De logboekfunctionaliteit kan ook worden
ingeschakeld op een reeds bestaand systeem met behulp van
<command>tunefs</command>. Maak echter altijd een back-up voor dat
dit soort dingen uitgeprobeerd worden. In de meeste gevallen zal
<command>gjournal</command> falen als het geen actueel logboek
kan maken, maar het voorkomt geen dataverlies als gevolg van
verkeerd gebruik van <command>tunefs</command>.</para>
<para>Het is ook mogelijk om een journal van de opstartschijf van
een &os;-systeem bij te houden. Voor gedetailleerde instructies
over deze taak wordt naar het artikel <ulink
url="&url.articles.gjournal-desktop;">Implementing UFS
Journaling on a Desktop PC</ulink> verwezen.</para>
</sect1>
</chapter>
|