doc/el_GR.ISO8859-7/books/handbook/filesystems/chapter.sgml
Gabor Kovesdan 7ba98a21ad MFH
Approved by:	doceng (implicit)
2012-08-19 23:05:52 +00:00

929 lines
39 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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&trade;, γνωστό
επίσης και ως <acronym>UFS</acronym>. Αυτό είναι και το εγγενές
σύστημα αρχείων του &os;, το οποίο χρησιμοποιείται στους σκληρούς
δίσκους και προσφέρει πρόσβαση στα δεδομένα.</para>
<para>Το &os; προσφέρει επίσης πληθώρα διαφορετικών συστημάτων αρχείων,
ώστε να παρέχει τοπική πρόσβαση σε δεδομένα που έχουν δημιουργηθεί από
άλλα λειτουργικά συστήματα, π.χ.&nbsp;δεδομένα που βρίσκονται σε τοπικά
<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&nbsp;GB (2&nbsp;GB για πυρήνες <acronym>PAE</acronym>). Για να
βρείτε την καταλληλότερη τιμή για αυτή την επιλογή, διαιρέστε το
επιθυμητό μέγεθος της περιοχής διευθύνσεων με το τέσσερα (4). Στην
περίπτωση αυτή, έχουμε <literal>512</literal> για μέγεθος
2&nbsp;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"' &gt;&gt; /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> σε όλα τα
παραδείγματα, για να δείξουμε ότι τα συστήματα αρχείων
χρησιμοποιούν μόνο το χώρο που χρειάζονται και ότι όλα μοιράζονται
τον ίδιο χώρο (το κοινόχρηστο απόθεμα &mdash; 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"' &gt;&gt; /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&nbsp;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&nbsp;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&nbsp;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&nbsp;GB στο <filename>storage/home/bob</filename> και ο διαθέσιμος
χώρος του δίσκου καταστεί ελάχιστος, θα διαφυλαχθούν τουλάχιστον
10&nbsp;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&nbsp;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;&nbsp;2.2. Στο &os;&nbsp;8 και στις
προηγούμενες εκδόσεις, ο κώδικας ήταν υπό την άδεια
<acronym>GNU</acronym> Public License, ωστόσο στο &os;&nbsp;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>