929 lines
39 KiB
XML
929 lines
39 KiB
XML
<?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>
|