1027 lines
43 KiB
XML
1027 lines
43 KiB
XML
<?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 επιτρέπει την πρόσβαση και τον έλεγχο σε κλάσεις —
|
||
όπως την Κεντρική Εγγραφή Εκκίνησης (Master Boot Record), τα
|
||
<acronym>BSD</acronym> labels, κ.α. — μέσω της χρήσης παροχέων,
|
||
ή μέσω ειδικών αρχείων στον κατάλογο
|
||
<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>>> /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"' >> /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; 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"' >> /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; 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>
|