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
|
<?xml version="1.0" encoding="ISO-8859-7" standalone="no"?>
<!--
Ôï Åã÷åéñßäéï ôïõ FreeBSD: ÓõóôÞìáôá Áñ÷åßùí
The FreeBSD Greek Documentation Project
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/filesystems/chapter.sgml
%SRCID% 39361
-->
<chapter id="filesystems">
<chapterinfo>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>ÃñÜöçêå áðü ôïí </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>ÕðïóôÞñéîç ÓõóôçìÜôùí Áñ÷åßùí</title>
<sect1 id="filesystems-synopsis">
<title>Óýíïøç</title>
<indexterm><primary>File Systems</primary></indexterm>
<indexterm>
<primary>File Systems Support</primary>
<see>File Systems</see>
</indexterm>
<para>Ôá óõóôÞìáôá áñ÷åßùí áðïôåëïýí áíáðüóðáóôï ôìÞìá êÜèå ëåéôïõñãéêïý
óõóôÞìáôïò. ÅðéôñÝðïõí óôïõò ÷ñÞóôåò íá äçìéïõñãïýí êáé íá áðïèçêåýïõí
áñ÷åßá, ðáñÝ÷ïõí ðñüóâáóç óå äåäïìÝíá, êáé öõóéêÜ áîéïðïéïýí ôïõò
óêëçñïýò äßóêïõò. ÄéáöïñåôéêÜ ëåéôïõñãéêÜ óõóôÞìáôá ÷ñçóéìïðïéïýí
óõíÞèùò äéáöïñåôéêÜ åããåíÞ óõóôÞìáôá áñ÷åßùí. Ôï óýóôçìá áñ÷åßùí ôïõ
&os; åßíáé ôï Fast File System Þ <acronym>FFS</acronym>, ôï
ïðïßï ðñïÞëèå áðü ôï áñ÷éêü óýóôçìá áñ÷åßùí ôïõ Unix™, ãíùóôü
åðßóçò êáé ùò <acronym>UFS</acronym>. Áõôü åßíáé êáé ôï åããåíÝò
óýóôçìá áñ÷åßùí ôïõ &os;, ôï ïðïßï ÷ñçóéìïðïéåßôáé óôïõò óêëçñïýò
äßóêïõò êáé ðñïóöÝñåé ðñüóâáóç óôá äåäïìÝíá.</para>
<para>Ôï &os; ðñïóöÝñåé åðßóçò ðëçèþñá äéáöïñåôéêþí óõóôçìÜôùí áñ÷åßùí,
þóôå íá ðáñÝ÷åé ôïðéêÞ ðñüóâáóç óå äåäïìÝíá ðïõ Ý÷ïõí äçìéïõñãçèåß áðü
Üëëá ëåéôïõñãéêÜ óõóôÞìáôá, ð.÷. äåäïìÝíá ðïõ âñßóêïíôáé óå ôïðéêÜ
<acronym>USB</acronym> áðïèçêåõôéêÜ ìÝóá, ïäçãïýò flash, êáé óêëçñïýò
äßóêïõò. ÕðÜñ÷åé åðßóçò õðïóôÞñéîç ãéá Üëëá, ìç-åããåíÞ óõóôÞìáôá
áñ÷åßùí, üðùò ôï Extended File System (<acronym>EXT</acronym>) ôïõ
&linux; êáèþò êáé ôï óýóôçìá Z File System (<acronym>ZFS</acronym>) ôçò
&sun;.</para>
<para>Ôï &os; ðáñÝ÷åé äéáöïñåôéêü åðßðåäï õðïóôÞñéîçò ãéá êÜèå óýóôçìá
áñ÷åßùí. Ãéá ïñéóìÝíá èá ÷ñåéáóôåß íá öïñôùèåß êÜðïéï Üñèñùìá óôïí
ðõñÞíá, åíþ ãéá Üëëá èá ðñÝðåé íá åãêáôáóôáèïýí êÜðïéá åñãáëåßá.
Ôï êåöÜëáéï áõôü Ý÷åé ó÷åäéáóôåß íá âïçèÞóåé ôïõò ÷ñÞóôåò ôïõ &os; íá
áðïêôÞóïõí ðñüóâáóç óå Üëëá óõóôÞìáôá áñ÷åßùí óôï óýóôçìá ôïõò,
îåêéíþíôáò áðü ôï Æ File System ôçò &sun;.</para>
<para>Áöïý äéáâÜóåôå áõôü ôï êåöÜëáéï, èá ãíùñßæåôå:</para>
<itemizedlist>
<listitem>
<para>Ôç äéáöïñÜ ìåôáîý ôùí åããåíþí êáé ôùí õðïóôçñéæüìåíùí
óõóôçìÜôùí áñ÷åßùí.</para>
</listitem>
<listitem>
<para>Ðïéá óõóôÞìáôá áñ÷åßùí õðïóôçñßæïíôáé áðü ôï &os;.</para>
</listitem>
<listitem>
<para>Ðùò íá åíåñãïðïéÞóåôå, íá ñõèìßóåôå, íá áðïêôÞóåôå ðñüóâáóç êáé
íá ÷ñçóéìïðïéÞóåôå ìç-åããåíÞ óõóôÞìáôá áñ÷åßùí.</para>
</listitem>
</itemizedlist>
<para>Ðñéí äéáâÜóåôå áõôü ôï êåöÜëáéï, èá ðñÝðåé:</para>
<itemizedlist>
<listitem>
<para>Íá êáôáíïåßôå âáóéêÝò Ýííïéåò ôïõ &unix; êáé ôïõ &os;
(<xref linkend="basics"/>).</para>
</listitem>
<listitem>
<para>Íá åßóôå åîïéêåéùìÝíïò ìå ôéò âáóéêÝò äéáäéêáóßåò ñýèìéóçò êáé
åãêáôÜóôáóçò ðñïóáñìïóìÝíïõ ðõñÞíá
(<xref linkend="kernelconfig"/>).</para>
</listitem>
<listitem>
<para>Íá áéóèÜíåóôå Üíåôá ìå ôçí åãêáôÜóôáóç åöáñìïãþí ôñßôïõ
êáôáóêåõáóôÞ óôï &os; (<xref linkend="ports"/>).</para>
</listitem>
<listitem>
<para>Íá åßóôå åîïéêåéùìÝíïò ìå ôïõò äßóêïõò, ôá ìÝóá
áðïèÞêåõóçò, êáé ôá áíôßóôïé÷á ïíüìáôá óõóêåõþí óôï
&os; (<xref linkend="disks"/>).</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="filesystems-zfs">
<title>Ôï Óýóôçìá Áñ÷åßùí Z (ZFS)</title>
<para>Ôï óýóôçìá áñ÷åßùí Z, áíáðôý÷èçêå áðü ôçí &sun;, êáé åßíáé ìéá íÝá
ôå÷íïëïãßá ðïõ ó÷åäéÜóôçêå ãéá íá ðáñÝ÷åé áðïèÞêåõóç ìÝóù ôçò ìåèüäïõ
pool. Áõôü óçìáßíåé üôé üëïò ï åëåýèåñïò ÷þñïò äéáôßèåôáé ùò
áðüèåìá, êáé äéáíÝìåôáé äõíáìéêÜ óå êÜèå óýóôçìá áñ÷åßùí áíÜëïãá ìå ôéò
áíÜãêåò áðïèÞêåõóçò äåäïìÝíùí. ¸÷åé åðßóçò ó÷åäéáóôåß ãéá ôç ìÝãéóôç
áêåñáéüôçôá äåäïìÝíùí êáé õðïóôçñßæåé óôéãìéüôõðá (snapshots) äåäïìÝíùí,
ðïëëáðëÜ áíôßãñáöá êáé áèñïßóìáôá åëÝã÷ïõ äåäïìÝíùí (checksums). ¸÷åé
áêüìá ðñïóôåèåß Ýíá íÝï ìïíôÝëï ãéá ôç äéáôÞñçóç áíôéãñÜöùí ôùí
äåäïìÝíùí, ãíùóôü ùò <acronym>RAID</acronym>-Z. Ôï ìïíôÝëï
<acronym>RAID</acronym>-Z åßíáé ðáñüìïéï ìå ôï
<acronym>RAID</acronym>5 áëëÜ åßíáé ó÷åäéáóìÝíï íá ðáñÝ÷åé ðñïóôáóßá
ôùí äåäïìÝíùí êáôÜ ôçí åããñáöÞ ôïõò.</para>
<sect2>
<title>Âåëôéóôïðïßçóç ôïõ ZFS</title>
<para>Ôï õðïóýóôçìá <acronym>ZFS</acronym> ÷ñçóéìïðïéåß áñêåôïýò ðüñïõò
ôïõ óõóôÞìáôïò. Âåëôéóôïðïéþíôáò ôéò ñõèìßóåéò ôïõ óõóôÞìáôïò óáò, èá
åðéôý÷åôå ôç ìÝãéóôç áðüäïóç óôçí êáèçìåñéíÞ ÷ñÞóç. Êáèþò ôï
<acronym>ZFS</acronym> åßíáé áêüìá óå ðåéñáìáôéêü óôÜäéï óôï &os;,
áõôü ßóùò áëëÜîåé ìåëëïíôéêÜ. Ùóôüóï, ãéá ôçí þñá, óõíßóôáôáé íá
áêïëïõèÞóåôå ôá ðáñáêÜôù âÞìáôá:</para>
<sect3>
<title>ÌíÞìç</title>
<para>Ôï óõíïëéêü ìÝãåèïò ìíÞìçò ôïõ óõóôÞìáôïò ðñÝðåé íá åßíáé
ôïõëÜ÷éóôïí Ýíá gigabyte, åíþ ôï óõíéóôþìåíï ìÝãåèïò åßíáé äýï
gigabytes Þ êáé ðåñéóóüôåñï. Óå üëá ôá ðáñáäåßãìáôá ðïõ öáßíïíôáé
åäþ, ôï óýóôçìá Ý÷åé Ýíá gigabyte ìíÞìçò êáé Ý÷ïõìå åðßóçò
âåëôéóôïðïéÞóåé ôéò ñõèìßóåéò ôïõ.</para>
<para>ÏñéóìÝíïé ÷ñÞóôåò öáßíåôáé íá ôá êáôáöÝñíïõí êáé ìå ëéãüôåñï
áðü Ýíá gigabyte ìíÞìçò, áëëÜ ìå ôÝôïéïõò ðåñéïñéóìïýò öõóéêÞò
ìíÞìçò, åßíáé áñêåôÜ ðéèáíü íá äçìéïõñãçèåß panic êÜôù áðü âáñý
öïñôßï åñãáóßáò, åîáéôßáò åîÜíôëçóçò ôçò.</para>
</sect3>
<sect3>
<title>Ñýèìéóç ôïõ ÐõñÞíá</title>
<para>Óõíßóôáôáé íá áöáéñÝóåôå ôá ðñïãñÜììáôá ïäÞãçóçò êáé ôéò
åðéëïãÝò ðïõ äåí ÷ñçóéìïðïéåßôå áðü ôï áñ÷åßï ñõèìßóåùí ôïõ
ðõñÞíá. Êáèþò ïé ðåñéóóüôåñïé ïäçãïß óõóêåõþí äéáôßèåíôáé åðßóçò
êáé óå ìïñöÞ áñèñùìÜôùí, ìðïñåßôå íá ôïõò öïñôþóåôå
÷ñçóéìïðïéþíôáò ôï áñ÷åßï
<filename>/boot/loader.conf</filename>.</para>
<para>Ïé ÷ñÞóôåò ôçò áñ÷éôåêôïíéêÞò &i386; èá ðñÝðåé íá ðñïóèÝóïõí ôçí
ðáñáêÜôù åðéëïãÞ óôï áñ÷åßï ñõèìßóåùí ôïõ ðõñÞíá ôïõò, íá ôïí
åðáíáìåôáãëùôôßóïõí êáé íá åðáíåêêéíÞóïõí ôï óýóôçìá ôïõò:</para>
<programlisting>options KVA_PAGES=512</programlisting>
<para>Ç åðéëïãÞ áõôÞ èá äéåõñýíåé ôçí ðåñéï÷Þ äéåõèýíóåùí ôïõ ðõñÞíá,
åðéôñÝðïíôáò Ýôóé ôçí áýîçóç ôéìÞò ôçò ñõèìéóôéêÞò ìåôáâëçôÞò
<varname>vm.kvm_size</varname> ðÝñá áðü ôï ôñÝ÷ïí üñéï ôïõ
1 GB (2 GB ãéá ðõñÞíåò <acronym>PAE</acronym>). Ãéá íá
âñåßôå ôçí êáôáëëçëüôåñç ôéìÞ ãéá áõôÞ ôçí åðéëïãÞ, äéáéñÝóôå ôï
åðéèõìçôü ìÝãåèïò ôçò ðåñéï÷Þò äéåõèýíóåùí ìå ôï ôÝóóåñá (4). Óôçí
ðåñßðôùóç áõôÞ, Ý÷ïõìå <literal>512</literal> ãéá ìÝãåèïò
2 GB.</para>
</sect3>
<sect3>
<title>Ñõèìßóåéò óôéò ÌåôáâëçôÝò ôïõ Loader</title>
<para>Èá ðñÝðåé íá áõîçèåß ç ðåñéï÷Þ äéåõèýíóåùí
<devicename>kmem</devicename> óå üëåò ôéò áñ÷éôåêôïíéêÝò ôïõ &os;.
Óôï äïêéìáóôéêü ìáò óýóôçìá, ìå Ýíá gigabyte öõóéêÞò ìíÞìçò,
åß÷áìå åðéôõ÷çìÝíï áðïôÝëåóìá ÷ñçóéìïðïéþíôáò ôéò áêüëïõèåò
åðéëïãÝò óôï áñ÷åßï <filename>/boot/loader.conf</filename> êáé
åðáíåêêéíþíôáò ôï óýóôçìá ìáò:</para>
<programlisting>vm.kmem_size="330M"
vm.kmem_size_max="330M"
vfs.zfs.arc_max="40M"
vfs.zfs.vdev.cache.size="5M"</programlisting>
<para>Ãéá áíáëõôéêüôåñåò ñõèìßóåéò ó÷åôéêÜ ìå ôçí âåëôéóôïðïßçóç ôïõ
ZFS, äåßôå ôï <ulink
url="http://wiki.freebsd.org/ZFSTuningGuide"></ulink>.</para>
</sect3>
</sect2>
<sect2>
<title>×ñçóéìïðïéþíôáò ôï <acronym>ZFS</acronym></title>
<para>ÕðÜñ÷åé Ýíáò ìç÷áíéóìüò åêêßíçóçò ðïõ åðéôñÝðåé óôï &os; íá
ðñïóáñôÞóåé <acronym>ZFS</acronym> pools êáôÜ ôç äéÜñêåéá ôçò
åêêßíçóçò ôïõ óõóôÞìáôïò. Ãéá íá ôïí ñõèìßóåôå, åêôåëÝóôå ôéò
áêüëïõèåò åíôïëÝò:</para>
<screen>&prompt.root; <userinput>echo 'zfs_enable="YES"' >> /etc/rc.conf</userinput>
&prompt.root; <userinput>/etc/rc.d/zfs start</userinput></screen>
<para>Ôï õðüëïéðï áõôïý ôïõ êåéìÝíïõ õðïèÝôåé üôé Ý÷åôå äéáèÝóéìïõò
ôñåéò <acronym>SCSI</acronym> äßóêïõò, êáé üôé ôá ïíüìáôá óõóêåõþí
ôïõò åßíáé <devicename><replaceable>da0</replaceable></devicename>,
<devicename><replaceable>da1</replaceable></devicename> êáé
<devicename><replaceable>da2</replaceable></devicename>.
¼óïé äéáèÝôïõí äßóêïõò <acronym>IDE</acronym> èá
ðñÝðåé íá ÷ñçóéìïðïéÞóïõí óõóêåõÝò ôïõ ôýðïõ
<devicename><replaceable>ad</replaceable></devicename>
áíôß ãéá ôéò áíôßóôïé÷åò <acronym>SCSI</acronym>.</para>
<sect3>
<title>Pool ìå ¸íá Ìüíï Äßóêï</title>
<para>Ãéá ôçí äçìéïõñãßá åíüò <acronym>ZFS</acronym> pool ìå Ýíá
ìüíï äßóêï (÷ùñßò äõíáôüôçôá áíï÷Þò óöáëìÜôùí), ÷ñçóéìïðïéÞóôå ôçí
åíôïëÞ <command>zpool</command>:</para>
<screen>&prompt.root; <userinput>zpool create example /dev/da0</userinput></screen>
<para>Ãéá íá äåßôå ôï íÝï pool, åîåôÜóôå ôçí Ýîïäï ôçò åíôïëÞò
<command>df</command>:</para>
<screen>&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235230 1628718 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032846 48737598 2% /usr
example 17547136 0 17547136 0% /example</screen>
<para>Ç Ýîïäïò áõôÞ äåß÷íåé êáèáñÜ üôé ôï <literal>example</literal>
pool ü÷é ìüíï Ý÷åé äçìéïõñãçèåß, áëëÜ Ý÷åé åðßóçò
<emphasis>ðñïóáñôçèåß</emphasis> êéüëáò. Åßíáé åðßóçò äéáèÝóéìï ùò
êáíïíéêü óýóôçìá áñ÷åßùí, ìðïñåßôå íá äçìéïõñãÞóåôå áñ÷åßá óå áõôü,
êáé Üëëïé ÷ñÞóôåò ìðïñïýí åðßóçò íá ôï äïõí, üðùò öáßíåôáé óôï
ðáñáêÜôù ðáñÜäåéãìá:</para>
<screen>&prompt.root <userinput>cd /example</userinput>
&prompt.root; <userinput>ls</userinput>
&prompt.root; <userinput>touch testfile</userinput>
&prompt.root; <userinput>ls -al</userinput>
total 4
drwxr-xr-x 2 root wheel 3 Aug 29 23:15 .
drwxr-xr-x 21 root wheel 512 Aug 29 23:12 ..
-rw-r--r-- 1 root wheel 0 Aug 29 23:15 testfile</screen>
<para>Äõóôõ÷þò áõôü ôï pool äåí ÷ñçóéìïðïéåß êÜðïéï áðü ôá
ðëåïíåêôÞìáôá ôïõ <acronym>ZFS</acronym>. ÄçìéïõñãÞóôå Ýíá óýóôçìá
áñ÷åßùí óå áõôü ôï pool êáé åíåñãïðïéÞóôå óå áõôü ôç
óõìðßåóç:</para>
<screen>&prompt.root; <userinput>zfs create example/compressed</userinput>
&prompt.root; <userinput>zfs set compression=gzip example/compressed</userinput></screen>
<para>Ôï óýóôçìá áñ÷åßùí <literal>example/compressed</literal>
åßíáé ðëÝïí Ýíá óõìðéåóìÝíï <acronym>ZFS</acronym> óýóôçìá.
ÄïêéìÜóôå íá áíôéãñÜøåôå ìåñéêÜ ìåãÜëá áñ÷åßá óå áõôü, áðåõèåßáò
óôïí êáôÜëïãï
<filename class="directory">/example/compressed</filename>.</para>
<para>Ìðïñåßôå ôþñá íá áðåíåñãïðïéÞóåôå ôç óõìðßåóç ãñÜöïíôáò:</para>
<screen>&prompt.root; <userinput>zfs set compression=off example/compressed</userinput></screen>
<para>Ãéá íá áðïðñïóáñôÞóåôå ôï óýóôçìá áñ÷åßùí, åêôåëÝóôå ôçí
áêüëïõèç åíôïëÞ êáé åðáëçèåýóôå ôï áðïôÝëåóìá ìÝóù ôïõ âïçèçôéêïý
ðñïãñÜììáôïò <command>df</command>:</para>
<screen>&prompt.root; <userinput>zfs umount example/compressed</userinput>
&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235232 1628716 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /example</screen>
<para>ÐñïóáñôÞóôå îáíÜ ôï óýóôçìá áñ÷åßùí, þóôå íá åßíáé êáé ðÜëé
ðñïóâÜóéìï, êáé åðáëçèåýóôå ôï ÷ñçóéìïðïéþíôáò üðùò êáé ðñéí, ôçí
åíôïëÞ <command>df</command>:</para>
<screen>&prompt.root; <userinput>zfs mount example/compressed</userinput>
&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235234 1628714 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /example
example/compressed 17547008 0 17547008 0% /example/compressed</screen>
<para>Ìðïñåßôå åðßóçò íá äåßôå ôï pool êáé ôï óýóôçìá áñ÷åßùí
åîåôÜæïíôáò ôçí Ýîïäï ôçò åíôïëÞò <command>mount</command>:</para>
<screen>&prompt.root; <userinput>mount</userinput>
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1d on /usr (ufs, local, soft-updates)
example on /example (zfs, local)
example/data on /example/data (zfs, local)
example/compressed on /example/compressed (zfs, local)</screen>
<para>¼ðùò ðáñáôçñïýìå, ôï óýóôçìá áñ÷åßùí <acronym>ZFS</acronym>
ìðïñåß íá ÷ñçóéìïðïéçèåß ùò êïéíü óýóôçìá áñ÷åßùí ìåôÜ ôç
äçìéïõñãßá ôïõ. Ùóôüóï, äéáèÝôåé ðïëëÝò áêüìá ëåéôïõñãßåò. Óôï
ðáñáêÜôù ðáñÜäåéãìá äçìéïõñãïýìå Ýíá íÝï óýóôçìá áñ÷åßùí, ôï
<literal>data</literal>. èá áðïèçêåýóïõìå óçìáíôéêÜ äåäïìÝíá óå
áõôü, êáé Ýôóé ôï ñõèìßæïõìå þóôå íá êñáôÜåé äýï áíôßãñáöá áðü
êÜèå ìðëïê äåäïìÝíùí:</para>
<screen>&prompt.root; <userinput>zfs create example/data</userinput>
&prompt.root; <userinput>zfs set copies=2 example/data</userinput></screen>
<para>Ìðïñïýìå ôþñá íá äïýìå ôá äåäïìÝíá êáé ôçí êáôáíÜëùóç ÷þñïõ
äßíïíôáò îáíÜ ôçí åíôïëÞ <command>df</command>:</para>
<screen>&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235234 1628714 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /example
example/compressed 17547008 0 17547008 0% /example/compressed
example/data 17547008 0 17547008 0% /example/data</screen>
<para>ÐáñáôçñÞóôå üôé êÜèå óýóôçìá áñ÷åßùí óôï pool äåß÷íåé ôï ßäéï
ìÝãåèïò äéáèÝóéìïõ ÷þñïõ. Áõôüò åßíáé êáé ï ëüãïò ðïõ
÷ñçóéìïðïéïýìå ôçí åíôïëÞ <command>df</command> óå üëá ôá
ðáñáäåßãìáôá, ãéá íá äåßîïõìå üôé ôá óõóôÞìáôá áñ÷åßùí
÷ñçóéìïðïéïýí ìüíï ôï ÷þñï ðïõ ÷ñåéÜæïíôáé êáé üôé üëá ìïéñÜæïíôáé
ôïí ßäéï ÷þñï (ôï êïéíü÷ñçóôï áðüèåìá — pool). Óôï óýóôçìá
áñ÷åßùí <acronym>ZFS</acronym> Ýííïéåò üðùò ïé ôüìïé (volumes) êáé
ïé êáôáôìÞóåéò (partitions) äåí Ý÷ïõí íüçìá. Áíôßèåôá, ðïëëÜ
óõóôÞìáôá áñ÷åßùí ìïéñÜæïíôáé ôïí ßäéï ÷þñï, ôï pool. Ìðïñåßôå íá
êáôáñãÞóåôå ôï óýóôçìá áñ÷åßùí êáé êáôüðéí ôï ßäéï ôï pool üôáí
äåí ôá ÷ñåéÜæåóôå ðëÝïí:</para>
<screen>&prompt.root; <userinput>zfs destroy example/compressed</userinput>
&prompt.root; <userinput>zfs destroy example/data</userinput>
&prompt.root; <userinput>zpool destroy example</userinput></screen>
<para>Ïé óêëçñïß äßóêïé ìå ôïí êáéñü ÷áëÜíå, åßíáé áíáðüöåõêôï.
¼ôáí Ýíáò äßóêïò ÷áëÜóåé, ôá äåäïìÝíá ôïõ ÷Üíïíôáé. Ìéá ìÝèïäïò
ãéá íá áðïöýãïõìå ôçí áðþëåéá äåäïìÝíùí åîáéôßáò åíüò ÷áëáóìÝíïõ
äßóêïõ åßíáé íá äçìéïõñãÞóïõìå ìéá óõóôïé÷ßá
<acronym>RAID</acronym>. Ôá pools ôïõ <acronym>ZFS</acronym> Ý÷ïõí
ó÷åäéáóèåß þóôå íá õðïóôçñßæïõí áõôü ôï ÷áñáêôçñéóôéêü.
Ç ëåéôïõñãßá áõôÞ áíáëýåôáé óôçí åðüìåíç åíüôçôá.</para>
</sect3>
<sect3>
<title><acronym>ZFS</acronym> RAID-Z</title>
<para>¼ðùò áíáöÝñáìå ðñïçãïõìÝíùò, ç åíüôçôá áõôÞ ðñïûðïèÝôåé üôé
÷ñçóéìïðïéïýìå ôñåéò óõóêåõÝò
<acronym>SCSI</acronym> ìå ïíüìáôá óõóêåõþí
<devicename>da0</devicename>, <devicename>da1</devicename> êáé
<devicename>da2</devicename>. Ãéá íá äçìéïõñãÞóïõìå Ýíá pool ôýðïõ
<acronym>RAID</acronym>-Z, åêôåëïýìå ôçí áêüëïõèç åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zpool create storage raidz da0 da1 da2</userinput></screen>
<note>
<para>Ç &sun; óõíéóôÜ íá ÷ñçóéìïðïéïýíôáé áðü ôñåéò ùò åííéÜ
óõóêåõÝò óå óõóôïé÷ßåò ôýðïõ <acronym>RAID</acronym>-Z.
Áí ÷ñåéÜæåôáé íá äçìéïõñãÞóåôå Ýíá pool ìå ðåñéóóüôåñïõò áðü
äÝêá äßóêïõò, åßíáé ðñïôéìüôåñï íá ôï ÷ùñßóåôå óå ïìÜäåò áðü
ìéêñüôåñá <acronym>RAID</acronym>-Z pools. Áí äéáèÝôåôå ìüíï
äýï äßóêïõò áëëÜ ÷ñåéÜæåóôå ôçí äõíáôüôçôá áíï÷Þò óöáëìÜôùí,
ßóùò åßíáé êáëýôåñï íá ÷ñçóéìïðïéÞóåôå Ýíá
<acronym>ZFS</acronym> mirror. Äåßôå ôç óåëßäá manual ôïõ
&man.zpool.8; ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò.</para>
</note>
<para>Èá äçìéïõñãçèåß ôï <literal>storage</literal> zpool. Ìðïñåßôå
íá åðáëçèåýóåôå ôï áðïôÝëåóìá ÷ñçóéìïðïéþíôáò, üðùò êáé
ðñïçãïõìÝíùò, ôéò åíôïëÝò &man.mount.8; êáé &man.df.1;. Èá
ìðïñïýóáìå íá ÷ñçóéìïðïéÞóïõìå ðåñéóóüôåñïõò äßóêïõò, ðñïóèÝôïíôáò
ôá ïíüìáôá óõóêåõþí ôïõò óôï ôÝëïò ôçò ðáñáðÜíù ëßóôáò.
ÄçìéïõñãÞóôå Ýíá íÝï óýóôçìá áñ÷åßùí óôï pool, ôï ïðïßï èá
ïíïìÜæåôáé <literal>home</literal> êáé üðïõ èá áðïèçêåýïíôáé ôåëéêÜ
ôá áñ÷åßá ôùí ÷ñçóôþí:</para>
<screen>&prompt.root; <userinput>zfs create storage/home</userinput></screen>
<para>Ìðïñïýìå ôþñá íá åíåñãïðïéÞóïõìå ôçí óõìðßåóç êáé íá êñáôÜìå
åðéðëÝïí áíôßãñáöá ôùí êáôáëüãùí êáé ôùí äåäïìÝíùí ôùí ÷ñçóôþí.
¼ðùò êáé ðñïçãïõìÝíùò, ìðïñïýìå íá ôï åðéôý÷ïõìå ÷ñçóéìïðïéþíôáò
ôéò ðáñáêÜôù åíôïëÝò:</para>
<screen>&prompt.root; <userinput>zfs set copies=2 storage/home</userinput>
&prompt.root; <userinput>zfs set compression=gzip storage/home</userinput></screen>
<para>Ãéá íá ãßíåé áõôüò ï íÝïò êáôÜëïãïò ôùí ÷ñçóôþí, áíôéãñÜøôå ôá
äåäïìÝíá ôïõò óå áõôüí êáé äçìéïõñãÞóôå ôïõò êáôÜëëçëïõò
óõìâïëéêïýò äåóìïýò:</para>
<screen>&prompt.root; <userinput>cp -rp /home/* /storage/home</userinput>
&prompt.root; <userinput>rm -rf /home /usr/home</userinput>
&prompt.root; <userinput>ln -s /storage/home /home</userinput>
&prompt.root; <userinput>ln -s /storage/home /usr/home</userinput></screen>
<para>Ôá äåäïìÝíá ôùí ÷ñçóôþí èá áðïèçêåýïíôáé ôþñá óôï íÝï óýóôçìá
áñ÷åßùí <filename class="directory">/storage/home</filename>.
Ãéá íá ôï åðáëçèåýóåôå, äçìéïõñãÞóôå Ýíá íÝï ÷ñÞóôç êáé åéóÝëèåôå
óôï óýóôçìá ìå ôï íÝï ëïãáñéáóìü.</para>
<para>ÄïêéìÜóôå íá äçìéïõñãÞóåôå Ýíá óôéãìéüôõðï (snapshot) óôï
ïðïßï èá ìðïñåßôå íá åðáíÝëèåôå áñãüôåñá:</para>
<screen>&prompt.root; <userinput>zfs snapshot storage/home@08-30-08</userinput></screen>
<para>Óçìåéþóôå üôé ç åðéëïãÞ äçìéïõñãßáò óôéãìéüôõðïõ ëåéôïõñãåß
ìüíï óå ðñáãìáôéêü óýóôçìá áñ÷åßùí, êáé ü÷é óå êÜðïéï ìåìïíùìÝíï
êáôÜëïãï Þ áñ÷åßï. Ï ÷áñáêôÞñáò <literal>@</literal>
÷ñçóéìïðïéåßôáé ùò äéá÷ùñéóôéêü ìåôáîý ôïõ óõóôÞìáôïò áñ÷åßùí êáé
ôïõ ïíüìáôïò ôüìïõ. Áí êáôáóôñáöåß ï êáôÜëïãïò äåäïìÝíùí êÜðïéïõ
÷ñÞóôç áðïêáôáóôÞóôå ôïí ìå ôçí åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zfs rollback storage/home@08-30-08</userinput></screen>
<para>Ãéá íá äåßôå ìéá ëßóôá ôùí äéáèÝóéìùí óôéãìéüôõðùí, åêôåëÝóôå
ôçí åíôïëÞ <command>ls</command> óôïí êáôÜëïãï
<filename class="directory">.zfs/snapshot</filename> ôïõ óõóôÞìáôïò
áñ÷åßùí. Ãéá ðáñÜäåéãìá, ãéá íá äåßôå ôï óôéãìéüôõðï ðïõ
äçìéïõñãÞóáìå ðñïçãïõìÝíùò, åêôåëÝóôå ôçí ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>ls /storage/home/.zfs/snapshot</userinput></screen>
<para>Åßíáé äõíáôüí íá ãñÜøåôå êÜðïéï script ðïõ íá äçìéïõñãåß
ìçíéáßá óôéãìéüôõðá ôùí äåäïìÝíùí ôùí ÷ñçóôþí. Ùóôüóï, ìå ôçí
ðÜñïäï ôïõ ÷ñüíïõ, ôá óôéãìéüôõðá èá êáôáíáëþóïõí ìåãÜëï ðïóïóôü
ôïõ ÷þñïõ óôï äßóêï. Ìðïñåßôå íá äéáãñÜøåôå ôï ðñïçãïýìåíï
óôéãìéüôõðï ÷ñçóéìïðïéþíôáò ôçí ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zfs destroy storage/home@08-30-08</userinput></screen>
<para>Äåí õðÜñ÷åé ëüãïò, ìåôÜ áðü üëåò áõôÝò ôéò äïêéìÝò, íá
êñáôÞóïõìå ôï <filename class="directory">/storage/home</filename>
óôçí ðáñïýóá êáôÜóôáóç ôïõ. ÌåôáôñÝøôå ôï óôï ðñáãìáôéêü óýóôçìá
áñ÷åßùí <filename class="directory">/home</filename>:</para>
<screen>&prompt.root; <userinput>zfs set mountpoint=/home storage/home</userinput></screen>
<para>×ñçóéìïðïéþíôáò ôéò åíôïëÝò <command>df</command> êáé
<command>mount</command> èá äïýìå üôé ôï óýóôçìá ÷åéñßæåôáé ðëÝïí
áõôü ôï óýóôçìá áñ÷åßùí ùò ôï ðñáãìáôéêü
<filename class="directory">/home</filename>:</para>
<screen>&prompt.root; <userinput>mount</userinput>
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1d on /usr (ufs, local, soft-updates)
storage on /storage (zfs, local)
storage/home on /home (zfs, local)
&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 2026030 235240 1628708 13% /
devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032826 48737618 2% /usr
storage 26320512 0 26320512 0% /storage
storage/home 26320512 0 26320512 0% /home</screen>
<para>Åäþ ïëïêëçñþíåôáé ç ñýèìéóç ôïõ <acronym>RAID</acronym>-Z.
Ãéá íá äÝ÷åóôå áíáöïñÝò êáôÜóôáóçò ó÷åôéêÜ ìå ôá óõóôÞìáôá
áñ÷åßùí êáôÜ ôç íõêôåñéíÞ åêôÝëåóç ôïõ &man.periodic.8;, äþóôå ôçí
ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.conf</userinput></screen>
</sect3>
<sect3>
<title>ÁíÜêôçóç ôïõ <acronym>RAID</acronym>-Z</title>
<para>ÊÜèå ëïãéóìéêü <acronym>RAID</acronym> Ý÷åé ìéá ìÝèïäï ãéá
åðßâëåøç ôçò êáôÜóôáóÞò ôïõ, êáé ôï <acronym>ZFS</acronym> äåí
áðïôåëåß åîáßñåóç. Ìðïñåßôå íá äåßôå ôçí êáôÜóôáóç ôùí óõóêåõþí
ôïõ <acronym>RAID</acronym>-Z ÷ñçóéìïðïéþíôáò ôçí áêüëïõèç
åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zpool status -x</userinput></screen>
<para>Áí üëá ôá pools åßíáé óå õãéÞ êáôÜóôáóç, èá ðÜñåôå ôï áêüëïõèï
ìÞíõìá:</para>
<screen>all pools are healthy</screen>
<para>Áí õðÜñ÷åé êÜðïéï ðñüâëçìá, ð.÷. êÜðïéïò äßóêïò Ý÷åé âãåé
åêôüò ëåéôïõñãßáò, èá äåßôå ôçí ðåñéãñáöÞ ôçò êáôÜóôáóçò óå
Ýíá ìÞíõìá üðùò ôï ðáñáêÜôù:</para>
<screen> pool: storage
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
storage DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
da0 ONLINE 0 0 0
da1 OFFLINE 0 0 0
da2 ONLINE 0 0 0
errors: No known data errors</screen>
<para>Ôï ðáñáðÜíù äåß÷íåé üôé ç óõóêåõÞ ôÝèçêå åêôüò ëåéôïõñãßáò
áðü ôïí äéá÷åéñéóôÞ. Áõôü åßíáé áëÞèåéá ãéá ôï óõãêåêñéìÝíï
ðáñÜäåéãìá. Ãéá íá ôåèåß ï äßóêïò åêôüò, ÷ñçóéìïðïéÞèçêå ç
ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zpool offline storage da1</userinput></screen>
<para>Ìðïñïýìå ôþñá íá áíôéêáôáóôÞóïõìå ôï äßóêï
<devicename>da1</devicename> ìåôÜ ôçí áðåíåñãïðïßçóç ôïõ
óõóôÞìáôïò. ¼ôáí ôï óýóôçìá åðáíÝëèåé óå ëåéôïõñãßá, ìðïñïýìå íá
÷ñçóéìïðïéÞóïõìå ôçí áêüëïõèç åíôïëÞ ãéá íá åíçìåñþóïõìå ôï
óýóôçìá ãéá ôçí áíôéêáôÜóôáóç ôïõ äßóêïõ:</para>
<screen>&prompt.root; <userinput>zpool replace storage da1</userinput></screen>
<para>Áðü åäþ, ìðïñïýìå íá åëÝãîïõìå îáíÜ ôçí êáôÜóôáóç, áõôÞ ôç
öïñÜ ÷ùñßò ôçí åðéëïãÞ <option>-x</option>:</para>
<screen>&prompt.root; <userinput>zpool status storage</userinput>
pool: storage
state: ONLINE
scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da0 ONLINE 0 0 0
da1 ONLINE 0 0 0
da2 ONLINE 0 0 0
errors: No known data errors</screen>
<para>¼ðùò öáßíåôáé óôï ðáñÜäåéãìá, ôá ðÜíôá öáßíåôáé íá ëåéôïõñãïýí
öõóéïëïãéêÜ.</para>
</sect3>
<sect3>
<title>ÅðáëÞèåõóç ÄåäïìÝíùí</title>
<para>¼ðùò áíáöÝñáìå ðñïçãïõìÝíùò, ôï <acronym>ZFS</acronym>
÷ñçóéìïðïéåß <literal>checksums</literal> (áèñïßóìáôá åëÝã÷ïõ) ãéá
íá åðáëçèåýóåé ôçí áêåñáéüôçôá ôùí áðïèçêåõìÝíùí äåäïìÝíùí.
Ôá áèñïßóìáôá åëÝã÷ïõ åíåñãïðïéïýíôáé áõôüìáôá êáôÜ ôçí äçìéïõñãßá
ôùí óõóôçìÜôùí áñ÷åßùí, êáé ìðïñïýí íá áðåíåñãïðïéçèïýí ìÝóù ôçò
åðüìåíçò åíôïëÞò:</para>
<screen>&prompt.root; <userinput>zfs set checksum=off storage/home</userinput></screen>
<para>Áõôü äåí åßíáé ãåíéêÜ êáëÞ éäÝá, êáèþò ôá checksums
êáôáëáìâÜíïõí åëÜ÷éóôï áðïèçêåõôéêü ÷þñï, êáé åßíáé ðïëý ðéï
÷ñÞóéìï íá ôá Ý÷ïõìå åíåñãïðïéçìÝíá. Åðßóçò äåí öáßíåôáé íá
ðñïêáëïýí êÜðïéá óçìáíôéêÞ êáèõóôÝñçóç Þ åðéâÜñõíóç. Ìå ôá
checksums åíåñãïðïéçìÝíá, ìðïñïýìå íá æçôÞóïõìå áðü ôï
<acronym>ZFS</acronym> íá åëÝãîåé ôçí áêåñáéüôçôá ôùí äåäïìÝíùí
÷ñçóéìïðïéþíôáò ôá ãéá åðáëÞèåõóç. Ç äéáäéêáóßá áõôÞ åßíáé
ãíùóôÞ ùò <quote>scrubbing.</quote> Ãéá íá åëÝãîåôå ôçí
áêåñáéüôçôá äåäïìÝíùí ôïõ pool <literal>storage</literal>,
÷ñçóéìïðïéÞóôå ôçí ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zpool scrub storage</userinput></screen>
<para>Ç äéáäéêáóßá áõôÞ ìðïñåß íá ðÜñåé áñêåôÞ þñá, áíÜëïãá ìå ôçí
ðïóüôçôá ôùí áðïèçêåõìÝíùí äåäïìÝíùí. Åðßóçò ÷ñçóéìïðïéåß ðÜñá
ðïëý ôï äßóêï (<acronym>I/O</acronym>), ôüóï þóôå óå êÜèå
äåäïìÝíç óôéãìÞ ìðïñåß íá åêôåëåßôáé ìüíï ìéá ôÝôïéá äéáäéêáóßá.
ÌåôÜ ôçí ïëïêëÞñùóç ôïõ scrub, èá áíáíåùèåß êáé ç áíáöïñÜ
êáôÜóôáóçò, ôçí ïðïßá ìðïñåßôå íá äåßôå æçôþíôáò ôçí ìå ôçí
ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zpool status storage</userinput>
pool: storage
state: ONLINE
scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da0 ONLINE 0 0 0
da1 ONLINE 0 0 0
da2 ONLINE 0 0 0
errors: No known data errors</screen>
<para>Óôï ðáñÜäåéãìá ìáò åìöáíßæåôáé êáé ç ÷ñïíéêÞ óôéãìÞ ðïõ
ïëïêëçñþèçêå ç åíôïëÞ scrub. Ç äõíáôüôçôá áõôÞ ìáò åîáóöáëßæåé
áêåñáéüôçôá äåäïìÝíùí óå ìåãÜëï âÜèïò ÷ñüíïõ.</para>
<para>ÕðÜñ÷ïõí ðïëëÝò áêüìá åðéëïãÝò ãéá ôï óýóôçìá áñ÷åßùí Æ. Äåßôå
ôéò óåëßäåò manual &man.zfs.8; êáé &man.zpool.8;.</para>
</sect3>
<sect3>
<title>ZFS Quotas</title>
<para>Ôï ZFS õðïóôçñßæåé äéáöïñåôéêïýò ôýðïõò quota: ôï refquota,
ôï ãåíéêü quota, ôï quota ÷ñÞóôç êáé ôï quota ïìÜäáò. Óôçí åíüôçôá
áõôÞ èá åîçãÞóïõìå ôéò âáóéêÝò Ýííïéåò êÜèå ôýðïõ êáé èá äþóïõìå
êÜðïéåò ïäçãßåò ÷ñÞóçò.</para>
<para>Ôá quotas ÷ñçóéìïðïéïýíôáé ãéá íá ðåñéïñßóïõí ôï ÷þñï óôï äßóêï
ðïõ ìðïñåß íá êáôáíáëùèåß áðü Ýíá dataset êáé ôïõò áðïãüíïõò ôïõ
(descendants) ôïõ êáèþò êáé ãéá íá èÝóïõí ðåñéïñéóìïýò óôï ÷þñï ðïõ
ìðïñåß íá êáôáëÜâåé Ýíá óôéãìéüôõðï (snapshot). Óå üñïõò ÷ñÞóôç,
ôá quotas åßíáé ÷ñÞóéìá ãéá ôïí ðåñéïñéóìü ôïõ ÷þñïõ äßóêïõ ðïõ
ìðïñåß íá Ý÷åé óôç äéÜèåóç ôïõ êÜðïéïò ÷ñÞóôçò.</para>
<note>
<para>Äåí ìðïñåßôå íá ïñßóåôå quotas óå ôüìïõò (volumes) êáèþò
áõôü ïõóéáóôéêÜ ãßíåôáé Þäç áðü ôçí éäéüôçôá
<literal>volsize</literal>.</para>
</note>
<para>Ôï refquota,
<literal>refquota=<replaceable>size</replaceable></literal>,
ðåñéïñßæåé ôï ÷þñï ðïõ ìðïñåß íá êáôáíáëþóåé Ýíá dataset
èÝôïíôáò Ýíá áðüëõôï üñéï ÷þñïõ (hard limit). Ùóôüóï, áõôü
ôï áðüëõôï üñéï äåí ðåñéëáìâÜíåé ôï ÷þñï ðïõ ÷ñçóéìïðïéåßôáé
áðü ôïõò áðïãüíïõò ôïõ dataset üðùò ôá óõóôÞìáôá áñ÷åßùí Þ
ôá óôéãìéüôõðá.</para>
<para>Ãéá íá åðéâÜëåôå ãåíéêü quota 10 GB ãéá ôï
<filename>storage/home/bob</filename>, ÷ñçóéìïðïéÞóôå ôçí
ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zfs set quota=10G storage/home/bob</userinput></screen>
<para>Ôá quotas ÷ñÞóôç ðåñéïñßæïõí ôçí ðïóüôçôá ÷þñïõ ðïõ ìðïñåß íá
÷ñçóéìïðïéÞóåé Ýíáò óõãêåêñéìÝíïò ÷ñÞóôçò. Ç ãåíéêÞ ìïñöÞ åßíáé
<literal>userquota@<replaceable>user</replaceable>=<replaceable>size</replaceable></literal>,
êáé ôï üíïìá ôïõ ÷ñÞóôç ðñÝðåé íá äßíåôáé óå ìéá áðü ôéò ðáñáêÜôù
ìïñöÝò:</para>
<itemizedlist>
<listitem>
<para>ÌïñöÞ óõìâáôÞ ìå ôï <acronym
role="Portable Operating System Interface">POSIX</acronym>,
ãéá ðáñÜäåéãìá <replaceable>joe</replaceable>.</para>
</listitem>
<listitem>
<para>ÌïñöÞ óõìâáôÞ ìå ôï áñéèìçôéêü áíáãíùñéóôéêü (ÉD) ôïõ
<acronym role="Portable Operating System Interface">POSIX</acronym>,
ãéá ðáñÜäåéãìá <replaceable>789</replaceable>.</para>
</listitem>
<listitem>
<para>ÌïñöÞ ïíüìáôïò <acronym
role="System Identifier">SID</acronym>, ãéá ðáñÜäåéãìá
<replaceable>joe.bloggs@example.com</replaceable>.</para>
</listitem>
<listitem>
<para>ÌïñöÞ áñéèìçôéêïý áíáãíùñéóôéêïý (ID) <acronym
role="System Identifier">SID</acronym>, ãéá ðáñÜäåéãìá
<replaceable>S-1-123-456-789</replaceable>.</para>
</listitem>
</itemizedlist>
<para>Ãéá ðáñÜäåéãìá, ãéá íá åðéâÜëåôå quota 50 GB ãéá Ýíá
÷ñÞóôç ìå üíïìá <replaceable>joe</replaceable>, ÷ñçóéìïðïéÞóôå
ôçí ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zfs set userquota@joe=50G</userinput></screen>
<para>Ãéá íá áöáéñÝóåôå ôï quota Þ íá âåâáéùèåßôå üôé äåí Ý÷åé ôåèåß,
÷ñçóéìïðïéÞóôå ôçí åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zfs set userquota@joe=none</userinput></screen>
<para>Ïé éäéüôçôåò ôùí quota ÷ñçóôþí äåí áðåéêïíßæïíôáé ìÝóù ôçò
åíôïëÞò <command>zfs get all</command>. Ïé ÷ñÞóôåò åêôüò ôïõ
<username>root</username> ìðïñïýí íá äïõí ìüíï ôá äéêÜ ôïõò
quotas åêôüò áí ôïõò Ý÷åé áðïäïèåß ôï ðñïíüìéï
<literal>userquota</literal>. Ïé ÷ñÞóôåò ìå áõôü ôï ðñïíüìéï
ìðïñïýí íá äïõí êáé íá ñõèìßóïõí ôo quota ïðïéïõäÞðïôå
÷ñÞóôç.</para>
<para>Ôï quota ïìÜäáò ðåñéïñßæåé ôï äéáèÝóéìï ÷þñï ðïõ ìðïñåß íá
÷ñçóéìïðïéçèåß áðü ìéá óõãêåêñéìÝíç ïìÜäá ÷ñçóôþí. Ç ãåíéêÞ ìïñöÞ
åßíáé
<literal>groupquota@<replaceable>group</replaceable>=<replaceable>size</replaceable></literal>.</para>
<para>Ãéá íá èÝóåôå quota ãéá ôçí ïìÜäá ÷ñçóôþí
<replaceable>firstgroup</replaceable> ôá 50 GB, ÷ñçóéìïðïéÞóôå
ôçí ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zfs set groupquota@firstgroup=50G</userinput></screen>
<para>Ãéá íá áöáéñÝóåôå ôï quota Þ íá âåâáéùèåßôå üôé äåí Ý÷åé ôåèåß,
÷ñçóéìïðïéÞóôå ôçí åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zfs set groupquota@firstgroup=none</userinput></screen>
<para>¼ðùò êáé ìå ôçí éäéüôçôá quota ÷ñçóôþí, ïé ÷ñÞóôåò åêôüò ôïõ
<username>root</username> ìðïñïýí íá äïõí ìüíï ôá quota ðïõ
ó÷åôßæïíôáé ìå ôéò ïìÜäåò óôéò ïðïßåò áíÞêïõí. Ùóôüóï, ï ÷ñÞóôçò
<username>root</username> êáé êÜèå ÷ñÞóôçò óôïí ïðïßï Ý÷åé äïèåß
ôï ðñïíüìéï <literal>groupquota</literal> ìðïñåß íá äåé êáé íá
ñõèìßóåé ôá quota ãéá üëåò ôéò ïìÜäåò.</para>
<para>Ç õðï-åíôïëÞ <command>zfs userspace</command> áðåéêïíßæåé
ôçí ðïóüôçôá ÷þñïõ ðïõ êáôáíáëþíåé êÜèå ÷ñÞóôçò óôï óõãêåêñéìÝíï
óýóôçìá áñ÷åßùí Þ óôéãìéüôõðï êáèþò êáé ôï êáèïñéóìÝíï quota.
Ç õðï-åíôïëÞ <command>zfs groupspace</command> åêôåëåß áêñéâþò ôï
ßäéï ãéá ïìÜäåò ÷ñçóôþí. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ
ìå ôéò åðéëïãÝò åêôÝëåóçò Þ áðåéêüíéóçò áõôþí ôùí åíôïëþí, äåßôå
ôï &man.zfs.1;.</para>
<para>Ãéá íá äåéôå ôï quota ãéá ôï
<filename>storage/home/bob</filename>, áí Ý÷åôå ôá óùóôÜ ðñïíüìéá
Þ åßóôå ï <username>root</username>, ÷ñçóéìïðïéÞóôå ôçí ðáñáêÜôù
åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zfs get quota storage/home/bob</userinput></screen>
</sect3>
<sect3>
<title>ÊñáôÞóåéò ×þñïõ (reservations) óôï ZFS</title>
<para>Ôï ZFS õðïóôçñßæåé äýï ôýðïõò êñáôÞóåùí ÷þñïõ. Óå áõôÞ ôçí
åíüôçôá èá åîçãÞóïõìå ôéò âáóéêÝò Ýííïéåò êÜèå ôýðï êáé èá äþóïõìå
êÜðïéåò ïäçãßåò ÷ñÞóçò.</para>
<para>Ç éäéüôçôá <literal>reservation</literal> ìáò åðéôñÝðåé íá
äéáöõëÜîïõìå êÜðïéï åããõçìÝíï åëÜ÷éóôï ðïóü ÷þñïõ ãéá Ýíá dataset
êáé ôïõò áðïãüíïõò ôïõ. Áõôü óçìáßíåé üôé áí ôåèåß êñÜôçóç ÷þñïõ
10 GB óôï <filename>storage/home/bob</filename> êáé ï äéáèÝóéìïò
÷þñïò ôïõ äßóêïõ êáôáóôåß åëÜ÷éóôïò, èá äéáöõëá÷èïýí ôïõëÜ÷éóôïí
10 GB ÷þñïõ ãéá áõôü ôï dataset. Ç éäéüôçôá
<literal>refreservation</literal> èÝôåé Þ äåß÷íåé ôçí åëÜ÷éóôç
ðïóüôçôá ÷þñïõ ðïõ Ý÷åé êñáôçèåß ãéá Ýíá dataset ÷ùñßò ôïõò
áðïãüíïõò ôïõ (ð.÷. ôá óôéãìéüôõðá). Ãéá ðáñÜäåéãìá, ãéá íá ðÜñåôå
Ýíá óôéãìéüôõðï ôïõ <filename>storage/home/bob</filename> èá ðñÝðåé
íá Ý÷åôå åðáñêÞ ÷þñï åêôüò ôçò ðïóüôçôáò
<literal>refreservation</literal> ãéá íá åêôåëÝóåôå åðéôõ÷þò ôç
ëåéôïõñãßá. Ïé áðüãïíïé ôïõ êõñßïõ dataset äåí ðñïóìåôñþíôáé áðü
ôçí éäéüôçôá <literal>refreservation</literal> êáé äåí êáôáðáôïýí
ôïí åëåýèåñï ÷þñï ôïõ.</para>
<para>Ïé êñáôÞóåéò êÜèå ôýðïõ åßíáé ÷ñÞóéìåò óå ðïëëÝò ðåñéðôþóåéò,
ãéá ðáñÜäåéãìá óôï ó÷åäéáóìü êáé äïêéìÞ êáôáëëçëüôçôáò ôçò êáôáíïìÞò
÷þñïõ óå Ýíá íÝï óýóôçìá Þ ôçí åîáóöÜëéóç äéáèåóéìüôçôáò áñêåôïý
åëåýèåñïõ ÷þñïõ óå Ýíá óýóôçìá ãéá ëåéôïõñãßåò áíÜêôçóçò
äåäïìÝíùí (recovery).</para>
<para>Ç ãåíéêÞ ìïñöÞ ôçò éäéüôçôáò <literal>reservation</literal>
åßíáé
<literal>reservation=<replaceable>size</replaceable></literal>.
Ãéá íá èÝóåôå êñÜôçóç 10 GB óôï
<filename>storage/home/bob</filename> ÷ñçóéìïðïéÞóôå ôçí
ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zfs set reservation=10G storage/home/bob</userinput></screen>
<para>Ãéá íá áöáéñÝóåôå Ýíá reservation Þ íá âåâáéùèåßôå üôé äåí Ý÷åé
ôåèåß, åêôåëÝóôå ôçí åíôïëÞ:</para>
<screen>&prompt.root; <userinput>zfs set reservation=none storage/home/bob</userinput></screen>
<para>Ìðïñåßôå íá åöáñìüóåôå ôçí ßäéá âáóéêÞ áñ÷Þ êáé ãéá íá èÝóåôå
ôçí éäéüôçôá <literal>refreservation</literal>, ÷ñçóéìïðïéþíôáò ôç
ãåíéêÞ ìïñöÞ
<literal>refreservation=<replaceable>size</replaceable></literal>.</para>
<para>Ãéá íá åëÝãîåôå áí õðÜñ÷ïõí reservations Þ refreservations óôï
<filename>storage/home/bob</filename>, åêôåëÝóôå ìéá áðü ôéò
ðáñáêÜôù åíôïëÝò:</para>
<screen>&prompt.root; <userinput>zfs get reservation storage/home/bob</userinput>
&prompt.root; <userinput>zfs get refreservation storage/home/bob</userinput></screen>
</sect3>
</sect2>
</sect1>
<sect1 id="filesystems-linux">
<title>ÓõóôÞìáôá Áñ÷åßùí &linux;</title>
<para>ÁõôÞ ç åíüôçôá ðåñéãñÜöåé êÜðïéá áðü ôá óõóôÞìáôá áñ÷åßùí ôïõ
&linux; ðïõ õðïóôçñßæïíôáé áðü ôï &os;.</para>
<sect2>
<title>Ext2FS</title>
<para>Ç õëïðïßçóç ôïõ óõóôÞìáôïò áñ÷åßùí &man.ext2fs.5; óôïí ðõñÞíá,
ãñÜöçêå áðü ôïí Godmar Back êáé ôï ðñüãñáììá ïäÞãçóçò åìöáíßóôçêå
ãéá ðñþôç öïñÜ óôï &os; 2.2. Óôï &os; 8 êáé óôéò
ðñïçãïýìåíåò åêäüóåéò, ï êþäéêáò Þôáí õðü ôçí Üäåéá
<acronym>GNU</acronym> Public License, ùóôüóï óôï &os; 9 o
êþäéêáò ãñÜöôçêå îáíÜ êáé åßíáé ðëÝïí õðü ôçí Üäåéá
<acronym>BSD</acronym>.</para>
<para>Ôï ðñüãñáììá ïäÞãçóçò &man.ext2fs.5; åðéôñÝðåé óôïí ðõñÞíá ôïõ
&os; ôüóï íá äéáâÜæåé üóï êáé íá ãñÜöåé óå óõóôÞìáôá áñ÷åßùí
<acronym>ext2</acronym>.</para>
<para>Áñ÷éêÜ, öïñôþóôå ôï Üñèñùìá óôïí ðõñÞíá:</para>
<screen>&prompt.root; <userinput>kldload ext2fs</userinput></screen>
<para>Ãéá íá ðñïóáñôÞóåôå Ýðåéôá Ýíá ôüìï &man.ext2fs.5; ðïõ âñßóêåôáé
óôï <filename>/dev/ad1s1</filename>:</para>
<screen>&prompt.root; <userinput>mount -t ext2fs /dev/ad1s1 /mnt</userinput></screen>
</sect2>
<sect2>
<title>XFS</title>
<para>Ôï óýóôçìá áñ÷åßùí ×, <acronym>XFS</acronym> ãñÜöôçêå áñ÷éêÜ áðü
ôçí <acronym>SGI</acronym> ãéá ôï ëåéôïõñãéêü <acronym>IRIX</acronym>
êáé ìåôáöÝñèçêå óôï &linux;. Ï ðçãáßïò êþäéêáò åßíáé äéáèÝóéìïò õðü
ôçí Üäåéá <acronym>GNU</acronym> Public License. Äåßôå
<ulink url="http://oss.sgi.com/projects/xfs">áõôÞ ôç óåëßäá</ulink>
ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. Ç ìåôáöïñÜ óôï &os; îåêßíçóå áðü ôïõò
Russel Cattelan, &a.kan; êáé &a.rodrigc;.</para>
<para>Ãéá íá öïñôþóåôå ôï <acronym>XFS</acronym> ùò Üñèñùìá óôïí
ðõñÞíá:</para>
<screen>&prompt.root; <userinput>kldload xfs</userinput></screen>
<para>Ôï ðñüãñáììá ïäÞãçóçò &man.xfs.5; åðéôñÝðåé óôïí ðõñÞíá ôïõ
&os; íá Ý÷åé ðñüóâáóç óå óõóôÞìáôá áñ÷åßùí XFS. Ùóôüóï, ôç äåäïìÝíç
óôéãìÞ, åðéôñÝðåé ðñüóâáóç ìüíï ãéá áíÜãíùóç. Ç åããñáöÞ äåí åßíáé
äõíáôÞ.</para>
<para>Ãéá íá ðñïóáñôÞóåôå Ýíá ôüìï &man.xfs.5; ðïõ âñßóêåôáé óôï
<filename>/dev/ad1s1</filename>, åêôåëÝóôå ôçí ðáñáêÜôù åíôïëÞ:</para>
<screen>&prompt.root; <userinput>mount -t xfs /dev/ad1s1 /mnt</userinput></screen>
<para>Êáëü åßíáé åðßóçò íá ãíùñßæåôå üôé ôï port <filename
role="package">sysutils/xfsprogs</filename> ðåñéÝ÷åé ôï âïçèçôéêü
ðñüãñáììá <command>mkfs.xfs</command> ôï ïðïßï åðéôñÝðåé ôç
äçìéïõñãßá óõóôçìÜôùí áñ÷åßùí <acronym>XFS</acronym>. Ôï port
åðßóçò ðáñÝ÷åé ðñïãñÜììáôá ãéá Ýëåã÷ï êáé åðéóêåõÞ áõôþí ôùí
óõóôçìÜôùí áñ÷åßùí.</para>
<para>Ìðïñåßôå íá ÷ñçóéìïðïßçóåôå ôçí ðáñÜìåôñï <literal>-p</literal>
óôçí åíôïëÞ <command>mkfs.xfs</command> ãéá íá äçìéïõñãÞóåôå Ýíá
óýóôçìá áñ÷åßùí &man.xfs.5; ôï ïðïßï íá ðåñéÝ÷åé áñ÷åßá êáé Üëëá
ìåôá-äåäïìÝíá. Må áõôü ôïí ôñüðï ìðïñåßôå íá äçìéïõñãÞóåôå Ýíá
óýóôçìá áñ÷åßùí ìüíï áíÜãíùóçò ãéá äïêéìÞ ìå ôï &os;.</para>
</sect2>
<sect2>
<title>ReiserFS</title>
<para>To óýóôçìá áñ÷åßùí Reiser, ReiserFS, ìåôáöÝñèçêå óôï &os;
áðü ôïí &a.dumbbell; êáé åßíáé õðü ôçí Üäåéá <acronym>GNU</acronym>
Public License.</para>
<para>Ôï ðñüãñáììá ïäÞãçóçò ãéá ôï ReiserFS åðéôñÝðåé óôïí ðõñÞíá ôïõ
&os; íá Ý÷åé ðñüóâáóç áíÜãíùóçò óôá áíôßóôïé÷á óõóôÞìáôá áñ÷åßùí áëëÜ
ôç äåäïìÝíç óôéãìÞ äåí åðéôñÝðåé åããñáöÞ äåäïìÝíùí.</para>
<para>Öïñôþóôå áñ÷éêÜ ôï Üñèñùìá ôïõ ðõñÞíá:</para>
<screen>&prompt.root; <userinput>kldload reiserfs</userinput></screen>
<para>Ãéá íá ðñïóáñôÞóåôå Ýíá ôüìï ReiserFS áðü ôï
<filename>/dev/ad1s1</filename>:</para>
<screen>&prompt.root; <userinput>mount -t reiserfs /dev/ad1s1 /mnt</userinput></screen>
</sect2>
</sect1>
<!--
XXXTR: stub sections (added later, as needed, as desire,
after I get opinions from -doc people):
Still need to discuss native and foreign file systems.
<sect1>
<title>Device File System</title>
</sect1>
<sect1>
<title>DOS and NTFS File Systems</title>
<para>This is a good section for those who transfer files, using
USB devices, from Windows to FreeBSD and vice-versa. My camera,
and many other cameras I have seen default to using FAT16. There
is (was?) a kde utility, I think called kamera, that could be used
to access camera devices. A section on this would be useful.</para>
<para>XXXTR: Though! The disks chapter, covers a bit of this and
devfs under it's USB devices. It leaves a lot to be desired though,
see:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/usb-disks.html
It may be better to flesh out that section a bit more. Add the
word "camera" to it so that others can easily notice.</para>
</sect1>
<sect1>
<title>Linux EXT File System</title>
<para>Probably NOT as useful as the other two, but it requires
knowledge of the existence of the tools. Which are hidden in
the ports collection. Most Linux guys would probably only use
Linux, BSD guys would be smarter and use NFS.</para>
</sect1>
<sect1>
<title>HFS</title>
<para>I think this is the file system used on Apple OSX. There are
tools in the ports collection, and with Apple being a big
FreeBSD supporter and user of our technologies, surely there
is enough cross over to cover this?</para>
</sect1>
-->
</chapter>
|