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

1027 lines
43 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: GEOM: Διαχείριση Συστοιχιών Δίσκων
The FreeBSD Greek Documentation Project
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/geom/chapter.sgml
%SRCID% 38826
-->
<chapter id="GEOM">
<chapterinfo>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>Γράφτηκε από τον </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>GEOM: Διαχείριση Συστοιχιών Δίσκων</title>
<sect1 id="GEOM-synopsis">
<title>Σύνοψη</title>
<indexterm>
<primary>GEOM</primary>
</indexterm>
<indexterm>
<primary>GEOM Disk Framework</primary>
<see>GEOM</see>
</indexterm>
<para>Το κεφάλαιο αυτό καλύπτει τη χρήση των δίσκων κάτω από το πλαίσιο
λειτουργιών GEOM στο &os;. Περιλαμβάνει τα κυριότερα προγράμματα
ελέγχου <acronym
role="Redundant Array of Inexpensive Disks">RAID</acronym>
των οποίων οι ρυθμίσεις βασίζονται στο πλαίσιο GEOM. Το κεφάλαιο αυτό
δεν αναλύει σε βάθος τον τρόπο με τον οποίο το GEOM χειρίζεται ή ελέγχει
λειτουργίες Εισόδου / Εξόδου (IO), το υποσύστημα που βρίσκεται κάτω από
αυτό, ή τον κώδικα του. Οι πληροφορίες αυτές παρέχονται από τη σελίδα
manual του &man.geom.4; καθώς και από τις αναφορές που περιέχει σε άλλες
σχετικές σελίδες. Επίσης το κεφάλαιο αυτό δεν αποτελεί καθοριστικό
οδηγό για όλες τις ρυθμίσεις του <acronym>RAID</acronym>.
Θα συζητηθούν μόνο οι καταστάσεις λειτουργίας του
<acronym>RAID</acronym> που υποστηρίζονται από το GEOM.</para>
<para>Αφού διαβάσετε αυτό το κεφάλαιο, θα ξέρετε:</para>
<itemizedlist>
<listitem>
<para>Το είδος της υποστήριξης <acronym>RAID</acronym> που είναι
διαθέσιμο μέσω του GEOM.</para>
</listitem>
<listitem>
<para>Πως να χρησιμοποιήσετε τα βασικά βοηθητικά προγράμματα για την
ρύθμιση, συντήρηση και διαχείριση των διαφόρων επιπέδων <acronym>
RAID</acronym>.</para>
</listitem>
<listitem>
<para>Πως να δημιουργήσετε mirror ή stripe, να κρυπτογραφήσετε, και να
συνδέσετε δίσκους με το GEOM, μέσω μιας απομακρυσμένης
σύνδεσης.</para>
</listitem>
<listitem>
<para>Πως να αντιμετωπίσετε προβλήματα δίσκων που χρησιμοποιούν το
πλαίσιο λειτουργιών GEOM.</para>
</listitem>
</itemizedlist>
<para>Πριν διαβάσετε αυτό το κεφάλαιο, θα πρέπει:</para>
<itemizedlist>
<listitem>
<para>Να κατανοείτε πως μεταχειρίζεται το &os; τις συσκευές δίσκων
(<xref linkend="disks"/>).</para>
</listitem>
<listitem>
<para>Να γνωρίζετε πως θα ρυθμίσετε και θα εγκαταστήσετε ένα νέο
πυρήνα στο &os; (<xref linkend="kernelconfig"/>).</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="GEOM-intro">
<title>Εισαγωγή στο GEOM</title>
<para>Το GEOM επιτρέπει την πρόσβαση και τον έλεγχο σε κλάσεις &mdash;
όπως την Κεντρική Εγγραφή Εκκίνησης (Master Boot Record), τα
<acronym>BSD</acronym> labels, κ.α. &mdash; μέσω της χρήσης παροχέων,
ή μέσω ειδικών αρχείων στον κατάλογο
<filename class="directory">/dev</filename>. Το GEOM υποστηρίζει
διάφορες διατάξεις <acronym>RAID</acronym> και παρέχει διάφανη
πρόσβαση στο λειτουργικό σύστημα και τα βοηθητικά του
προγράμματα.</para>
</sect1>
<sect1 id="GEOM-striping">
<sect1info>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>Γράφηκε από τους </contrib>
</author>
<author>
<firstname>Murray</firstname>
<surname>Stokely</surname>
</author>
</authorgroup>
</sect1info>
<title>RAID0 - Striping</title>
<indexterm>
<primary>GEOM</primary>
</indexterm>
<indexterm>
<primary>Striping</primary>
</indexterm>
<para>Το striping είναι μια μέθοδος που συνδυάζει διαφορετικούς φυσικούς
δίσκους σε ένα μοναδικό λογικό τόμο. Σε πολλές περιπτώσεις, αυτό
γίνεται με την βοήθεια εξειδικευμένου υλικού (ελεγκτών). Το υποσύστημα
δίσκων GEOM παρέχει υποστήριξη μέσω λογισμικού για τη διάταξη
<acronym>RAID</acronym>0, η οποία είναι γνωστή και ως striping.</para>
<para>Σε ένα σύστημα <acronym>RAID</acronym>0, τα δεδομένα χωρίζονται σε
blocks τα οποία γράφονται τμηματικά σε όλους τους δίσκους που αποτελούν
τη συστοιχία. Αντί να χρειάζεται να περιμένετε το σύστημα να γράψει
256k δεδομένων σε ένα δίσκο, ένα σύστημα <acronym>RAID</acronym>0 μπορεί
να γράψει ταυτόχρονα 64k σε καθένα από τους τέσσερις δίσκους μιας
συστοιχίας, προσφέροντας έτσι εξαιρετική απόδοση εισόδου/εξόδου (I/O).
Η απόδοση αυτή μπορεί να αυξηθεί περισσότερο, με τη χρήση πολλαπλών
ελεγκτών δίσκων.</para>
<para>Κάθε δίσκος σε ένα stripe <acronym>RAID</acronym>0 πρέπει να είναι
του ίδιου μεγέθους, καθώς οι αιτήσεις I/O μοιράζονται όσο αφορά την
ανάγνωση και εγγραφή, σε πολλούς παράλληλους δίσκους.</para>
<mediaobject>
<imageobject>
<imagedata fileref="geom/striping" align="center"/>
</imageobject>
<textobject>
<phrase>Διάγραμμα Disk Striping</phrase>
</textobject>
</mediaobject>
<procedure>
<title>Δημιουργία Stripe από μη-Διαμορφωμένους ATA Δίσκους</title>
<step>
<para>Φορτώστε το άρθρωμα <filename>geom_stripe.ko</filename>:</para>
<screen>&prompt.root; <userinput>kldload geom_stripe</userinput></screen>
</step>
<step>
<para>Εξασφαλίστε ότι υπάρχει κατάλληλο σημείο προσάρτησης. Αν ο
τόμος πρόκειται να γίνει κατάτμηση root, προσαρτήστε τον
προσωρινά σε κάποιο άλλο σημείο προσάρτησης, όπως το
<filename class="directory">/mnt</filename>:</para>
<screen>&prompt.root; <userinput>mkdir /mnt</userinput></screen>
</step>
<step>
<para>Καθορίστε τα ονόματα των συσκευών για τους δίσκους που πρόκειται
να γίνουν stripe, και δημιουργήστε τη νέα συσκευή stripe. Για
παράδειγμα, για να δημιουργήσετε ένα stripe από δύο
αχρησιμοποίητους και χωρίς κατατμήσεις δίσκους
<acronym>ATA</acronym>, όπως π.χ. τους
<filename>/dev/ad2</filename> και
<filename>/dev/ad3</filename>:</para>
<screen>&prompt.root; <userinput>gstripe label -v st0 /dev/ad2 /dev/ad3</userinput>
Metadata value stored on /dev/ad2.
Metadata value stored on /dev/ad3.
Done.</screen>
</step>
<step>
<para>Γράψτε ένα τυποποιημένο label (πίνακα κατατμήσεων) στο νέο
τόμο, και εγκαταστήστε τον προεπιλεγμένο κώδικα εκκίνησης
(bootstrap):</para>
<screen>&prompt.root; <userinput>bsdlabel -wB /dev/stripe/st0</userinput></screen>
</step>
<step>
<para>Η διαδικασία αυτή θα δημιουργήσει τη συσκευή
<devicename>st0</devicename>, καθώς και δύο ακόμα συσκευές στον
κατάλογο <filename class="directory">/dev/stripe</filename>.
Οι συσκευές αυτές θα ονομάζονται <devicename>st0a</devicename> και
<devicename>st0c</devicename>. Στο σημείο αυτό, μπορείτε πλέον να
δημιουργήσετε σύστημα αρχείων στη συσκευή
<devicename>st0a</devicename> χρησιμοποιώντας το βοηθητικό πρόγραμμα
<command>newfs</command>:</para>
<screen>&prompt.root; <userinput>newfs -U /dev/stripe/st0a</userinput></screen>
<para>Θα δείτε μια μεγάλη σειρά αριθμών να περνά γρήγορα από την
οθόνη σας, και μετά από λίγα δευτερόλεπτα η διαδικασία θα έχει
ολοκληρωθεί. Ο τόμος θα έχει δημιουργηθεί και θα είναι έτοιμος
για προσάρτηση.</para>
</step>
</procedure>
<para>Για να προσαρτήσετε χειροκίνητα το stripe που δημιουργήσατε:</para>
<screen>&prompt.root; <userinput>mount /dev/stripe/st0a /mnt</userinput></screen>
<para>Για να γίνεται αυτόματα η προσάρτηση αυτού του συστήματος αρχείων
κατά την διαδικασία εκκίνησης, τοποθετήστε τις πληροφορίες του τόμου στο
αρχείο <filename>/etc/fstab</filename>. Για το σκοπό αυτό,
δημιουργούμε ένα μόνιμο σημείο προσάρτησης, το <filename
class="directory">stripe</filename>:</para>
<screen>&prompt.root; <userinput>mkdir /stripe</userinput>
&prompt.root; <userinput>echo "/dev/stripe/st0a /stripe ufs rw 2 2" \</userinput>
<userinput>&gt;&gt; /etc/fstab</userinput></screen>
<para>Το άρθρωμα <filename>geom_stripe.ko</filename> θα πρέπει να
φορτώνεται αυτόματα κατά την εκκίνηση του συστήματος.
Εκτελέστε την παρακάτω εντολή, για να προσθέσετε την κατάλληλη ρύθμιση
στο <filename>/boot/loader.conf</filename>:</para>
<screen>&prompt.root; <userinput>echo 'geom_stripe_load="YES"' &gt;&gt; /boot/loader.conf</userinput></screen>
</sect1>
<sect1 id="GEOM-mirror">
<title>RAID1 - Mirroring</title>
<indexterm>
<primary>GEOM</primary>
</indexterm>
<indexterm>
<primary>Disk Mirroring</primary>
</indexterm>
<para>Το mirroring (καθρεφτισμός) είναι μια τεχνολογία που
χρησιμοποιείται από πολλές εταιρίες και οικιακούς χρήστες για να
ασφαλίσουν τα δεδομένα τους χωρίς διακοπές. Σε μια διάταξη mirror,
ο δίσκος Β είναι απλώς ένα πλήρες αντίγραφο του δίσκου Α. Ή μπορεί
οι δίσκοι Γ+Δ να είναι αντίγραφα των δίσκων A+B. Άσχετα με την
ακριβή διάταξη των δίσκων, το σημαντικό είναι ότι οι πληροφορίες ενός
δίσκου ή μιας κατάτμησης αντιγράφονται σε άλλους. Οι πληροφορίες
αυτές μπορεί αργότερα να αποκατασταθούν με εύκολο τρόπο, ή να
αντιγραφούν χωρίς να προκληθεί διακοπή στις υπηρεσίες του μηχανήματος
ή στην πρόσβαση των δεδομένων. Μπορούν ακόμα και να μεταφερθούν και
να φυλαχθούν σε άλλο, ασφαλές μέρος.</para>
<para>Για να ξεκινήσετε, βεβαιωθείτε ότι το σύστημα σας έχει δύο σκληρούς
δίσκους ίδιου μεγέθους. Στα παραδείγματα μας θεωρούμε ότι οι δίσκοι
είναι τύπου <acronym>SCSI</acronym> (απευθείας πρόσβασης,
&man.da.4;).</para>
<sect2>
<title>Mirroring στους Βασικούς Δίσκους</title>
<para>Υποθέτοντας ότι το &os; έχει εγκατασταθεί στον πρώτο δίσκο
<devicename>da0</devicename>, θα πρέπει να ρυθμίσετε το
&man.gmirror.8; να αποθηκεύσει εκεί τα βασικά δεδομένα του.</para>
<para>Πριν δημιουργήσετε το mirror, ενεργοποιήστε την δυνατότητα
εμφάνισης περισσότερων λεπτομερειών (που μπορεί να σας βοηθήσουν σε
περίπτωση προβλήματος) και επιτρέψτε την απευθείας πρόσβαση στη
συσκευή δίσκου. Για το σκοπό αυτό θέστε τη μεταβλητή
<varname>kern.geom.debugflags</varname> του &man.sysctl.8;
στην παρακάτω τιμή:</para>
<screen>&prompt.root; <userinput>sysctl kern.geom.debugflags=17</userinput></screen>
<para>Μπορείτε τώρα να δημιουργήσετε το mirror. Ξεκινήστε τη
διαδικασία αποθηκεύοντας τα μετα-δεδομένα (meta-data) στον βασικό
δίσκο, δημιουργώντας ουσιαστικά τη συσκευή
<filename class="devicefile">/dev/mirror/gm</filename>.
Χρησιμοποιήστε την παρακάτω εντολή:</para>
<warning>
<para>Η δημιουργία mirror στο δίσκο εκκίνησης μπορεί να έχει ως
αποτέλεσμα την απώλεια δεδομένων, αν ο τελευταίος τομέας του δίσκου
έχει ήδη χρησιμοποιηθεί. Η πιθανότητα αυτή είναι πολύ μικρότερη
αν το mirror δημιουργηθεί αμέσως μετά από μια νέα εγκατάσταση του
&os;. Η παρακάτω διαδικασία είναι επίσης ασύμβατη με τις
προεπιλεγμένες ρυθμίσεις εγκατάστασης του
&os;&nbsp;9.<replaceable>X</replaceable> στις οποίες
χρησιμοποιείται το σύστημα κατατμήσεων <acronym>GPT</acronym>.
To GEOM καταστρέφει τα μεταδεδομένα του <acronym>GPT</acronym>,
και θα προκαλέσει απώλεια δεδομένων και πιθανή αδυναμία εκκίνησης
του συστήματος.</para>
</warning>
<screen>&prompt.root; <userinput>gmirror label -vb round-robin gm0 /dev/da0</userinput></screen>
<para>Το σύστημα θα ανταποκριθεί με το παρακάτω μήνυμα:</para>
<screen>Metadata value stored on /dev/da0.
Done.</screen>
<para>Αρχικοποιήστε το GEOM. Η παρακάτω εντολή θα φορτώσει το άρθρωμα
<filename>/boot/kernel/geom_mirror.ko</filename> στον πυρήνα:</para>
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
<note>
<para>Με την επιτυχή εκτέλεση αυτής της εντολής, δημιουργείται η
συσκευή <devicename>gm0</devicename> μέσα στον κατάλογο
<filename class="directory">/dev/mirror</filename>.</para>
</note>
<para>Ενεργοποιήστε το φόρτωμα του αρθρώματος
<filename>geom_mirror.ko</filename> κατά την εκκίνηση του
συστήματος:</para>
<screen>&prompt.root; <userinput>echo 'geom_mirror_load="YES"' &gt;&gt; /boot/loader.conf</userinput></screen>
<para>Επεξεργαστείτε το αρχείο <filename>/etc/fstab</filename>,
αντικαθιστώντας τις αναφορές στις παλιές συσκευές
<devicename>da0</devicename> με τις αντίστοιχες καινούριες
<devicename>gm0</devicename> που αντιπροσωπεύουν το mirror.</para>
<note>
<para>Αν χρησιμοποιείτε το &man.vi.1;, μπορείτε να ακολουθήσετε τα
παρακάτω βήματα για να ολοκληρώσετε εύκολα αυτή τη
διαδικασία:</para>
<screen>&prompt.root; <userinput>vi /etc/fstab</userinput></screen>
<para>Στο &man.vi.1;, κρατήστε αντίγραφο ασφαλείας του τρέχοντος
αρχείου <filename>fstab</filename> πληκτρολογώντας
<userinput>:w /etc/fstab.bak</userinput>. Έπειτα αντικαταστήστε
όλες τις αναφορές στις παλιές συσκευές <devicename>da0</devicename>
με τις νέες <devicename>gm0</devicename> γράφοντας
<userinput>:%s/da/mirror\/gm/g</userinput>.</para>
</note>
<para>Το <filename>fstab</filename> που θα προκύψει, θα μοιάζει με
το παρακάτω. Δεν έχει σημασία αν οι δίσκοι ήταν αρχικά
<acronym>SCSI</acronym> ή <acronym>ATA</acronym>, η συσκευή
<acronym>RAID</acronym> θα έχει πάντα το όνομα
<devicename>gm</devicename>.</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1d /usr ufs rw 0 0
/dev/mirror/gm0s1f /home ufs rw 2 2
#/dev/mirror/gm0s2d /store ufs rw 2 2
/dev/mirror/gm0s1e /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0</programlisting>
<para>Επανεκκινήστε το σύστημα:</para>
<screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
<para>Κατά την εκκίνηση του συστήματος, θα πρέπει πλέον να
χρησιμοποιείται η συσκευή <devicename>gm0</devicename> αντί για την
<devicename>da0</devicename>. Μετά το τέλος της εκκίνησης, μπορείτε
να ελέγξετε ότι όλα λειτουργούν σωστά, εξετάζοντας την έξοδο της
εντολής <command>mount</command>:</para>
<screen>&prompt.root; <userinput>mount</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 1012974 224604 707334 24% /
devfs 1 1 0 100% /dev
/dev/mirror/gm0s1f 45970182 28596 42263972 0% /home
/dev/mirror/gm0s1d 6090094 1348356 4254532 24% /usr
/dev/mirror/gm0s1e 3045006 2241420 559986 80% /var
devfs 1 1 0 100% /var/named/dev</screen>
<para>Η έξοδος φαίνεται σωστή, όπως αναμενόταν. Τελικά, για να
ξεκινήσει ο συγχρονισμός, εισάγετε και την συσκευή
<devicename>da1</devicename> στο mirror, χρησιμοποιώντας την
ακόλουθη εντολή:</para>
<screen>&prompt.root; <userinput>gmirror insert gm0 /dev/da1</userinput></screen>
<para>Κατά τη διάρκεια του συγχρονισμού του mirror, μπορείτε να δείτε
την πρόοδο της διαδικασίας με την παρακάτω εντολή:</para>
<screen>&prompt.root; <userinput>gmirror status</userinput></screen>
<para>Μετά το τέλος της δόμησης του mirror, και αφού έχουν συγχρονιστεί
όλα τα δεδομένα, η έξοδος της παραπάνω εντολής θα μοιάζει με την
ακόλουθη:</para>
<screen> Name Status Components
mirror/gm0 COMPLETE da0
da1</screen>
<para>Αν υπάρχουν προβλήματα, ή αν το mirror βρίσκεται ακόμα στη
διαδικασία συγχρονισμού, το παράδειγμα θα δείχνει
<literal>DEGRADED</literal> αντί για
<literal>COMPLETE</literal>.</para>
</sect2>
<sect2>
<title>Αντιμετώπιση Προβλημάτων</title>
<sect3>
<title>Το σύστημα αρνείται να ξεκινήσει</title>
<para>Αν το σύστημα σας σταματάει σε μια προτροπή που μοιάζει με την
παρακάτω:</para>
<programlisting>ffs_mountroot: can't find rootvp
Root mount failed: 6
mountroot></programlisting>
<para>Επανεκκινήστε το σύστημα σας μέσω του διακόπτη τροφοδοσίας ή
του πλήκτρου reset. Στο μενού εκκίνησης, επιλέξτε το (6). Με τον
τρόπο αυτό θα βρεθείτε στην προτροπή του &man.loader.8;. Φορτώστε
χειροκίνητα το άρθρωμα στον πυρήνα:</para>
<screen>OK? <userinput>load geom_mirror</userinput>
OK? <userinput>boot</userinput></screen>
<para>Αν το παραπάνω λειτουργήσει, τότε για κάποιο λόγο το άρθρωμα
δεν φορτώθηκε σωστά. Ελέγξτε αν είναι σωστή η σχετική καταχώριση
στο αρχείο <filename>/boot/loader.conf</filename>. Αν το πρόβλημα
παραμένει, προσθέστε τη γραμμή:</para>
<programlisting>options GEOM_MIRROR</programlisting>
<para>στο αρχείο ρυθμίσεων του πυρήνα σας, αναδημιουργήστε και
επανεγκαταστήστε τον πυρήνα σας. Το πρόβλημα σας θα πρέπει να
διορθωθεί.</para>
</sect3>
</sect2>
<sect2>
<title>Επαναφορά Μετά από Αποτυχία Δίσκου</title>
<para>Το εκπληκτικό με το mirroring είναι ότι όταν ένας σκληρός δίσκος
χαλάσει, μπορείτε να τον αντικαταστήσετε χωρίς να χάσετε καθόλου
δεδομένα.</para>
<para>Υποθέτοντας ότι χρησιμοποιούμε τις ρυθμίσεις
<acronym>RAID</acronym>1 που δείξαμε προηγουμένως, ας θεωρήσουμε ότι
χάλασε ο δίσκος <devicename>da1</devicename> και πρέπει να
αντικατασταθεί. Για να τον αντικαταστήσετε, βρείτε ποιος δίσκος είναι
και απενεργοποιήστε το σύστημα. Στο σημείο αυτό, μπορείτε πλέον να
ανταλλάξετε το δίσκο με ένα νέο και να ενεργοποιήσετε ξανά το
σύστημα. Μετά την επανενεργοποίηση του συστήματος, μπορείτε να
χρησιμοποιήσετε τις παρακάτω εντολές για να θέσετε σε λειτουργία το
νέο δίσκο:</para>
<screen>&prompt.root; <userinput>gmirror forget gm0</userinput></screen>
<screen>&prompt.root; <userinput>gmirror insert gm0 /dev/da1</userinput></screen>
<para>Χρησιμοποιήστε την εντολή <command>gmirror</command>
<option>status</option> για να παρακολουθείτε τη διαδικασία του
συγχρονισμού. Είναι στα αλήθεια τόσο απλό.</para>
</sect2>
</sect1>
<sect1 id="GEOM-raid3">
<sect1info>
<authorgroup>
<author>
<firstname>Mark</firstname>
<surname>Gladman</surname>
<contrib>Γράφηκε από </contrib>
</author>
<author>
<firstname>Daniel</firstname>
<surname>Gerzo</surname>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>Βασισμένο στην τεκμηρίωση των </contrib>
</author>
<author>
<firstname>Murray</firstname>
<surname>Stokely</surname>
</author>
</authorgroup>
</sect1info>
<title><acronym>RAID</acronym>3 - Striping σε Επίπεδο Byte με Αφοσιωμένο
Parity</title>
<indexterm>
<primary>GEOM</primary>
</indexterm>
<indexterm>
<primary>RAID3</primary>
</indexterm>
<para>Το <acronym>RAID</acronym>3 είναι μια μέθοδος που συνδυάζει
αρκετούς διαφορετικούς σκληρούς δίσκους σε ένα τόμο με ένα δίσκο
αφοσιωμένο στην ισοτιμία (parity). Σε ένα σύστημα
<acronym>RAID</acronym>3, τα δεδομένα χωρίζονται σε ένα αριθμό από
bytes που εγγράφονται σε όλους τους δίσκους της συστοιχίας εκτός από
ένα που χρησιμοποιείται αποκλειστικά ως δίσκος ισοτιμίας. Αυτό
σημαίνει ότι για να διαβάσουμε 1024KB από μια υλοποίηση του
<acronym>RAID</acronym>3 θα πρέπει να προσπελάσουμε όλους τους
δίσκους της συστοιχίας. Η απόδοση αυξάνεται με τη χρήση χωριστών
ελεγκτών σκληρών δίσκων. Η συστοιχία <acronym>RAID</acronym>3
προσφέρει ανοχή σε βλάβη ενός δίσκου ενός παρέχει χωρητικότητα
1 - 1/n φορές τη χωρητικότητα όλων των δίσκων της συστοιχίας, όπου
n είναι το πλήθος των δίσκων που την απαρτίζουν. Αυτού του είδους
οι συστοιχίες είναι κατάλληλες για αποθήκευση μεγάλων αρχείων, για
παράδειγμα αρχείων πολυμέσων.</para>
<para>Χρειάζονται τουλάχιστον 3 φυσικοί σκληροί δίσκοι για τη δημιουργία
μια συστοιχίας <acronym>RAID</acronym>3. Κάθε δίσκος θα πρέπει να
είναι το ίδιο μέγεθος καθώς οι αιτήσεις Ι/Ο (εισόδου/εξόδου)
εναλλάσσονται ώστε να γίνεται εγγραφή και ανάγνωση σε πολλαπλούς δίσκους
παράλληλα. Επίσης, εξαιτίας της φύσης του <acronym>RAID</acronym>3,
ο αριθμός των δίσκων πρέπει να είναι 3, 5, 9, 17 κλπ. (2^n+1).</para>
<sect2>
<title>Δημιουργία Συστοιχίας <acronym>RAID</acronym>3</title>
<para>Στο &os;, η υποστήριξη για <acronym>RAID</acronym>3 υλοποιείται
μέσω της κλάσης &man.graid3.8; του <acronym>GEOM</acronym>.
Η δημιουργία μιας συστοιχίας <acronym>RAID</acronym>3 στο &os; απαιτεί
τα παρακάτω βήματα.</para>
<note>
<para>Αν και είναι θεωρητικά δυνατό να φτιάξετε μια εκκινήσιμη
συστοιχία <acronym>RAID</acronym>3 στο &os;, δεν συνίσταται καθώς
πρόκειται για ασυνήθιστη λειτουργία.</para>
</note>
<procedure>
<step>
<para>Αρχικά, φορτώστε το <filename>geom_rai3.ko</filename>
άρθρωμα του πυρήνα μέσω της ακόλουθης εντολής:</para>
<screen>&prompt.root; <userinput>graid3 load</userinput></screen>
<para>Εναλλακτικά, είναι δυνατόν να φορτώσετε το άρθρωμα
χειροκίνητα:</para>
<screen>&prompt.root; <userinput>kldload geom_raid3.ko</userinput></screen>
</step>
<step>
<para>Εξασφαλίστε ότι υπάρχει κατάλληλο σημείο προσάρτησης, ή
δημιουργήστε ένα καινούριο:</para>
<screen>&prompt.root; <userinput>mkdir <replaceable>/multimedia</replaceable></userinput></screen>
</step>
<step>
<para>Προσδιορίστε τα ονόματα συσκευών των δίσκων που θα προστεθούν
στη συστοιχία και δημιουργήστε τη νέα συσκευή
<acronym>RAID</acronym>3. Στο παράδειγμα μας χρησιμοποιούμε
τρεις οδηγούς <acronym>ATA</acronym> οι οποίοι δεν περιέχουν
κατατμήσεις:
<devicename><replaceable>ada1</replaceable></devicename> και
<devicename><replaceable>ada2</replaceable></devicename> για τα
δεδομένα και
<devicename><replaceable>ada3</replaceable></devicename> για το
parity.</para>
<screen>&prompt.root; <userinput>graid3 label -v gr0 /dev/ada1 /dev/ada2 /dev/ada3</userinput>
Metadata value stored on /dev/ada1
Metadata value stored on /dev/ada2
Metadata value stored on /dev/ada3
Done.</screen>
</step>
<step>
<para>Δημιουργήστε κατατμήσεις στη νέα συσκευή
<devicename>gr0</devicename> και διαμορφώστε την με σύστημα
αρχείων UFS:</para>
<screen>&prompt.root; <userinput>gpart create -s GPT /dev/raid3/gr0</userinput>
&prompt.root;<userinput> gpart add -t freebsd-ufs /dev/raid3/gr0</userinput>
&prompt.root;<userinput> newfs -j /dev/raid3/gr0p1</userinput></screen>
<para>Θα δείτε μεγάλο πλήθος αριθμών να περνάει από την οθόνη σας
και μετά από λίγο η διαδικασία θα ολοκληρωθεί. Ο τόμος έχει
πλέον δημιουργηθεί και είναι έτοιμος να προσαρτηθεί.</para>
</step>
<step>
<para>Το τελευταίο βήμα είναι η προσάρτηση του συστήματος
αρχείων:</para>
<screen>&prompt.root; <userinput>mount /dev/raid3/gr0p1 /multimedia</userinput></screen>
<para>Η συστοιχία <acronym>RAID</acronym>3 είναι τώρα έτοιμη προς
χρήση.</para>
</step>
</procedure>
<para>Θα χρειαστεί να κάνετε επιπλέον ρυθμίσεις ώστε η συστοιχία να
είναι άμεσα διαθέσιμη μετά από κάθε εκκίνηση του υπολογιστή
σας.</para>
<procedure>
<step>
<para>Το άρθρωμα <filename>geom_raid3.ko</filename> θα πρέπει να
φορτώνεται πριν την προσάρτηση της συστοιχίας. Για να φορτώνεται
αυτόματα κατά την εκκίνηση του συστήματος, προσθέστε την παρακάτω
γραμμή στο <filename>/boot/loader.conf</filename>:</para>
<programlisting>geom_raid3_load="YES"</programlisting>
</step>
<step>
<para>Θα πρέπει να προσθέσετε τις παρακάτω πληροφορίες σχετικά
με τον τόμο στο αρχείο <filename>/etc/fstab</filename> ώστε η
προσάρτηση του συστήματος αρχείων της συστοιχίας να γίνεται
αυτόματα κατά τη διαδικασία εκκίνησης του συστήματος:</para>
<programlisting>/dev/raid3/gr0p1 /multimedia ufs rw 2 2</programlisting>
</step>
</procedure>
</sect2>
</sect1>
<sect1 id="geom-ggate">
<title>Δικτυακές Συσκευές μέσω GEOM Gate</title>
<para>Το GEOM υποστηρίζει απομακρυσμένη χρήση συσκευών, όπως οι σκληροί
δίσκοι, τα CD-ROM, τα αρχεία κ.λ.π. χρησιμοποιώντας τα βοηθητικά
προγράμματα πύλης (gate). Η λειτουργία είναι παρόμοια με το
<acronym>NFS</acronym>.</para>
<para>Για να ξεκινήσετε, πρέπει να δημιουργήσετε ένα αρχείο exports. Το
αρχείο αυτό καθορίζει ποιος επιτρέπεται να αποκτήσει πρόσβαση στους
κοινόχρηστους πόρους και τι επιπέδου θα είναι αυτή η πρόσβαση. Για
παράδειγμα, για να διαμοιράσετε την τέταρτη κατάτμηση (slice) του πρώτου
δίσκου <acronym>SCSI</acronym>, είναι αρκετό να δημιουργήσετε το
παρακάτω αρχείο <filename>/etc/gg.exports</filename>:</para>
<programlisting>192.168.1.0/24 RW /dev/da0s4d</programlisting>
<para>Το παραπάνω θα επιτρέψει σε όλους τους υπολογιστές του ιδιωτικού
σας δικτύου, να έχουν πρόσβαση μέσω δικτύου στο σύστημα αρχείων της
κατάτμησης <devicename>da0s4d</devicename>.</para>
<para>Για να διαμοιράσετε αυτή τη συσκευή, βεβαιωθείτε ότι δεν είναι
προσαρτημένη τη δεδομένη στιγμή, και ξεκινήστε το δαίμονα εξυπηρετητή
&man.ggated.8;:</para>
<screen>&prompt.root; <userinput>ggated</userinput></screen>
<para>Για να προσαρτήσετε την συσκευή στο μηχάνημα πελάτη, χρησιμοποιήστε
τις ακόλουθες εντολές:</para>
<screen>&prompt.root; <userinput>ggatec create -o rw 192.168.1.1 /dev/da0s4d</userinput>
ggate0
&prompt.root; <userinput>mount /dev/ggate0 /mnt</userinput></screen>
<para>Από εδώ και στο εξής, μπορείτε να έχετε πρόσβαση στη συσκευή μέσω
του σημείου προσάρτησης <filename class="directory">/mnt</filename>.</para>
<note>
<para>Πρέπει να τονιστεί ότι η διαδικασία θα αποτύχει αν η συσκευή
είναι τη δεδομένη στιγμή προσαρτημένη, είτε στον εξυπηρετητή, είτε σε
οποιοδήποτε άλλο υπολογιστή στο δίκτυο.</para>
</note>
<para>Όταν δεν χρειάζεστε πλέον τη συσκευή, μπορείτε να την
αποπροσαρτήσετε με ασφάλεια, χρησιμοποιώντας την εντολή &man.umount.8;,
όπως γίνεται και με οποιαδήποτε άλλη συσκευή δίσκου.</para>
</sect1>
<sect1 id="geom-glabel">
<title>Δημιουργώντας Ετικέτες (Labels) στις Συσκευές Δίσκων</title>
<indexterm>
<primary>GEOM</primary>
</indexterm>
<indexterm>
<primary>Disk Labels</primary>
</indexterm>
<para>Κατά τη διάρκεια της αρχικοποίησης, στην εκκίνηση του συστήματος,
ο πυρήνας του &os; θα δημιουργήσει τα απαραίτητα αρχεία για κάθε
συσκευή που ανιχνεύει. Αυτή η μέθοδος ανίχνευσης συσκευών, μπορεί να
δημιουργήσει προβλήματα. Για παράδειγμα, τι θα γίνει αν προσθέσουμε ένα
νέο δίσκο <acronym>USB</acronym>; Είναι αρκετά πιθανό μια συσκευή
μνήμης flash να πάρει το όνομα <devicename>da0</devicename> και η
αρχική <devicename>da0</devicename> να μετακινηθεί στο
<devicename>da1</devicename>. Αυτό θα προκαλέσει προβλήματα στην
προσάρτηση των συστημάτων αρχείων, αν υπάρχουν οι αντίστοιχες
καταχωρίσεις τους στο <filename>/etc/fstab</filename>, και μπορεί ακόμα
και να παρεμποδίσει την κανονική εκκίνηση του συστήματος.</para>
<para>Μια λύση είναι να ρυθμίσετε τις συσκευές <acronym>SCSI</acronym> με
τέτοιο τρόπο, ώστε η αρίθμηση τους να είναι συνεχόμενη. Έτσι, κάθε
φορά που προσθέτετε μια νέα συσκευή στον ελεγκτή <acronym>SCSI</acronym>
θα είστε σίγουρος ότι θα λάβει αριθμό που δεν έχει χρησιμοποιηθεί.
Αλλά τι γίνεται με τις συσκευές <acronym>USB</acronym> που μπορεί να
αντικαταστήσουν τον κύριο <acronym>SCSI</acronym> δίσκο; Αυτό μπορεί
πράγματι να συμβεί, καθώς οι συσκευές <acronym>USB</acronym>
ανιχνεύονται κατά βάση πριν από τον ελεγκτή <acronym>SCSI</acronym>.
Μια λύση είναι να βάζετε τις συσκευές αυτές μόνο μετά την εκκίνηση
του συστήματος. Μια άλλη μέθοδος είναι να χρησιμοποιείτε μόνο μια
συσκευή τύπου <acronym>ATA</acronym> και να μην καταχωρείτε ποτέ τους
δίσκους <acronym>SCSI</acronym> στο <filename>/etc/fstab</filename>.</para>
<para>Υπάρχει ωστόσο καλύτερη λύση. Χρησιμοποιώντας το βοηθητικό
πρόγραμμα <command>glabel</command>, ένας διαχειριστής ή χρήστης, μπορεί
να αποδώσει ετικέτες στις συσκευές δίσκων και να τις χρησιμοποιήσει στο
<filename>/etc/fstab</filename>, αντί για τα συμβατικά ονόματα
συσκευών. Επειδή η <command>glabel</command> αποθηκεύει την ετικέτα
στον τελευταίο τομέα του κάθε παροχέα (συσκευής δίσκου), η ετικέτα
διατηρείται και μετά από την επανεκκίνηση του συστήματος.
Χρησιμοποιώντας αυτή την ετικέτα ως όνομα συσκευής, θα μπορείτε να
προσαρτήσετε πάντα το σύστημα αρχείων, άσχετα με το πραγματικό όνομα
συσκευής που έχει αποδοθεί στο δίσκο.</para>
<note>
<para>Δεν χρειάζεται φυσικά να τονίσουμε ότι αυτή η ετικέτα θα πρέπει
να είναι μόνιμη. Το βοηθητικό πρόγραμμα <command>glabel</command>
μπορεί να δημιουργήσει τόσο μόνιμες όσο και προσωρινές ετικέτες.
Μόνο οι μόνιμες ετικέτες διατηρούνται ανέπαφες μετά από μια
επανεκκίνηση. Δείτε τη σελίδα manual της &man.glabel.8; για
περισσότερες πληροφορίες σχετικά με τα είδη των ετικετών.</para>
</note>
<sect2>
<title>Είδη Ετικετών και Παραδείγματα</title>
<para>Υπάρχουν δύο τύποι ετικετών, η γενική ετικέτα και η ετικέτα
συστήματος αρχείων. Οι ετικέτες μπορεί να είναι προσωρινές ή μόνιμες.
Οι μόνιμες ετικέτες μπορούν να δημιουργηθούν με τις εντολές
&man.tunefs.8; ή &man.newfs.8;. Στην περίπτωση αυτή, θα δημιουργηθούν
σε ένα υποκατάλογο του <filename class="directory">/dev</filename>.
Για παράδειγμα, οι ετικέτες συσκευών με σύστημα αρχείων
<acronym>UFS</acronym>2, θα δημιουργηθούν στον κατάλογο <filename
class="directory">/dev/ufs</filename>. Μόνιμες ετικέτες μπορούν
επίσης να δημιουργηθούν με χρήση της εντολής
<command>glabel label</command>. Οι ετικέτες αυτές δεν εξαρτώνται από
το σύστημα αρχείων, και δημιουργούνται στον κατάλογο
<filename class="directory">/dev/label</filename>.</para>
<para>Οι ετικέτες προσωρινού τύπου, χάνονται σε κάθε επανεκκίνηση του
συστήματος. Οι ετικέτες αυτές δημιουργούνται στον κατάλογο
<filename class="directory">/dev/label</filename> και είναι τέλειες
για πειραματισμούς. Μπορείτε να δημιουργήσετε προσωρινές ετικέτες
με την εντολή <command>glabel create</command>. Για περισσότερες
πληροφορίες, διαβάστε τη σελίδα manual της &man.glabel.8;.</para>
<!-- XXXTR: How do you create a file system label without running newfs
or when there is no newfs (e.g.: cd9660)? -->
<para>Για να δημιουργήσετε μια μόνιμη ετικέτα για ένα σύστημα αρχείων
<acronym>UFS</acronym>2, χωρίς να καταστρέψετε τα δεδομένα που
περιέχει, χρησιμοποιήστε την ακόλουθη εντολή:</para>
<screen>&prompt.root; <userinput>tunefs -L <replaceable>home</replaceable> <replaceable>/dev/da3</replaceable></userinput></screen>
<warning>
<para>Αν το σύστημα αρχείων είναι γεμάτο, η παραπάνω εντολή μπορεί να
προκαλέσει καταστροφή δεδομένων. Ωστόσο, αν το σύστημα αρχείων
είναι γεμάτο, στόχος σας θα πρέπει να είναι να διαγράψετε τα
αρχεία που δεν χρησιμοποιούνται, και όχι να προσθέτετε
ετικέτες.</para>
</warning>
<para>Θα πρέπει τώρα να υπάρχει μια ετικέτα στον κατάλογο
<filename class="directory">/dev/ufs</filename> η οποία μπορεί να
προστεθεί στο <filename>/etc/fstab</filename>:</para>
<programlisting>/dev/ufs/home /home ufs rw 2 2</programlisting>
<note>
<para>Το σύστημα αρχείων δεν πρέπει να είναι προσαρτημένο καθώς
εκτελείτε την εντολή <command>tunefs</command>.</para>
</note>
<para>Μπορείτε τώρα να προσαρτήσετε το σύστημα αρχείων με το συνήθη
τρόπο:</para>
<screen>&prompt.root; <userinput>mount /home</userinput></screen>
<para>Από εδώ και πέρα, και όσο το άρθρωμα
<filename>geom_label.ko</filename> φορτώνεται στον πυρήνα μέσω του
<filename>/boot/loader.conf</filename> ή εφόσον έχετε βάλει την
επιλογή <literal>GEOM_LABEL</literal> στον πυρήνα σας, ακόμα και αν
το όνομα της συσκευής αλλάξει, δεν θα έχει καμιά δυσμενή επίδραση
στο σύστημα σας.</para>
<para>Μπορείτε επίσης να δημιουργήσετε συστήματα αρχείων με
προεπιλεγμένη ετικέτα, χρησιμοποιώντας την επιλογή
<option>-L</option> στην εντολή <command>newfs</command>. Δείτε την
σελίδα manual του &man.newfs.8; για περισσότερες πληροφορίες.</para>
<para>Μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή για να
καταστρέψετε μια ετικέτα:</para>
<screen>&prompt.root; <userinput>glabel destroy home</userinput></screen>
<para>Το επόμενο παράδειγμα δείχνει πως μπορούν να δοθούν ετικέτες στις
κατατμήσεις του δίσκου εκκίνησης.</para>
<example>
<title>Δημιουργία Ετικετών στις Κατατμήσεις του Δίσκου
Εκκίνησης</title>
<para>Δημιουργώντας μόνιμες ετικέτες στις κατατμήσεις του δίσκου
εκκίνησης, το σύστημα σας θα συνεχίσει να εκκινεί κανονικά ακόμα
και αν μεταφέρετε το δίσκο σε άλλο ελεγκτή ή ακόμα και σε
διαφορετικό σύστημα. Στο παράδειγμα μας, θεωρούμε ότι
χρησιμοποιείται ένας δίσκος <acronym>ATA</acronym>, ο οποίος
αναγνωρίζεται από το σύστημα ως <devicename>ad0</devicename>.
Θεωρούμε επίσης ότι χρησιμοποιείται η συνηθισμένη διάταξη
κατατμήσεων του &os;, που περιλαμβάνει τις κατατμήσεις
<filename class="directory">/</filename>,
<filename class="directory">/var</filename>,
<filename class="directory">/usr</filename> και
<filename class="directory">/tmp</filename> όπως επίσης και μια
κατάτμηση swap.</para>
<para>Επανεκκινήστε το σύστημα, και όταν εμφανιστεί η προτροπή του
&man.loader.8;, πιέστε το <keycap>4</keycap> για να πραγματοποιηθεί
εκκίνηση σε κατάσταση ενός χρήστη. Έπειτα, δώστε τις ακόλουθες
εντολές:</para>
<screen>&prompt.root; <userinput>glabel label rootfs /dev/ad0s1a</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
&prompt.root; <userinput>glabel label var /dev/ad0s1d</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
&prompt.root; <userinput>glabel label usr /dev/ad0s1f</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
&prompt.root; <userinput>glabel label tmp /dev/ad0s1e</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
&prompt.root; <userinput>glabel label swap /dev/ad0s1b</userinput>
GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
&prompt.root; <userinput>exit</userinput></screen>
<para>Η εκκίνηση θα συνεχιστεί κανονικά και το σύστημα θα έλθει σε
κατάσταση πολλαπλών χρηστών (multi-user).
Μετά το τέλος της εκκίνησης, επεξεργαστείτε το αρχείο
<filename>/etc/fstab</filename> και αλλάξτε τα συμβατικά ονόματα
συσκευών με τις αντίστοιχες ετικέτες. Το τελικό αρχείο
<filename>/etc/fstab</filename> θα μοιάζει με το παρακάτω:</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/label/swap none swap sw 0 0
/dev/label/rootfs / ufs rw 1 1
/dev/label/tmp /tmp ufs rw 2 2
/dev/label/usr /usr ufs rw 2 2
/dev/label/var /var ufs rw 2 2</programlisting>
<para>Μπορείτε τώρα να επανεκκινήσετε το σύστημα. Αν όλα πήγαν καλά,
η εκκίνηση θα είναι κανονική, και η εντολή <command>mount</command>
θα δείξει:</para>
<screen>&prompt.root; <userinput>mount</userinput>
/dev/label/rootfs on / (ufs, local)
devfs on /dev (devfs, local)
/dev/label/tmp on /tmp (ufs, local, soft-updates)
/dev/label/usr on /usr (ufs, local, soft-updates)
/dev/label/var on /var (ufs, local, soft-updates)</screen>
</example>
<para>Ξεκινώντας από το &os;&nbsp;7.2, το &man.glabel.8; υποστηρίζει
ένα νέο είδος ετικέτας για συστήματα αρχείων <acronym>UFS</acronym>,
που βασίζεται σε ένα μοναδιαίο αναγνωριστικό τους,
το <literal>ufsid</literal>. Οι ετικέτες αυτές βρίσκονται στον
κατάλογο <filename class="directory">/dev/ufsid</filename>,
δημιουργούνται αυτόματα κατά την εκκίνηση του συστήματος και είναι
δυνατόν να χρησιμοποιηθούν για την προσάρτηση κατατμήσεων μέσω του
<filename>/etc/fstab</filename>. Μπορείτε να χρησιμοποιήσετε την
εντολή <command>glabel status</command> για να λάβετε μια λίστα
των συστημάτων αρχείων με τις αντίστοιχες <literal>ufsid</literal>
ετικέτες τους:</para>
<screen>&prompt.user; <userinput>glabel status</userinput>
Name Status Components
ufsid/486b6fc38d330916 N/A ad4s1d
ufsid/486b6fc16926168e N/A ad4s1f</screen>
<para>Στο παραπάνω παράδειγμα, το <devicename>ad4s1d</devicename>
αντιπροσωπεύει το σύστημα αρχείων <filename
class="directory">/var</filename>, ενώ το
<devicename>ad4s1f</devicename> αντιπροσωπεύει το σύστημα αρχείων
<filename class="directory">/usr</filename>. Χρησιμοποιώντας τις
τιμές <literal>ufsid</literal> που φαίνονται, η προσάρτηση αυτών
των κατατμήσεων μπορεί να γίνει με τις παρακάτω καταχωρίσεις στο
<filename>/etc/fstab</filename>:</para>
<programlisting>/dev/ufsid/486b6fc38d330916 /var ufs rw 2 2
/dev/ufsid/486b6fc16926168e /usr ufs rw 2 2</programlisting>
<para>Οποιαδήποτε κατάτμηση διαθέτει αναγνωριστικό
<literal>ufsid</literal> μπορεί να προσαρτηθεί με τον ίδιο τρόπο,
χωρίς να υπάρχει πλέον ανάγκη να δημιουργηθεί μόνιμη ετικέτα
χειροκίνητα. Η προσάρτηση μέσω ετικέτας <literal>ufsid</literal>,
παρέχει το πλεονέκτημα της ανεξαρτησίας από το όνομα συσκευής, το
οποίο παρέχουν και οι μόνιμες ετικέτες.</para>
</sect2>
</sect1>
<sect1 id="geom-gjournal">
<title>UFS Journaling Μέσω GEOM</title>
<indexterm>
<primary>GEOM</primary>
</indexterm>
<indexterm>
<primary>Journaling</primary>
</indexterm>
<para>Στην έκδοση 7.0 του &os; υλοποιείται για πρώτη φορά η νέα (και από
πολλούς αναμενόμενη) δυνατότητα για χρήση ημερολογίου (journal) στο
σύστημα αρχείων. Η υλοποίηση παρέχεται μέσω του
υποσυστήματος <acronym>GEOM</acronym> και μπορεί να ρυθμιστεί εύκολα
μέσω του βοηθητικού προγράμματος &man.gjournal.8;.</para>
<para>Τι είναι το journaling; Το journaling αποθηκεύει σε ένα αρχείο
καταγραφής (log, ημερολόγιο, ή απλώς journal) τις συναλλαγές του
συστήματος αρχείων. Παράδειγμα συναλλαγής είναι οι αλλαγές που
απαιτούνται για μια πλήρη διαδικασία εγγραφής στο δίσκο. Έτσι, στο
log αποθηκεύονται οι αλλαγές στα μετα-δεδομένα (meta-data) και στα ίδια
τα αρχεία, πριν γίνει η τελική (κανονική) αποθήκευση τους στο δίσκο.
Το αρχείο καταγραφής μπορεί αργότερα να ξαναχρησιμοποιηθεί ώστε η
συναλλαγή να γίνει από την αρχή, εξασφαλίζοντας με αυτό τον τρόπο ότι
το σύστημα αρχείων θα παραμείνει σε σταθερή κατάσταση.</para>
<para>Πρόκειται ουσιαστικά για μια ακόμα μέθοδο προφύλαξης από απώλεια
δεδομένων και ασυνέπειες στο σύστημα αρχείων. Σε αντίθεση με τα
Soft Updates τα οποία εντοπίζουν και υποχρεώνουν την άμεση εγγραφή
των μετα-δεδομένων, και των στιγμιοτύπων (Snapshots) τα οποία είναι
εικόνες του συστήματος αρχείων σε μια δεδομένη στιγμή, το log
αποθηκεύεται σε χώρο που έχει εκχωρηθεί ειδικά για αυτό το
σκοπό, και σε μερικές περιπτώσεις μπορεί να αποθηκεύεται σε εντελώς
διαφορετικό δίσκο.</para>
<para>Σε αντίθεση με υλοποιήσεις journaling σε άλλα συστήματα αρχείων,
η μέθοδος <command>gjournal</command> βασίζεται σε blocks, και δεν
υλοποιείται ως μέρος του συστήματος αρχείων, αλλά μόνο ως επέκταση του
<acronym>GEOM</acronym>.</para>
<para>Για ενεργοποίηση της υποστήριξης <command>gjournal</command>, θα
πρέπει να υπάρχει η παρακάτω επιλογή στον πυρήνα του &os;. Η επιλογή
αυτή υπάρχει από προεπιλογή στην έκδοση 7.0 και όλες τις νεότερες
εκδόσεις του &os;.</para>
<programlisting>options UFS_GJOURNAL</programlisting>
<para>Αν χρειάζεται να προσαρτώνται τόμοι με journaling κατά την εκκίνηση,
θα πρέπει επίσης να φορτώνεται αυτόματα και το άρθρωμα πυρήνα
<filename>geom_journal.ko</filename>. Για το σκοπό αυτό, προσθέστε την
παρακάτω γραμμή στο αρχείο <filename>/boot/loader.conf</filename>:</para>
<programlisting>geom_journal_load="YES"</programlisting>
<para>Εναλλακτικά, η λειτουργία αυτή μπορεί να ενσωματωθεί σε ένα
προσαρμοσμένο πυρήνα, με την προσθήκη της παρακάτω γραμμής στο
αντίστοιχο αρχείο ρυθμίσεων:</para>
<programlisting>options GEOM_JOURNAL</programlisting>
<para>Η δημιουργία journal σε ένα ελεύθερο σύστημα αρχείων, μπορεί τώρα
να γίνει με τα ακόλουθα βήματα, θεωρώντας ότι η συσκευή
<devicename>da4</devicename> είναι ένας νέος δίσκος
<acronym>SCSI</acronym>:</para>
<screen>&prompt.root; <userinput>gjournal load</userinput>
&prompt.root; <userinput>gjournal label /dev/da4</userinput></screen>
<para>Στο σημείο αυτό θα υπάρχει μια συσκευή
<devicename>/dev/da4</devicename> καθώς και μια συσκευή
<devicename>/dev/da4.journal</devicename>. Στη συσκευή αυτή μπορείτε
τώρα να δημιουργήσετε σύστημα αρχείων:</para>
<screen>&prompt.root; <userinput>newfs -O 2 -J /dev/da4.journal</userinput></screen>
<para>Η παραπάνω εντολή θα δημιουργήσει ένα σύστημα αρχείων
<acronym>UFS</acronym>2 στη
συσκευή <devicename>/dev/da4.journal</devicename>, η οποία έχει
ήδη υποστήριξη για journaling.</para>
<para>Μπορείτε να χρησιμοποιήσετε την εντολή <command>mount</command>
για να προσαρτήσετε την συσκευή στο επιθυμητό σημείο προσάρτησης, όπως
φαίνεται παρακάτω:</para>
<screen>&prompt.root; <userinput>mount /dev/da4.journal <replaceable>/mnt</replaceable></userinput></screen>
<note>
<para>Στην περίπτωση αρκετών slice, θα δημιουργηθεί ένα journal για κάθε
επιμέρους slice. Για παράδειγμα, αν υπάρχουν τα slices
<devicename>ad4s1</devicename> και <devicename>ad4s2</devicename>
τότε το <command>gjournal</command> θα δημιουργήσει τις συσκευές
<devicename>ad4s1.journal</devicename> και
<devicename>ad4s2.journal</devicename>.</para>
</note>
<para>Για καλύτερη απόδοση, ίσως είναι επιθυμητή η τήρηση του
journal σε διαφορετικό δίσκο. Για τις περιπτώσεις αυτές, ο παροχέας
ημερολογίου (η συσκευή δίσκου που θα περιέχει το journal) πρέπει
να δίνεται ως παράμετρος στην εντολή, αμέσως μετά τη συσκευή δίσκου
στην οποία θα ενεργοποιηθεί το journaling. Μπορείτε επίσης να
ενεργοποιήσετε το journaling σε υπάρχοντα συστήματα αρχείων
χρησιμοποιώντας την εντολή <command>tunefs</command>. Ωστόσο, θα πρέπει
να κρατήσετε αντίγραφο ασφαλείας των αρχείων σας, πριν επιχειρήσετε
να κάνετε αλλαγές σε ένα υπάρχον σύστημα αρχείων. Στις περισσότερες
περιπτώσεις, η <command>tunefs</command> θα αποτύχει αν δεν μπορέσει
να δημιουργήσει το journal, αλλά αυτό δεν σας προστατεύει από απώλεια
δεδομένων που μπορεί να προέλθει από κακή χρήση της
<command>tunefs</command>.</para>
<para>Είναι επίσης δυνατόν να χρησιμοποιηθεί journaling στον δίσκο
εκκίνησης ενός συστήματος &os;. Διαβάστε το άρθρο <ulink
url="&url.articles.gjournal-desktop;">Υλοποίηση του UFS Journaling σε
ένα Desktop Υπολογιστή</ulink> για λεπτομερείς οδηγίες.</para>
</sect1>
</chapter>