doc/el_GR.ISO8859-7/books/handbook/vinum/chapter.xml
Gabor Kovesdan e8e2dfdbab - Do not specify image file extensions in documents; the proper extension
is appended during rendering
- For the same reason, do not specify format either
- Add constraints to enforce this
2013-04-02 09:50:10 +00:00

1353 lines
59 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"?>
<!--
Το Εγχειρίδιο του FreeBSD: Ο Διαχειριστής Τόμων Vinum
Γράφτηκε από τον:
Greg Lehey (grog at lemis dot com)
Ενσωματώθηκε στο Εγχειρίδιο του FreeBSD από τους:
Hiten Pandya <hmp@FreeBSD.org>
Tom Rhodes <trhodes@FreeBSD.org>
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/vinum/chapter.xml
%SRCID% 38826
-->
<chapter id="vinum-vinum">
<chapterinfo>
<authorgroup>
<author>
<firstname>Greg</firstname>
<surname>Lehey</surname>
<contrib>Αρχική συνεισφορά του </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>Ο Διαχειριστής Τόμων Vinum</title>
<sect1 id="vinum-synopsis">
<title>Σύνοψη</title>
<para>Οτιδήποτε δίσκους και αν έχετε, πάντα υπάρχουν πιθανά
προβλήματα:</para>
<itemizedlist>
<listitem>
<para>Μπορεί να είναι πολύ μικροί.</para>
</listitem>
<listitem>
<para>Μπορεί να είναι πολύ αργοί.</para>
</listitem>
<listitem>
<para>Μπορεί να μην είναι αρκετά αξιόπιστοι.</para>
</listitem>
</itemizedlist>
<para>Για τα προβλήματα αυτά, έχουν προταθεί και υλοποιηθεί διάφορες
λύσεις. Ένας συχνά χρησιμοποιούμενος τρόπος προστασίας, είναι με την
χρήση πολλαπλών και ορισμένες φορές περιττών (redundant) δίσκων. Εκτός
από την υποστήριξη που παρέχεται για συσκευές (κάρτες και ελεγκτές)
hardware RAID, το βασικό σύστημα του &os; περιλαμβάνει το διαχειριστή
τόμων (volume manager) Vinum, ένα πρόγραμμα οδήγησης τύπου
μπλοκ το οποίο υλοποιεί εικονικούς δίσκους.
Το <emphasis>Vinum</emphasis> αποκαλείται και
<emphasis>Διαχειριστής Τόμων</emphasis>, και είναι ένας οδηγός
εικονικών δίσκων που αντιμετωπίζει τα παραπάνω τρία προβλήματα.
Το Vinum παρέχει καλύτερη ευελιξία, απόδοση και αξιοπιστία σε σχέση με
τα παραδοσιακά συστήματα αποθήκευσης, και υλοποιεί τα μοντέλα RAID-0,
RAID-1 και RAID-5, τόσο μεμονωμένα, όσο και σε συνδυασμό μεταξύ
τους.</para>
<para>Το κεφάλαιο αυτό παρέχει μια επισκόπηση των πιθανών προβλημάτων των
παραδοσιακών συστημάτων αποθήκευσης, και μια εισαγωγή στο Διαχειριστή
Τόμων Vinum.</para>
<note>
<para>Ξεκινώντας από το &os;&nbsp;5 και μετά, το Vinum ξαναγράφτηκε
ώστε να ενσωματωθεί στην αρχιτεκτονική GEOM (<xref linkend="GEOM"/>),
διατηρώντας ωστόσο τις αρχικές ιδέες, ορολογία, και τη μορφή των
μετα-δεδομένων (metadata) που αποθηκεύονται στον δίσκο.
Η νέα αυτή εκδοχή ονομάζεται <emphasis>gvinum</emphasis> (από το
<emphasis>GEOM vinum</emphasis>). Το ακόλουθο κείμενο αναφέρεται
συνήθως στο <emphasis>Vinum</emphasis> ως αφηρημένη έννοια, άσχετα με
τις λεπτομέρειες της υλοποίησης. Όλες οι εντολές θα πρέπει τώρα να
καλούνται με τη χρήση της <command>gvinum</command>,
το άρθρωμα πυρήνα (kernel module) έχει μετονομαστεί σε
<filename>geom_vinum.ko</filename> από <filename>vinum.ko</filename>,
και όλα τα αρχεία συσκευών βρίσκονται στον κατάλογο
<filename class="directory">/dev/gvinum</filename> αντί για
<filename class="directory">/dev/vinum</filename>. Από το
&os;&nbsp;6 και μετά, η παλιά υλοποίηση του Vinum δεν περιλαμβάνεται
πλέον στο βασικό σύστημα.</para>
</note>
</sect1>
<sect1 id="vinum-intro">
<title>Οι Δίσκοι Είναι Πολύ Μικροί</title>
<indexterm><primary>Vinum</primary></indexterm>
<indexterm><primary>RAID</primary>
<secondary>software</secondary></indexterm>
<para>Οι δίσκοι γίνονται ολοένα και μεγαλύτεροι, αλλά με τον ίδιο ρυθμό
αυξάνονται επίσης και οι απαιτήσεις μας σε αποθηκευτικό χώρο. Πολλές
φορές θα βρεθείτε σε θέση να χρειάζεστε ένα σύστημα αρχείων μεγαλύτερο
από τους δίσκους που έχετε διαθέσιμους. Σίγουρα το πρόβλημα αυτό δεν
είναι τόσο έντονο όσο πριν δέκα χρόνια, αλλά εξακολουθεί να υπάρχει.
Μερικά συστήματα επιλύουν αυτό το πρόβλημα, δημιουργώντας μια εικονική
συσκευή που αποθηκεύει τα δεδομένα σε ένα αριθμό διακριτών
δίσκων.</para>
</sect1>
<sect1 id="vinum-access-bottlenecks">
<title>Καθυστερήσεις Πρόσβασης</title>
<para>Στα μοντέρνα συστήματα, υπάρχει συχνά ανάγκη πρόσβασης δεδομένων
από πολλές διεργασίες ταυτόχρονα. Για παράδειγμα, μεγάλοι εξυπηρετητές
FTP ή HTTP μπορεί να έχουν ανά πάσα στιγμή χιλιάδες ταυτόχρονες
εξωτερικές συνδέσεις και να διαθέτουν πολλαπλές διεπαφές 100&nbsp;Mbit/s
οι οποίες ξεπερνάνε κατά πολύ τις δυνατότητες μεταφοράς δεδομένων των
περισσότερων σκληρών δίσκων.</para>
<para>Τα τρέχοντα μοντέλα σκληρών δίσκων μπορούν να μεταφέρουν δεδομένα
σειριακά με ταχύτητα μέχρι και 70&nbsp;MB/s, αλλά η τιμή αυτή έχει μικρή
σημασία σε ένα περιβάλλον όπου πολλές ανεξάρτητες διεργασίες χρειάζονται
πρόσβαση στον ίδιο δίσκο. Σε τέτοιες περιπτώσεις, κάθε διεργασία μπορεί
να επιτύχει μόνο ένα μικρό ποσοστό της μέγιστης αυτής απόδοσης. Είναι
πιο ενδιαφέρον να δούμε το πρόβλημα από την πλευρά του υποσυστήματος
δίσκων: ο σημαντικός παράγοντας είναι ο φόρτος στον οποίο υποβάλλεται
το υποσύστημα κατά τη διάρκεια μιας μεταφοράς. Με άλλα λόγια, ο χρόνος
που παραμένουν απασχολημένοι οι δίσκοι εξαιτίας της μεταφοράς.</para>
<para>Σε κάθε μεταφορά δεδομένων, ο δίσκος θα πρέπει πρώτα να τοποθετήσει
τις κεφαλές στο σωστό σημείο, να περιμένει να περάσει ο πρώτος τομέας
κάτω από την κεφαλή ανάγνωσης, και έπειτα να εκτελέσει τη μεταφορά.
Οι ενέργειες αυτές μπορούν να θεωρηθούν ατομικές: δεν έχει νόημα να
προσπαθήσουμε να τις διακόψουμε.</para>
<para><anchor id="vinum-latency"/> Ας θεωρήσουμε μια τυπική μεταφορά
περίπου 10&nbsp;kB. Η τρέχουσα γενιά δίσκων υψηλής απόδοσης μπορεί να
τοποθετήσει τις κεφαλές στη σωστή θέση σε περίπου 3.5&nbsp;ms. Οι πιο
γρήγοροι δίσκοι έχουν ταχύτητα περιστροφής 15.000 στροφές το λεπτό,
έτσι ο μέσος χρόνος καθυστέρησης περιστροφής (μισή περιστροφή) είναι
2&nbsp;ms. Με 70&nbsp;MB/s, η μεταφορά αυτή καθ' αυτή θα χρειαστεί
περίπου 150&nbsp;&mu;s, σχεδόν τίποτα σε σχέση με το χρόνο που
χρειάζεται για την τοποθέτηση της κεφαλής στο σωστό σημείο.
Στην περίπτωση αυτή, ο πραγματικός ρυθμός μεταφοράς πέφτει σε λίγο
περισσότερο από ένα 1&nbsp;ΜΒ/s και είναι εμφανές ότι εξαρτάται σε
μεγάλο βαθμό από το μέγεθος των δεδομένων που μεταφέρονται.</para>
<para>Η παραδοσιακή και προφανής λύση σε αυτό το πρόβλημα, είναι να
προσθέσουμε <quote>περισσότερους δίσκους</quote>: αντί να
χρησιμοποιήσουμε ένα μεγάλο δίσκο, να βάλουμε πολλούς μικρότερους με
τον ίδιο τελικό αποθηκευτικό χώρο. Κάθε δίσκος έχει δυνατότητα να
μετακινεί τις κεφαλές και να μεταφέρει δεδομένα ανεξάρτητα από τους
άλλους, έτσι η πραγματική διαμεταγωγή αυξάνει αναλογικά με το πλήθος
των δίσκων που χρησιμοποιούνται.</para>
<para>Η πραγματική αύξηση της διαμεταγωγής είναι φυσικά μικρότερη από το
πλήθος των δίσκων που χρησιμοποιούνται: αν και κάθε δίσκος είναι ικανός
να μεταφέρει δεδομένα παράλληλα με τους άλλους, δεν υπάρχει τρόπος να
εξασφαλίσουμε ότι οι αιτήσεις μεταφοράς κατανέμονται ομοιόμορφα σε όλους
τους δίσκους. Είναι αναπόφευκτο ότι το φορτίο σε ένα δίσκο θα είναι
μεγαλύτερο από το φορτίο σε κάποιο άλλο.</para>
<indexterm>
<primary>disk concatenation</primary>
</indexterm>
<indexterm>
<primary>Vinum</primary>
<secondary>concatenation</secondary>
</indexterm>
<para>Η ομοιομορφία κατανομής του φορτίου στους δίσκους, εξαρτάται σε
μεγάλο βαθμό από τον τρόπο που έχουν μοιραστεί τα δεδομένα σε αυτούς.
Στην παρακάτω συζήτηση, είναι βολικό να σκεφτόμαστε τον αποθηκευτικό
χώρο ενός δίσκου ως ένα μεγάλο αριθμό από τομείς στους οποίους έχουμε
πρόσβαση με βάση ένα αριθμό, ακριβώς όπως οι σελίδες σε ένα βιβλίο.
Η πιο προφανής μέθοδος είναι να χωρίσουμε τον εικονικό δίσκο σε ομάδες
από συνεχόμενους τομείς, όπου καθεμία έχει το μέγεθος του πραγματικού
ανεξάρτητου φυσικού δίσκου, και να τις αποθηκεύσουμε με αυτό τον τρόπο,
περίπου σαν να παίρναμε ένα μεγάλο βιβλίο και να το χωρίζαμε σε
μικρότερους τόμους. Η μέθοδος αυτή ονομάζεται
<emphasis>συνένωση (concatenation)</emphasis> και έχει το πλεονέκτημα
ότι δεν απαιτεί τα μεγέθη των δίσκων να έχουν κάποια σχέση μεταξύ τους.
Λειτουργεί πολύ καλά όταν η πρόσβαση στον εικονικό δίσκο είναι
ομοιόμορφα κατανεμημένη σε όλη την περιοχή διευθύνσεων του. Όταν η
πρόσβαση συγκεντρώνεται σε μια μικρότερη περιοχή, η βελτίωση είναι
μικρότερη. Το <xref linkend="vinum-concat"/> δείχνει την ακολουθία με
την οποία γίνεται η κατανομή των θέσεων αποθήκευσης όταν
χρησιμοποιείται η συνένωση.</para>
<para>
<figure id="vinum-concat">
<title>Οργάνωση Συνένωσης</title>
<graphic fileref="vinum/vinum-concat"/>
</figure>
</para>
<indexterm>
<primary>disk striping</primary>
</indexterm>
<indexterm>
<primary>Vinum</primary>
<secondary>striping</secondary>
</indexterm>
<indexterm>
<primary>RAID</primary>
</indexterm>
<para>Ένας εναλλακτικός τρόπος αποθήκευσης, είναι να χωριστεί η περιοχή
διευθύνσεων σε μικρότερα τμήματα ίσου μεγέθους τα οποία να αποθηκεύονται
σειριακά σε διαφορετικές συσκευές. Για παράδειγμα, οι πρώτοι 256 τομείς
μπορεί να είναι αποθηκευμένοι στον πρώτο δίσκο, οι επόμενοι 256 στον
επόμενο δίσκο, κ.ο.κ. Μετά την χρήση και του τελευταίου δίσκου,
η διαδικασία επαναλαμβάνεται μέχρι να γεμίσουν όλοι οι δίσκοι. Αυτή
η μέθοδος ονομάζεται <emphasis>striping</emphasis> ή
<acronym>RAID-0</acronym>.
<footnote>
<para>Το <acronym>RAID</acronym> σημαίνει <emphasis>Redundant
Array of Inexpensive Disks</emphasis> και παρέχει διάφορες μορφές
ανοχής σε σφάλματα, αν και στην παραπάνω χρήση ο όρος είναι
κάπως παραπλανητικός: το <acronym>RAID-0</acronym> δεν παρέχει καμιά
τέτοια προστασία δεδομένων.</para>
</footnote>
Το striping απαιτεί κάπως περισσότερη προσπάθεια για τον εντοπισμό των
δεδομένων και μπορεί να προκαλέσει μεγαλύτερο φορτίο I/O όταν μια
μεταφορά κατανέμεται σε πολλαπλούς δίσκους, αλλά από την άλλη
επιτυγχάνει μεγαλύτερο σταθερό φορτίο σε κάθε δίσκο.
Το <xref linkend="vinum-striped"/> δείχνει τη σειρά με την οποία
χρησιμοποιούνται οι μονάδες αποθήκευσης σε μια οργάνωση τύπου
stripe.</para>
<para>
<figure id="vinum-striped">
<title>Striped Organization</title>
<graphic fileref="vinum/vinum-striped"/>
</figure>
</para>
</sect1>
<sect1 id="vinum-data-integrity">
<title>Ακεραιότητα Δεδομένων</title>
<para>Το τελευταίο πρόβλημα με την τρέχουσα τεχνολογία δίσκων, είναι
η αναξιοπιστία τους. Αν και τα τελευταία χρόνια η αξιοπιστία των
δίσκων έχει αυξηθεί σημαντικά, εξακολουθούν να είναι το εξάρτημα με
το μεγαλύτερο ρυθμό αποτυχίας στους εξυπηρετητές. Όταν αποτύχει ένας
δίσκος, τα αποτελέσματα μπορεί να είναι καταστροφικά: η αντικατάσταση
ενός χαλασμένου δίσκου και η αντιγραφή των δεδομένων στο νέο μπορεί
να διαρκέσει μέρες.</para>
<indexterm>
<primary>disk mirroring</primary>
</indexterm>
<indexterm>
<primary>Vinum</primary>
<secondary>mirroring</secondary>
</indexterm>
<indexterm>
<primary>RAID-1</primary>
</indexterm>
<para>Ο παραδοσιακός τρόπος αντιμετώπισης αυτού του προβλήματος είναι το
<emphasis>mirroring</emphasis> (καθρεπτισμός), η διατήρηση δηλαδή δύο
αντιγράφων των δεδομένων σε διαφορετικούς δίσκους. Με την εφεύρεση των
διάφορων επιπέδων <acronym>RAID</acronym>, η τεχνική αυτή έγινε επίσης
γνωστή με την ονομασία <acronym>RAID επιπέδου 1</acronym> ή απλώς
<acronym>RAID-1</acronym>. Κάθε εγγραφή στον τόμο γίνεται και στους
δύο δίσκους. Η ανάγνωση μπορεί να γίνει από οποιοδήποτε δίσκο, έτσι
αν ένας από τους δύο αποτύχει, τα δεδομένα εξακολουθούν να είναι
διαθέσιμα στον άλλο.</para>
<para>Το mirroring έχει δύο προβλήματα:</para>
<itemizedlist>
<listitem>
<para>Το κόστος. Απαιτεί διπλάσιο κόστος από οποιαδήποτε λύση δεν
προσφέρει αυτή τη λειτουργία.</para>
</listitem>
<listitem>
<para>Τη μείωση της απόδοσης. Οι εγγραφές πρέπει να
γίνονται και στους δύο δίσκους, καταναλώνοντας έτσι το διπλάσιο
εύρος ζώνης σε σχέση με ένα τόμο που δεν χρησιμοποιεί mirror.
Η ανάγνωση δεν υποφέρει από το ίδιο πρόβλημα. Μάλιστα φαίνεται
να είναι και γρηγορότερη.</para>
</listitem>
</itemizedlist>
<para><indexterm><primary>RAID-5</primary></indexterm>Μια εναλλακτική
λύση είναι το <emphasis>parity</emphasis> (ισοτιμία), το οποίο
υλοποιείται στα επίπεδα 2, 3, 4 και 5 του <acronym>RAID</acronym>.
Από τα επίπεδα αυτά, το <acronym>RAID-5</acronym> είναι το πιο
ενδιαφέρον. Ο τρόπος που υλοποιείται στο Vinum, είναι μια παραλλαγή
της οργάνωσης δεδομένων που χρησιμοποιείται στο stripe, με τη διαφορά
ότι ένα μπλοκ από κάθε stripe χρησιμοποιείται για να αποθηκεύει την
ισοτιμία ενός άλλου μπλοκ. Στο Vinum, μια συστοιχία
<acronym>RAID-5</acronym>, είναι παρόμοια με μια συστοιχία stripe,
εκτός από το γεγονός ότι υλοποιεί <acronym>RAID-5</acronym> καθώς κάθε
stripe περιέχει και μπλοκ ισοτιμίας. Η τοποθεσία του μπλοκ ισοτιμίας,
αλλάζει από το ένα stripe στο επόμενο, κάτι που απαιτείται από το
<acronym>RAID-5</acronym>. Οι αριθμοί στα μπλοκ δεδομένων αναφέρονται
στη σχετική αρίθμηση τους.</para>
<para>
<figure id="vinum-raid5-org">
<title>RAID-5 Organization</title>
<graphic fileref="vinum/vinum-raid5-org"/>
</figure>
</para>
<para>Σε σύγκριση με το mirror, το <acronym>RAID-5</acronym> έχει το
πλεονέκτημα να απαιτεί σημαντικά λιγότερο χώρο αποθήκευσης. Η ταχύτητα
ανάγνωσης είναι ίδια με το stripe, αλλά η εγγραφή είναι σημαντικά πιο
αργή, περίπου το 25% της απόδοσης κατά την ανάγνωση. Αν ένας δίσκος
χαλάσει, η συστοιχία εξακολουθεί να λειτουργεί σε ελαττωμένη (degraded)
κατάσταση: η ανάγνωση από τους δίσκους που λειτουργούν κανονικά
συνεχίζεται απροβλημάτιστα, αλλά η ανάγνωση δεδομένων που βρίσκονταν
στον προβληματικό δίσκο πρέπει να επαναϋπολογιστεί με βάση τα
αντίστοιχα μπλοκ ισοτιμίας που βρίσκονται σε όλους τους άλλους
δίσκους.</para>
</sect1>
<sect1 id="vinum-objects">
<title>Αντικείμενα του Vinum</title>
<para>Για την αντιμετώπιση των παραπάνω προβλημάτων, το Vinum υλοποιεί μια
ιεραρχία αντικειμένων τεσσάρων επιπέδων:</para>
<itemizedlist>
<listitem>
<para>Το πλέον ορατό αντικείμενο είναι ο εικονικός δίσκος, ο οποίος
καλείται και <emphasis>τόμος (volume)</emphasis>. Οι τόμοι έχουν
ουσιαστικά τις ίδιες ιδιότητες με ένα δίσκο του &unix;, αν και
υπάρχουν κάποιες μικρές διαφορές. Δεν υπάρχουν περιορισμοί όσο
αφορά το μέγεθος τους.</para>
</listitem>
<listitem>
<para>Οι τόμοι αποτελούνται από <emphasis>plex</emphasis>, και κάθε
ένα από αυτά αντιπροσωπεύει το συνολικό χώρο διευθύνσεων ενός
τόμου. Αυτό το επίπεδο στην ιεραρχία παρέχει τη δυνατότητα
redundancy. Μπορείτε να σκεφτείτε τα plex ως μεμονωμένους δίσκους
σε μια συστοιχία mirror, όπου κάθε ένα περιέχει τα ίδια
δεδομένα.</para>
</listitem>
<listitem>
<para>Καθώς το Vinum υπάρχει μέσα στο πλαίσιο λειτουργιών του &unix;
που χρησιμοποιείται για την αποθήκευση σε δίσκους, θα μπορούσε
να χρησιμοποιήσει τις κατατμήσεις του &unix; ως το δομικό στοιχείο
για τη δημιουργία των plex. Στην πραγματικότητα, η λογική αυτή
αποδεικνύεται ιδιαίτερα περιοριστική: οι δίσκοι στο &unix; μπορούν
να έχουν περιορισμένο αριθμό κατατμήσεων. Αντίθετα, το Vinum
υποδιαιρεί μια μόνο κατάτμηση του &unix;
(τον <emphasis>οδηγό</emphasis>) σε συνεχόμενες περιοχές που
καλούνται <emphasis>υποδίσκοι (subdisks)</emphasis>. Οι υποδίσκοι
χρησιμοποιούνται ως τα δομικά στοιχεία για τα plex.</para>
</listitem>
<listitem>
<para>Οι υποδίσκοι βρίσκονται σε <emphasis>οδηγούς</emphasis> Vinum,
που τη δεδομένη στιγμή είναι κατατμήσεις του &unix;. Οι οδηγοί του
Vinum μπορούν να περιέχουν οποιοδήποτε αριθμό από υποδίσκους. Με
εξαίρεση μια μικρή περιοχή στην αρχή του δίσκου (η οποία
χρησιμοποιείται για την αποθήκευση δεδομένων ρύθμισης και
κατάστασης) όλος ο υπόλοιπος οδηγός είναι διαθέσιμος για αποθήκευση
δεδομένων.</para>
</listitem>
</itemizedlist>
<para>Οι παρακάτω ενότητες περιγράφουν τον τρόπο με τον οποίο αυτά τα
αντικείμενα παρέχουν την λειτουργικότητα που απαιτείται από το
Vinum.</para>
<sect2>
<title>Μέγεθος Τόμου</title>
<para>Τα plex μπορούν να περιλαμβάνουν πολλαπλούς υποδίσκους, που
κατανέμονται σε όλους τους οδηγούς του Vinum. Σαν αποτέλεσμα, το
μέγεθος ενός συγκεκριμένου δίσκου δεν περιορίζει το μέγεθος ούτε του
plex, ούτε του τόμου.</para>
</sect2>
<sect2>
<title>Πλεονάζουσα (Redundant) Αποθήκευση Δεδομένων</title>
<para>Το Vinum υλοποιεί το mirroring προσαρτώντας πολλαπλά plex σε
ένα τόμο. Κάθε plex είναι μια αναπαράσταση των δεδομένων ενός τόμου.
Ένας τόμος μπορεί να περιέχει μεταξύ ενός και οκτώ plex.</para>
<para>Αν και ένα plex αντιπροσωπεύει τα πλήρη δεδομένα ενός τόμου,
είναι πιθανόν κάποια μέρη της αναπαράστασης να λείπουν από το φυσικό
μέσο, είτε επειδή έχει σχεδιαστεί με αυτό το τρόπο (αν δεν έχει
οριστεί υποδίσκος για κάποια τμήματα του plex) ή από πρόβλημα (ως
αποτέλεσμα της αποτυχίας κάποιου δίσκου). Όσο υπάρχει τουλάχιστον
ένα plex που μπορεί να παρέχει τα δεδομένα για την πλήρη περιοχή
διευθύνσεων του τόμου, ο τόμος είναι πλήρως λειτουργικός.</para>
</sect2>
<sect2>
<title>Θέματα Απόδοσης</title>
<para>Το Vinum υλοποιεί τόσο συνένωση όσο και striping σε επίπεδο
plex:</para>
<itemizedlist>
<listitem>
<para>Ένα <emphasis>plex συνένωσης (concatenated)</emphasis>
χρησιμοποιεί την περιοχή διευθύνσεων κάθε υποδίσκου με τη
σειρά.</para>
</listitem>
<listitem>
<para>Ένα <emphasis>striped plex</emphasis> γράφει τα δεδομένα
σε λωρίδες (stripes) που κατανέμονται σε κάθε υποδίσκο. Όλοι οι
υποδίσκοι πρέπει να έχουν το ίδιο μέγεθος και πρέπει να υπάρχουν
τουλάχιστον δύο υποδίσκοι, για να ξεχωρίζουν σε σχέση με το plex
συνένωσης.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Είδη Οργάνωσης Plex</title>
<para>Η έκδοση του Vinum που παρέχεται με το &os;&nbsp;&rel.current;
υλοποιεί δύο είδη plex:</para>
<itemizedlist>
<listitem>
<para>Τα plex συνένωσης προσφέρουν τη μεγαλύτερη ευελιξία: μπορούν
να περιέχουν οποιοδήποτε αριθμό υποδίσκων, και οι υποδίσκοι αυτοί
μπορεί να είναι διαφορετικού μεγέθους. Το plex μπορεί να
επεκταθεί προσθέτοντας περισσότερους υποδίσκους. Χρειάζονται
λιγότερο χρόνο <acronym>CPU</acronym> σε σχέση με τα stripes, αν
και η διαφορά στη χρήση της <acronym>CPU</acronym> δεν είναι
μετρήσιμη. Από την άλλη μεριά, είναι πιο επιρρεπή σε
μη-ισορροπημένη λειτουργία, όπου ένας δίσκος είναι πολύ ενεργός
και οι υπόλοιποι αδρανούν.</para>
</listitem>
<listitem>
<para>Το μεγαλύτερο πλεονέκτημα των stripes
(<acronym>RAID-0</acronym>), είναι ότι έχουν πιο ισορροπημένη
λειτουργία: επιλέγοντας το σωστό μέγεθος λωρίδας (περίπου
256&nbsp;kB), μπορείτε να εξισορροπήσετε το φορτίο σε κάθε δίσκο
του plex. Τα μειονεκτήματα αυτής της μεθόδου είναι (ελαφρά) πιο
πολύπλοκος κώδικας και περιορισμοί στους υποδίσκους: πρέπει όλοι
να είναι το ίδιο μέγεθος και η επέκταση ενός plex με προσθήκη
περισσότερων δίσκων είναι τόσο πολύπλοκη που τη δεδομένη στιγμή
το Vinum δεν την υλοποιεί. Το Vinum επίσης επιβάλλει ένα ακόμα
απλοϊκό περιορισμό: ένα plex τύπου stripe πρέπει να διαθέτει
υποχρεωτικά δύο τουλάχιστον υποδίσκους, διαφορετικά είναι
αδύνατο να το ξεχωρίσουμε από ένα plex συνένωσης.</para>
</listitem>
</itemizedlist>
<para>Ο <xref linkend="vinum-comparison"/> δείχνει περιληπτικά τα
πλεονεκτήματα και μειονεκτήματα κάθε είδους οργάνωσης plex.</para>
<table id="vinum-comparison" frame="none">
<title>Είδη Οργάνωσης Vinum Plex</title>
<tgroup cols="5">
<thead>
<row>
<entry>Τύπος plex</entry>
<entry>Ελάχιστο πλήθος υποδίσκων</entry>
<entry>Δυνατότητα προσθήκης υποδίσκων</entry>
<entry>Οι υποδίσκοι πρέπει να είναι ίδιου μεγέθους</entry>
<entry>Εφαρμογή</entry>
</row>
</thead>
<tbody>
<row>
<entry>συνένωσης (concatenated)</entry>
<entry>1</entry>
<entry>ναι</entry>
<entry>όχι</entry>
<entry>Αποθήκευση μεγάλου όγκου δεδομένων με μέγιστη ευελιξία
στον τρόπο κατανομής και μέτρια απόδοση.</entry>
</row>
<row>
<entry>striped</entry>
<entry>2</entry>
<entry>όχι</entry>
<entry>ναι</entry>
<entry>Υψηλή απόδοση σε συνδυασμό με πολύ καλές ταχύτητες σε
καταστάσεις πολλαπλής πρόσβασης.</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
</sect1>
<sect1 id="vinum-examples">
<title>Μερικά Παραδείγματα</title>
<para>Το Vinum διατηρεί μια
<emphasis>βάση δεδομένων με τις ρυθμίσεις του</emphasis> η οποία
περιγράφει τα αντικείμενα τα οποία γνωρίζει ένα συγκεκριμένο σύστημα.
Αρχικά, ο χρήστης δημιουργεί αυτή τη βάση δεδομένων από ένα ή
περισσότερα αρχεία ρυθμίσεων, με την βοήθεια του προγράμματος
&man.gvinum.8;. Το vinum αποθηκεύει ένα αντίγραφο της βάσης
δεδομένων σε κάθε slice του δίσκου (που το Vinum αποκαλεί
<emphasis>συσκευή</emphasis>) που βρίσκεται υπό τον έλεγχο του.
Η βάση δεδομένων ανανεώνεται σε κάθε αλλαγή κατάστασης, ώστε
όλα τα αντικείμενα του Vinum να επανέρχονται στη σωστή κατάσταση μετά
από μια επανεκκίνηση.</para>
<sect2>
<title>Το Αρχείο Ρυθμίσεων</title>
<para>Το αρχείο ρυθμίσεων περιγράφει τα μεμονωμένα αντικείμενα του
Vinum. Ο ορισμός για ένα απλό τόμο μπορεί να μοιάζει με τον
παρακάτω:</para>
<programlisting>
drive a device /dev/da3h
volume myvol
plex org concat
sd length 512m drive a</programlisting>
<para>Αυτό το αρχείο περιγράφει τέσσερα αντικείμενα του Vinum:</para>
<itemizedlist>
<listitem>
<para>Η γραμμή <emphasis>drive</emphasis> περιγράφει μια κατάτμηση
δίσκου (<emphasis>οδηγού</emphasis>) και τη θέση της σε σχέση με
το φυσικό δίσκο. Δίνεται σε αυτή το συμβολικό όνομα
<emphasis>a</emphasis>. Αυτός ο διαχωρισμός των συμβολικών από
τα πραγματικά ονόματα συσκευών, μας επιτρέπει να μεταφέρουμε
δίσκους από μια θέση σε μια άλλη χωρίς να προκληθεί
σύγχυση.</para>
</listitem>
<listitem>
<para>Η γραμμή <emphasis>volume</emphasis> περιγράφει ένα τόμο.
Το μόνο απαιτούμενο χαρακτηριστικό εδώ είναι το όνομα, στην
περίπτωση μας <emphasis>myvol</emphasis>.</para>
</listitem>
<listitem>
<para>Η γραμμή <emphasis>plex</emphasis> ορίζει ένα plex.
Η μόνη απαραίτητη παράμετρος είναι το είδος της οργάνωσης, στη
συγκεκριμένη περίπτωση το <emphasis>concat</emphasis>. Δεν
είναι απαραίτητο να δοθεί όνομα: το σύστημα παράγει αυτόματα
ένα όνομα χρησιμοποιώντας το όνομα του τόμου και την κατάληξη
<emphasis>.p</emphasis><emphasis>x</emphasis>, όπου το
<emphasis>x</emphasis> είναι ο αριθμός του plex στον τόμο. Έτσι,
αυτό το plex θα καλείται <emphasis>myvol.p0</emphasis>.</para>
</listitem>
<listitem>
<para>Η γραμμή <emphasis>sd</emphasis> περιγράφει ένα υποδίσκο.
Οι ελάχιστες απαιτούμενες προδιαγραφές είναι το όνομα ενός
δίσκου στον οποίο θα αποθηκευτεί, και το μήκος του υποδίσκου.
Όπως συμβαίνει και με τα plex, δεν απαιτείται όνομα:
το σύστημα αποδίδει ονόματα αυτόματα, χρησιμοποιώντας ως σημείο
εκκίνησης το όνομα του plex και προσθέτοντας την κατάληξη
<emphasis>.s</emphasis><emphasis>x</emphasis>, όπου το
<emphasis>x</emphasis> είναι ο αριθμός του υποδίσκου στο plex.
Έτσι, το Vinum δίνει σε αυτόν τον υποδίσκο το όνομα
<emphasis>myvol.p0.s0</emphasis>.</para>
</listitem>
</itemizedlist>
<para>Μετά την επεξεργασία αυτού του αρχείου, το &man.gvinum.8; παράγει
την ακόλουθη έξοδο:</para>
<programlisting width="97">
&prompt.root; gvinum -&gt; <userinput>create config1</userinput>
Configuration summary
Drives: 1 (4 configured)
Volumes: 1 (4 configured)
Plexes: 1 (8 configured)
Subdisks: 1 (16 configured)
D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB</programlisting>
<para>Η παραπάνω έξοδος χρησιμοποιεί τη μορφή συντομευμένης λίστας του
&man.gvinum.8;. Η γραφική απεικόνιση φαίνεται στο <xref
linkend="vinum-simple-vol"/>.</para>
<para>
<figure id="vinum-simple-vol">
<title>Ένας Απλός Τόμος Vinum</title>
<graphic fileref="vinum/vinum-simple-vol"/>
</figure>
</para>
<para>Στο σχήμα αυτό (καθώς και σε αυτά που ακολουθούν) υπάρχει η
αναπαράσταση ενός τόμου που περιέχει τα plex, τα οποία με τη
σειρά τους περιέχουν τους υποδίσκους. Σε αυτό το απλουστευμένο
παράδειγμα, ο τόμος περιέχει ένα plex και το plex περιέχει ένα
υποδίσκο.</para>
<para>Ο τόμος αυτός δεν έχει κάποιο συγκεκριμένο
πλεονέκτημα σε σχέση με μια συμβατική κατάτμηση δίσκου. Περιέχει
ένα μόνο plex, άρα δεν έχει κάποια ικανότητα ανοχής σφαλμάτων.
Το plex περιέχει επίσης ένα υποδίσκο, και έτσι δεν υπάρχει διαφορά
στην κατανομή χώρου σε σχέση με μια συμβατική κατάτμηση. Στις
επόμενες ενότητες θα δείξουμε διαφορετικές και πιο ενδιαφέρουσες
μεθόδους ρύθμισης.</para>
</sect2>
<sect2>
<title>Αυξημένη Αξιοπιστία: Mirroring</title>
<para>Η αξιοπιστία ενός τόμου μπορεί να αυξηθεί μέσω του mirroring
(καθρεπτισμού). Όταν σχεδιάζετε ένα τόμο στον οποίο θα γίνει
mirroring, είναι σημαντικό να εξασφαλίσετε ότι οι υποδίσκοι σε κάθε
plex είναι σε διαφορετικούς οδηγούς, ώστε η αποτυχία ενός δίσκου να
μην προκαλέσει παύση λειτουργίας και στα δύο plex. Το παρακάτω
παράδειγμα δείχνει πως μπορεί να γίνει mirroring ενός τόμου:</para>
<programlisting>
drive b device /dev/da4h
volume mirror
plex org concat
sd length 512m drive a
plex org concat
sd length 512m drive b</programlisting>
<para>Στο παράδειγμα αυτό, δεν ήταν απαραίτητο να καθοριστεί ξανά ο
οδηγός <emphasis>a</emphasis>, καθώς το Vinum διαθέτει ήδη τις
αντίστοιχες καταχωρίσεις στη βάση δεδομένων με τις ρυθμίσεις του.
Μετά την επεξεργασία των παραπάνω ορισμών, η ρύθμιση μοιάζει με
την παρακάτω:</para>
<programlisting width="97">
Drives: 2 (4 configured)
Volumes: 2 (4 configured)
Plexes: 3 (8 configured)
Subdisks: 3 (16 configured)
D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)
D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB</programlisting>
<para>Το <xref linkend="vinum-mirrored-vol"/> αναπαριστά αυτή τη δομή
γραφικά.</para>
<para>
<figure id="vinum-mirrored-vol">
<title>Ένας Mirrored Τόμος Vinum </title>
<graphic fileref="vinum/vinum-mirrored-vol"/>
</figure>
</para>
<para>Στο παράδειγμα αυτό, κάθε plex περιέχει την πλήρη περιοχή
διευθύνσεων, μεγέθους 512&nbsp;MB. Όπως και στο προηγούμενο
παράδειγμα, κάθε plex περιέχει ένα μοναδικό υποδίσκο.</para>
</sect2>
<sect2>
<title>Βελτιστοποιώντας την Απόδοση</title>
<para>Ο mirrored τόμος του προηγούμενου παραδείγματος παρουσιάζει
μεγαλύτερη ανοχή σφαλμάτων σε σχέση με ένα τόμο που δεν χρησιμοποιεί
mirror, αλλά η απόδοση του είναι μικρότερη: κάθε εγγραφή στον
τόμο πρέπει να γίνεται και στους δύο δίσκους, χρησιμοποιώντας έτσι
μεγαλύτερο ποσοστό του διαθέσιμου εύρους ζώνης. Οι απαιτήσεις που
ενδεχομένως έχουμε για απόδοση, απαιτούν διαφορετική προσέγγιση:
αντί να χρησιμοποιήσουμε mirror, μπορούμε να δημιουργήσουμε λωρίδες
αποθήκευσης (stripes) σε όσο το δυνατόν περισσότερους δίσκους.
Η παρακάτω ρύθμιση δείχνει ένα τόμο στον οποίο το plex έχει γίνει
stripe σε τέσσερις δίσκους:</para>
<programlisting>
drive c device /dev/da5h
drive d device /dev/da6h
volume stripe
plex org striped 512k
sd length 128m drive a
sd length 128m drive b
sd length 128m drive c
sd length 128m drive d</programlisting>
<para>Όπως και προηγουμένως, δεν χρειάζεται να ορίσουμε ξανά τους
δίσκους που είναι ήδη γνωστοί στο Vinum. Μετά την επεξεργασία του
παραπάνω ορισμού, η ρύθμιση θα μοιάζει με την παρακάτω:</para>
<programlisting width="92">
Drives: 4 (4 configured)
Volumes: 3 (4 configured)
Plexes: 4 (8 configured)
Subdisks: 7 (16 configured)
D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)
D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)
D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)
D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
V striped State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
P striped.p1 State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
S striped.p0.s0 State: up PO: 0 B Size: 128 MB
S striped.p0.s1 State: up PO: 512 kB Size: 128 MB
S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB
S striped.p0.s3 State: up PO: 1536 kB Size: 128 MB</programlisting>
<para>
<figure id="vinum-striped-vol">
<title>Ένας Striped Τόμος Vinum</title>
<graphic fileref="vinum/vinum-striped-vol"/>
</figure>
</para>
<para>Αυτός ο τόμος αναπαρίσταται γραφικά στο
<xref linkend="vinum-striped-vol"/>. Η απόχρωση της λωρίδας
αντιπροσωπεύει τη θέση της μέσα στην περιοχή διευθύνσεων του plex:
οι ανοιχτόχρωμες λωρίδες είναι οι πρώτες, οι σκουρόχρωμες είναι οι
τελευταίες.</para>
</sect2>
<sect2>
<title>Αξιοπιστία και Απόδοση</title>
<para><anchor id="vinum-resilience"/>Με το κατάλληλο υλικό, είναι δυνατόν
να δημιουργηθούν τόμοι οι οποίοι να παρουσιάζουν τόσο μεγάλη ανοχή
σε σφάλματα, όσο και αυξημένη απόδοση σε σχέση με τις τυποποιημένες
κατατμήσεις του &unix;. Ένα τυπικό αρχείο ρυθμίσεων θα μοιάζει με το
παρακάτω:</para>
<programlisting>
volume raid10
plex org striped 512k
sd length 102480k drive a
sd length 102480k drive b
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
plex org striped 512k
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
sd length 102480k drive a
sd length 102480k drive b</programlisting>
<para>Οι υποδίσκοι του δεύτερου plex έχουν μετατεθεί κατά δύο οδηγούς
σε σχέση με αυτούς του πρώτου plex: αυτό εξασφαλίζει ότι οι εγγραφές
δεν γίνονται στους ίδιους υποδίσκους, ακόμα και αν μια μεταφορά
χρησιμοποιεί και τους δύο δίσκους.</para>
<para>Το <xref linkend="vinum-raid10-vol"/> αναπαριστά γραφικά τη δομή
αυτού του τόμου.</para>
<para>
<figure id="vinum-raid10-vol">
<title>Ένας Mirrored και Striped Τόμος του Vinum</title>
<graphic fileref="vinum/vinum-raid10-vol"/>
</figure>
</para>
</sect2>
</sect1>
<sect1 id="vinum-object-naming">
<title>Ονομασία Αντικειμένων</title>
<para>Όπως περιγράψαμε παραπάνω, το Vinum αποδίδει προεπιλεγμένα ονόματα
σε plex και υποδίσκους, αν και υπάρχει η δυνατότητα να τα
παρακάμψετε. Αυτό ωστόσο δεν συνίσταται: η εμπειρία που έχουμε από
το διαχειριστή τόμων VERITAS (ο οποίος επιτρέπει ελεύθερη απόδοση
ονομάτων στα αντικείμενα) έχει δείξει ότι αυτού του είδους η ευελιξία
δεν προσφέρει σημαντικά πλεονεκτήματα, και μπορεί να προκαλέσει
σύγχυση.</para>
<para>Τα ονόματα μπορεί να περιέχουν οποιοδήποτε μη-κενό χαρακτήρα, αλλά
συνίσταται να περιοριστείτε στη χρήση γραμμάτων, αριθμών και της κάτω
παύλας. Τα ονόματα των τόμων, των plex και των υποδίσκων μπορεί να
είναι μέχρι 64 χαρακτήρες, ενώ τα ονόματα των δίσκων μπορεί να είναι
μέχρι 32 χαρακτήρες.</para>
<para>Τα αρχεία συσκευών του Vinum δημιουργούνται στον κατάλογο
<filename class="directory">/dev/gvinum</filename>. Με τις ρυθμίσεις
που φαίνονται παραπάνω, το Vinum θα δημιουργήσει τα παρακάτω αρχεία
συσκευών:</para>
<itemizedlist>
<listitem>
<para>Καταχωρίσεις συσκευών για κάθε τόμο. Αυτές είναι και οι κύριες
συσκευές που χρησιμοποιεί το Vinum. Με τις ρυθμίσεις που δείξαμε
παραπάνω, θα έχουμε τις συσκευές:
<filename class="devicefile">/dev/gvinum/myvol</filename>,
<filename class="devicefile">/dev/gvinum/mirror</filename>,
<filename class="devicefile">/dev/gvinum/striped</filename>,
<filename class="devicefile">/dev/gvinum/raid5</filename> και
<filename class="devicefile">/dev/gvinum/raid10</filename>.</para>
</listitem>
<listitem>
<para>Όλοι οι τόμοι διαθέτουν απευθείας καταχωρίσεις στον κατάλογο
<filename class="directory">/dev/gvinum/</filename>.</para>
</listitem>
<listitem>
<para>Οι κατάλογοι
<filename class="directory">/dev/gvinum/plex</filename> και
<filename class="directory">/dev/gvinum/sd</filename>, που
περιέχουν τα αρχεία συσκευών για κάθε plex και υποδίσκο
αντίστοιχα.</para>
</listitem>
</itemizedlist>
<para>Για παράδειγμα, θεωρήστε το παρακάτω αρχείο ρυθμίσεων:</para>
<programlisting>
drive drive1 device /dev/sd1h
drive drive2 device /dev/sd2h
drive drive3 device /dev/sd3h
drive drive4 device /dev/sd4h
volume s64 setupstate
plex org striped 64k
sd length 100m drive drive1
sd length 100m drive drive2
sd length 100m drive drive3
sd length 100m drive drive4</programlisting>
<para>Μετά την επεξεργασία αυτού του αρχείου, το &man.gvinum.8; θα
δημιουργήσει την ακόλουθη δομή στον κατάλογο
<filename class="directory">/dev/gvinum</filename>:</para>
<programlisting>
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex
crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd
/dev/vinum/plex:
total 0
crwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0
/dev/vinum/sd:
total 0
crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0
crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1
crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2
crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3</programlisting>
<para>Αν και συνίσταται να μην δίνονται συγκεκριμένα ονόματα στα plex
και τους υποδίσκους, θα πρέπει να δοθούν ονόματα στους δίσκους του
Vinum. Με τον τρόπο αυτό, ο δίσκος αναγνωρίζεται αυτόματα ακόμα και
αν αλλάξει θέση. Τα ονόματα των δίσκων μπορεί να έχουν μέγεθος μέχρι
32 χαρακτήρες.</para>
<sect2>
<title>Δημιουργία Συστημάτων Αρχείων</title>
<para>Οι τόμοι δείχνουν όμοιοι με τους δίσκους όσο αφορά το σύστημα,
με μια εξαίρεση. Αντίθετα με τους δίσκους του &unix;, το Vinum δεν
δημιουργεί κατατμήσεις στους τόμους, και έτσι απουσιάζει από αυτούς
ο αντίστοιχος πίνακας κατατμήσεων. Αυτό απαιτεί την τροποποίηση
κάποιων βοηθητικών προγραμμάτων και ειδικότερα του &man.newfs.8;, το
οποίο στις προηγούμενες υλοποιήσεις του προσπαθούσε να ερμηνεύσει
το τελευταίο γράμμα ενός τόμου Vinum ως αναγνωριστικό της κατάτμησης.
Για παράδειγμα, ένας κανονικός δίσκος μπορεί να έχει το όνομα
<filename class="devicefile">/dev/ad0a</filename> ή
<filename class="devicefile">/dev/da2h</filename>.
Τα ονόματα αυτά αντιπροσωπεύουν την πρώτη κατάτμηση
(<devicename>a</devicename>) στον πρώτο δίσκο IDE
(<devicename>ad</devicename>) και την όγδοη κατάτμηση
(<devicename>h</devicename>) στον τρίτο (2) SCSI δίσκο
(<devicename>da</devicename>) αντίστοιχα. Σε αντίθεση, ένας τόμος
του Vinum μπορεί να ονομάζεται <filename
class="devicefile">/dev/gvinum/concat</filename>, το οποίο δεν
έχει καμιά σχέση με όνομα κατάτμησης.</para>
<para>Για να δημιουργήσετε ένα σύστημα αρχείων σε αυτό τον τόμο,
χρησιμοποιήστε την &man.newfs.8;:</para>
<screen>&prompt.root; <userinput>newfs /dev/gvinum/concat</userinput></screen>
</sect2>
</sect1>
<sect1 id="vinum-config">
<title>Ρύθμιση του Vinum</title>
<para>Το Vinum δεν υπάρχει στον πυρήνα <filename>GENERIC</filename>.
Είναι δυνατόν να δημιουργήσετε προσαρμοσμένο πυρήνα που να το περιέχει,
αλλά δεν συνίσταται. Ο συνηθισμένος τρόπος να ξεκινήσετε το Vinum,
είναι να το φορτώσετε ως άρθρωμα στον πυρήνα (<acronym>kld</acronym>).
Δεν χρειάζεται καν να χρησιμοποιήσετε την &man.kldload.8; για το
Vinum: όταν ξεκινήσετε το &man.gvinum.8;, θα γίνει έλεγχος για να
διαπιστωθεί αν το άρθρωμα είναι φορτωμένο, και αν δεν είναι θα
φορτωθεί αυτόματα.</para>
<sect2>
<title>Εκκίνηση</title>
<para>Το Vinum αποθηκεύει τις πληροφορίες για τις ρυθμίσεις του στα
slices των δίσκων, ουσιαστικά με τον ίδιο τρόπο που τις αποθηκεύει
και στα αρχεία ρυθμίσεων. Όταν το Vinum διαβάζει τη βάση δεδομένων
των ρυθμίσεων, μπορεί να αναγνωρίσει ένα αριθμό λέξεων που δεν
επιτρέπεται να εμφανιστούν στα αρχεία ρυθμίσεων. Για παράδειγμα, οι
ρυθμίσεις για κάποιο δίσκο μπορεί να περιέχουν το παρακάτω
κείμενο:</para>
<programlisting width="119">volume myvol state up
volume bigraid state down
plex name myvol.p0 state up org concat vol myvol
plex name myvol.p1 state up org concat vol myvol
plex name myvol.p2 state init org striped 512b vol myvol
plex name bigraid.p0 state initializing org raid5 512b vol bigraid
sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b
sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b
sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b
sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b
sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b
sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b
sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b
sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b
sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b</programlisting>
<para>Οι προφανείς διαφορές εδώ, είναι η παρουσία συγκεκριμένων
θέσεων και ονομάτων (και τα δύο είναι επιτρεπτά, αλλά γενικά δεν
συνίσταται η χρήση τους) και οι πληροφορίες κατάστασης (που
δεν είναι διαθέσιμες στο χρήστη). Το Vinum δεν αποθηκεύει
πληροφορίες σχετικές με τους δίσκους στις ρυθμίσεις του: απλώς
ανιχνεύει όλους τους δίσκους για κατατμήσεις που περιέχουν
ετικέτα Vinum. Αυτό επιτρέπει στο Vinum να αναγνωρίσει τους δίσκους
σωστά, ακόμα και αν τους έχει δοθεί διαφορετικό &unix;
αναγνωριστικό (ID).</para>
<sect3 id="vinum-rc-startup">
<title>Αυτόματη Εκκίνηση</title>
<para>Το <emphasis>Gvinum</emphasis> ξεκινάει πάντοτε αυτόματα
μετά την φόρτωση του αρθρώματος μέσω του &man.loader.conf.5;.
Για να φορτώσετε το άρθρωμα του <emphasis>Gvinum</emphasis> κατά
την εκκίνηση, προσθέστε τη γραμμή
<literal>geom_vinum_load="YES"</literal> στο αρχείο
<filename>/boot/loader.conf</filename>.</para>
<para>Όταν ξεκινάτε το Vinum με την εντολή
<command>gvinum start</command>, το Vinum διαβάζει τη βάση
δεδομένων ρυθμίσεων από έναν δίσκο που βρίσκεται υπό τον έλεγχο
του. Κάτω από φυσιολογικές συνθήκες, κάθε δίσκος περιέχει ένα
όμοιο αντίγραφο της βάσης, έτσι δεν έχει σημασία από ποιο δίσκο θα
γίνει η ανάγνωση. Ωστόσο, μετά από κάποιο απότομο τερματισμό
λειτουργίας, το Vinum θα πρέπει να καθορίσει ποιος δίσκος έχει το
πιο πρόσφατο αντίγραφο και να διαβάσει από εκεί τις ρυθμίσεις.
Μετά θα διορθώσει (αν χρειάζεται) τις ρυθμίσεις και στους
υπόλοιπους δίσκους.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="vinum-root">
<title>Χρήση του Vinum στο Ριζικό Σύστημα Αρχείων</title>
<para>Σε ένα μηχάνημα στο οποίο έχει γίνει πλήρες mirror στα συστήματα
αρχείων με τη χρήση του Vinum, είναι συνήθως επιθυμητό να γίνει mirror
και στο ριζικό (root) σύστημα αρχείων. Η ρύθμιση αυτή δεν είναι
τόσο απλή όσο σε ένα οποιοδήποτε σύστημα αρχείων, επειδή:</para>
<itemizedlist>
<listitem>
<para>Το ριζικό σύστημα αρχείων πρέπει να είναι διαθέσιμο από πολύ
νωρίς κατά τη διαδικασία εκκίνησης, έτσι είναι απαραίτητο οι
υποδομές του Vinum να είναι επίσης διαθέσιμες την ίδια
στιγμή.</para>
</listitem>
<listitem>
<para>Ο τόμος που περιέχει το ριζικό σύστημα αρχείων περιέχει επίσης
και τον κώδικα εκκίνησης (bootstrap) και τον πυρήνα, ο οποίος
θα πρέπει να είναι προσβάσιμος από βασικά προγράμματα
του συστήματος (π.χ. το BIOS σε μηχανήματα τύπου PC), τα οποία δεν
γνωρίζουν και δεν μπορούν να μάθουν τις λεπτομέρειες υλοποίησης του
Vinum.</para>
</listitem>
</itemizedlist>
<para>Στις επόμενες ενότητες, ο όρος <quote>ριζικός τόμος</quote>
χρησιμοποιείται γενικά για να περιγράψει τον τόμο του Vinum που
περιέχει το ριζικό σύστημα αρχείων. Είναι γενικά καλή ιδέα να
χρησιμοποιείται το όνομα <literal>"root"</literal> για αυτό τον τόμο,
αλλά αυτό δεν αποτελεί τεχνική απαίτηση. Όλα τα παραδείγματα εντολών
στις παρακάτω ενότητες χρησιμοποιούν την παραπάνω παραδοχή.</para>
<sect2>
<title>Εκκίνηση του Vinum Αρκετά Νωρίς για το Ριζικό Σύστημα
Αρχείων</title>
<para>Αυτό μπορεί να επιτευχθεί με διάφορους τρόπους:</para>
<itemizedlist>
<listitem>
<para>Το Vinum πρέπει να είναι διαθέσιμο στο πυρήνα κατά την
εκκίνηση. Για το λόγο αυτό, η μέθοδος αυτόματης εκκίνησης που
περιγράψαμε στο <xref linkend="vinum-rc-startup"/> δεν μπορεί να
χρησιμοποιηθεί σε αυτή την περίπτωση και η παράμετρος
<literal>start_vinum</literal> <emphasis>δεν</emphasis> θα πρέπει
να τεθεί όταν χρησιμοποιείται η παρακάτω διάταξη. Μια πιθανή
επιλογή είναι να μεταγλωττίσετε στατικά το Vinum στον πυρήνα
ώστε να είναι διαθέσιμο πάντα, αλλά αυτό συνήθως δεν είναι
επιθυμητό. Υπάρχει μια ακόμα διαθέσιμη επιλογή, να ορίσετε να
φορτώνεται το άρθρωμα του πυρήνα μέσω του
<filename>/boot/loader</filename> (<xref
linkend="boot-loader"/>) πριν την εκκίνηση του ίδιου του
πυρήνα. Αυτό μπορεί να επιτευχθεί με τη γραμμή:</para>
<programlisting>geom_vinum_load="YES"</programlisting>
<para>στο αρχείο <filename>/boot/loader.conf</filename>.</para>
</listitem>
<listitem>
<para>Στο <emphasis>Gvinum</emphasis>, όλη η διαδικασία εκκίνησης
γίνεται αυτόματα μετά την φόρτωση του αρθρώματος πυρήνα, έτσι
η διαδικασία που περιγράψαμε παραπάνω είναι και η μόνη που
απαιτείται.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Δημιουργία Ριζικού Τόμου Vinum με Δυνατότητα Πρόσβασης από τον
Κώδικα Εκκίνησης (Bootstrap).</title>
<para>Καθώς ο τρέχοντας κώδικας εκκίνησης του &os; έχει μέγεθος μόνο
7.5 KB, και είναι ήδη επιφορτισμένος με την ανάγνωση αρχείων (όπως το
<filename>/boot/loader</filename>) από το σύστημα αρχείων UFS, είναι
πρακτικά αδύνατο να γνωρίζει και τις απαιτούμενες εσωτερικές δομές
του Vinum ώστε να μπορεί να ερμηνεύσει τις αντίστοιχες πληροφορίες
ρύθμισης και να μάθει τις λεπτομέρειες του τόμου εκκίνησης. Για το
λόγο αυτό, χρειάζεται να χρησιμοποιήσουμε κάποια τεχνάσματα ώστε να
δώσουμε στον κώδικα εκκίνησης την ψευδαίσθηση ύπαρξης μιας κανονικής
κατάτμησης <literal>"a"</literal> που να περιέχει το ριζικό σύστημα
αρχείων.</para>
<para>Για να καταστεί αυτό δυνατό, θα πρέπει να πληρούνται ταυτόχρονα
όλες οι παρακάτω προϋποθέσεις όσο αφορά τον τόμο εκκίνησης:</para>
<itemizedlist>
<listitem>
<para>Ο τόμος εκκίνησης δεν θα πρέπει να είναι stripe ή
RAID-5.</para>
</listitem>
<listitem>
<para>Ο τόμος εκκίνησης δεν θα πρέπει να περιέχει περισσότερους
από ένα συνενωμένους υποδίσκους ανά plex.</para>
</listitem>
</itemizedlist>
<para>Σημειώστε ότι είναι συνήθως επιθυμητό και δυνατό να υπάρχουν
πολλαπλά plex, καθένα από τα οποία να είναι αντίγραφο του ριζικού
συστήματος αρχείων. Η διαδικασία εκκίνησης θα χρησιμοποιήσει ωστόσο
μόνο ένα από αυτά τα αντίγραφα για να βρει τον κώδικα εκκίνησης και
όλα τα αρχεία, μέχρι να γίνει τελικά η προσάρτηση του ριζικού
συστήματος αρχείων από τον ίδιο τον πυρήνα. Κάθε μοναδικός υποδίσκος
μέσα σε αυτά τα plex, θα χρειαστεί να διαθέτει τη δική του
ψευτο-κατάτμηση <literal>"a"</literal> ώστε η συσκευή να είναι
εκκινήσιμη. Δεν είναι απαραίτητο κάθε μια από αυτές τις
ψευτο-κατατμήσεις να βρίσκεται στην ίδια θέση μέσα στην συσκευή,
σε σχέση με άλλες συσκευές που περιέχουν plex με ριζικό σύστημα
αρχείων. Είναι όμως γενικά καλή ιδέα να δημιουργήσετε τους τόμους
του Vinum με τέτοιο τρόπο, ώστε οι συσκευές mirror που προκύπτουν να
είναι συμμετρικές για να αποφύγετε τη σύγχυση.</para>
<para>Για να δημιουργηθούν αυτές οι τύπου <literal>"a"</literal>
κατατμήσεις για κάθε συσκευή που θα περιέχει τμήματα του ριζικού
τόμου, θα πρέπει να γίνουν τα ακόλουθα:</para>
<procedure>
<step>
<para>Θα πρέπει να εξετάσετε τη θέση (την απόσταση από την αρχή της
συσκευής) και το μέγεθος της συσκευής υποδίσκου η οποία θα είναι
μέρος του ριζικού τόμου, χρησιμοποιώντας την εντολή:</para>
<screen>&prompt.root; <userinput>gvinum l -rv root</userinput></screen>
<para>Σημειώστε ότι στο Vinum οι θέσεις και τα μεγέθη μετρούνται
σε bytes. Θα πρέπει να διαιρέσετε αυτούς τους αριθμούς με το 512
για να βρείτε τους αριθμούς μπλοκ που θα χρησιμοποιήσετε στην
εντολή <command>bsdlabel</command>.</para>
</step>
<step>
<para>Εκτελέστε την εντολή:</para>
<screen>&prompt.root; <userinput>bsdlabel -e <replaceable>devname</replaceable></userinput></screen>
<para>για κάθε συσκευή που συμμετέχει στο ριζικό τόμο.
Το <replaceable>devname</replaceable> θα πρέπει να είναι είτε το
όνομα του δίσκου (για παράδειγμα <devicename>da0</devicename>)
για δίσκους χωρίς slices (χωρίς δηλ. κατατμήσεις fdisk), ή το
όνομα του slice (για παράδειγμα,
<devicename>ad0s1</devicename>).</para>
<para>Αν υπάρχει ήδη μια κατάτμηση <literal>"a"</literal> στη
συσκευή (που πιθανώς περιέχει το ριζικό σύστημα αρχείων που ήταν
σε χρήση πριν χρησιμοποιηθεί το Vinum), θα πρέπει να μετονομαστεί
σε κάτι άλλο ώστε να εξακολουθεί να είναι προσβάσιμο
(σε περίπτωση ανάγκης), αλλά δεν θα χρησιμοποιείται πλέον από
προεπιλογή για την εκκίνηση του συστήματος. Σημειώστε ότι οι
ενεργές κατατμήσεις (όπως για παράδειγμα ένα ριζικό σύστημα
αρχείων το οποίο είναι ήδη προσαρτημένο) δεν μπορούν να
μετονομαστούν. Θα πρέπει να εκτελέσετε την εντολή
χρησιμοποιώντας την επιλογή <quote>Fixit</quote> του CD
εγκατάστασης, ή να ακολουθήσετε μια διαδικασία δύο βημάτων
(σε περίπτωση που έχετε mirror) ξεκινώντας από τον ένα δίσκο και
μετονομάζοντας τον άλλο.</para>
<para>Έπειτα θα πρέπει να προσθέσετε την απόσταση (offset, αν
υπάρχει) της κατάτμησης Vinum αυτής της συσκευής, με την απόσταση
του υποδίσκου του αντίστοιχου ριζικού τόμου της συσκευής. Η τιμή
που θα προκύψει θα είναι η απόσταση (<literal>"offset"</literal>)
για τη νέα κατάτμηση <literal>"a"</literal>. Μπορείτε να πάρετε
αυτούσια την τιμή <literal>"size"</literal> για αυτή την κατάτμηση
από τον υπολογισμό που κάνατε παραπάνω. Το
<literal>"fstype"</literal> θα πρέπει να είναι
<literal>4.2BSD</literal>. Οι τιμές των
<literal>"fsize"</literal>, <literal>"bsize"</literal>,
και <literal>"cpg"</literal> θα πρέπει να επιλεχθούν με τέτοιο
τρόπο ώστε να ταιριάζουν με το πραγματικό σύστημα αρχείων, αν και
δεν έχουν σημασία στη συγκεκριμένη περίπτωση.</para>
<para>Με αυτό τον τρόπο, θα δημιουργηθεί μια νέα κατάτμηση
<literal>"a"</literal> η οποία επικαλύπτει την κατάτμηση του
Vinum σε αυτή τη συσκευή. Σημειώστε ότι η εντολή
<command>bsdlabel</command> θα επιτρέψει αυτή την επικάλυψη μόνο
αν η κατάτμηση του Vinum έχει επισημανθεί κατάλληλα με fstype
<literal>"vinum"</literal>.</para>
</step>
<step>
<para>Αυτό είναι όλο! Υπάρχει πλέον μια ψευτο-κατάτμηση
<literal>"a"</literal> σε κάθε συσκευή η οποία έχει αντίγραφο του
ριζικού τόμου. Συνίσταται να επαληθεύσετε ξανά το αποτέλεσμα,
χρησιμοποιώντας μια εντολή όπως την παρακάτω:</para>
<screen>&prompt.root; <userinput>fsck -n /dev/<replaceable>devname</replaceable>a</userinput></screen>
</step>
</procedure>
<para>Θα πρέπει να θυμάστε ότι οι θέσεις των αρχείων που περιέχουν
πληροφορίες ελέγχου πρέπει να είναι σχετικές ως προς το ριζικό
σύστημα αρχείων που βρίσκεται στο τόμο του Vinum, και ο οποίος
(κατά την δημιουργία καινούριου ριζικού τόμου Vinum) μπορεί να μην
ταιριάζει με το ριζικό σύστημα αρχείων που είναι ενεργό τη δεδομένη
στιγμή. Θα πρέπει ιδιαίτερα να φροντίσετε τα αρχεία
<filename>/etc/fstab</filename> και
<filename>/boot/loader.conf</filename>.</para>
<para>Στην επόμενη επανεκκίνηση, ο κώδικας εκκίνησης θα πρέπει να
εντοπίσει τις κατάλληλες πληροφορίες ελέγχου από το νέο (Vinum)
ριζικό σύστημα αρχείων και να δράσει κατάλληλα. Στο τέλος της
διαδικασίας αρχικοποίησης του πυρήνα, και μετά την αναγγελία όλων
των συσκευών, το μήνυμα το οποίο δείχνει την επιτυχή λειτουργία
του εγχειρήματος μοιάζει με το παρακάτω:</para>
<screen>Mounting root from ufs:/dev/gvinum/root</screen>
</sect2>
<sect2>
<title>Παράδειγμα Ρύθμισης Ριζικού Τόμου με Vinum</title>
<para>Μετά την ρύθμιση του ριζικού τόμου με το Vinum, η έξοδος της
εντολής <command>gvinum l -rv root</command> θα μοιάζει με την
παρακάτω:</para>
<screen>
...
Subdisk root.p0.s0:
Size: 125829120 bytes (120 MB)
State: up
Plex root.p0 at offset 0 (0 B)
Drive disk0 (/dev/da0h) at offset 135680 (132 kB)
Subdisk root.p1.s0:
Size: 125829120 bytes (120 MB)
State: up
Plex root.p1 at offset 0 (0 B)
Drive disk1 (/dev/da1h) at offset 135680 (132 kB)
</screen>
<para>Οι τιμές που θα πρέπει να σημειώσετε είναι το
<literal>135680</literal> για την απόσταση (offset σε σχέση με την
κατάτμηση <filename class="devicefile">/dev/da0h</filename>). Αυτό
μεταφράζεται σε 265 block των 512 byte για την εντολή
<command>bsdlabel</command>. Παρόμοια, το μέγεθος του ριζικού τόμου
είναι 245760 μπλοκ των 512 byte. Το <filename
class="devicefile">/dev/da1h</filename>, το οποίο περιέχει το
δεύτερο αντίγραφο του ριζικού τόμου, έχει συμμετρική ρύθμιση.</para>
<para>Το bsdlabel για αυτές τις συσκευές θα μοιάζει με το
παρακάτω:</para>
<screen>
...
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 245760 281 4.2BSD 2048 16384 0 # (Cyl. 0*- 15*)
c: 71771688 0 unused 0 0 # (Cyl. 0 - 4467*)
h: 71771672 16 vinum # (Cyl. 0*- 4467*)</screen>
<para>Μπορείτε να παρατηρήσετε ότι η παράμετρος
<literal>"size"</literal> για την ψευτο-κατάτμηση
<literal>"a"</literal> ταιριάζει με την τιμή που δείξαμε παραπάνω,
ενώ η τιμή της παραμέτρου <literal>"offset"</literal> είναι το
άθροισμα της απόστασης ανάμεσα στην κατάτμηση Vinum
<literal>"h"</literal> και της απόστασης αυτής της κατάτμησης μέσα
στη συσκευή (ή το slice). Πρόκειται για μια τυπική ρύθμιση που είναι
απαραίτητη για να αποφευχθούν τα προβλήματα που περιγράφηκαν στο
<xref linkend="vinum-root-panic"/>. Μπορείτε επίσης να δείτε ότι
ολόκληρη η κατάτμηση <literal>"a"</literal> περιέχεται αυτούσια
μέσα στην <literal>"h"</literal> η οποία και περιέχει όλες τις
πληροφορίες Vinum της συσκευής.</para>
<para>Σημειώστε ότι στο παραπάνω παράδειγμα η συσκευή χρησιμοποιείται
εξ' ολοκλήρου από το Vinum, και δεν υπάρχει κάποιο κατάλοιπο ριζικής
κατάτμησης από παλιότερη χρήση. Αυτό συμβαίνει επειδή πρόκειται για
δίσκο που χρησιμοποιήθηκε από την αρχή ως μέρος ενός συστήματος
Vinum.</para>
</sect2>
<sect2>
<title>Αντιμετώπιση Προβλημάτων</title>
<para>Σε περίπτωση προβλήματος, θα χρειαστείτε κάποια μέθοδο
αντιμετώπισης. Η παρακάτω λίστα περιέχει μερικά από τα πιο
συνηθισμένα προβλήματα και τις λύσεις τους.</para>
<sect3>
<title>Ο Κώδικας Εκκίνησης Φορτώνεται, Αλλά το Σύστημα δεν
Εκκινεί</title>
<para>Αν για οποιοδήποτε λόγο το σύστημα δεν συνεχίζει την εκκίνηση,
θα πρέπει να διακόψετε την εκκίνηση μέσα στο χρονικό διάστημα των 10
δευτερολέπτων που εμφανίζεται ο φορτωτής εκκίνησης, πιέζοντας το
πλήκτρο <keycap>space</keycap>. Μπορείτε να εξετάσετε τις τιμές
των μεταβλητών του φορτωτή
(όπως η <literal>vinum.autostart</literal>), χρησιμοποιώντας την
εντολή <command>show</command>, και να τις αλλάξετε με τις εντολές
<command>set</command> ή <command>unset</command>.</para>
<para>Αν το μοναδικό πρόβλημα ήταν η απουσία του αρθρώματος
Vinum στη λίστα της αυτόματης φόρτωσης, αρκεί να δώσετε την
εντολή <command>load geom_vinum</command>.</para>
<para>Όταν είστε έτοιμος, η εκκίνηση μπορεί να συνεχιστεί με την
εντολή <command>boot -as</command>. Οι επιλογές
<option>-as</option> θα οδηγήσουν τον πυρήνα να ρωτήσει για το
ριζικό σύστημα αρχείων που πρόκειται να προσαρτηθεί
(<option>-a</option>), και η διαδικασία εκκίνησης θα σταματήσει σε
κατάσταση ενός χρήστη (single user, λόγω της επιλογής
<option>-s</option>), όπου η προσάρτηση του ριζικού συστήματος
είναι μόνο για ανάγνωση. Με τον τρόπο αυτό, ακόμα και αν έχει
προσαρτηθεί μόνο ένα plex ενός τόμου που αποτελείται από πολλά,
δεν υπάρχει κίνδυνος να δημιουργηθεί ασυνέπεια δεδομένων μεταξύ
των plex.</para>
<para>Στην προτροπή που εμφανίζεται για το ριζικό σύστημα αρχείων που
πρόκειται να προσαρτηθεί, μπορείτε να εισάγετε οποιαδήποτε
συσκευή περιέχει ένα έγκυρο ριζικό σύστημα αρχείων. Αν το
<filename>/etc/fstab</filename> έχει ρυθμιστεί σωστά, η προεπιλογή
θα είναι κάτι σαν <literal>ufs:/dev/gvinum/root</literal>.
Μια τυπική εναλλακτική τοποθεσία θα μπορούσε να είναι το
<literal>ufs:da0d</literal>, μια υποθετική κατάτμηση
που περιέχει το παλιό (πριν το Vinum) ριζικό σύστημα αρχείων.
Αν πρόκειται να χρησιμοποιήσετε μια
από τις τύπου <literal>"a"</literal> ψευτο-κατατμήσεις που είναι
στην πραγματικότητα υποδίσκοι της ριζικής συσκευής του Vinum, θα
πρέπει να είστε προσεκτικός, γιατί αν χρησιμοποιείτε mirror θα
γίνει προσάρτηση μόνο του ενός τμήματος της συσκευής.
Αν πρόκειται να προσαρτήσετε αυτή τη συσκευή αργότερα με
δυνατότητα εγγραφής-ανάγνωσης, είναι απαραίτητο να αφαιρέσετε τα
υπόλοιπα plex του ριζικού τόμου του Vinum, καθώς αυτά θα περιέχουν
δεδομένα που δεν είναι σε συγχρονισμό με την κατάτμηση που έχετε
ήδη προσαρτήσει.</para>
</sect3>
<sect3>
<title>Φορτώνει Μόνο ο Βασικός Κώδικας Εκκίνησης</title>
<para>Αν η φόρτωση του <filename>/boot/loader</filename> δεν είναι
επιτυχής, αλλά ο βασικός κώδικας εκκίνησης (primary bootstrap)
φορτώνεται (κάτι που μπορείτε να διαπιστώσετε ελέγχοντας αν
εμφανίζεται μια παύλα στην πάνω αριστερή γωνία της οθόνης κατά το
αρχικό στάδιο εκκίνησης), μπορείτε να προσπαθήσετε να διακόψετε
τη βασική εκκίνηση σε αυτό το σημείο χρησιμοποιώντας το πλήκτρο
<keycap>space</keycap>. Με αυτό τον τρόπο, η εκκίνηση θα
σταματήσει στο στάδιο δύο (δείτε το <xref linkend="boot-boot1"/>).
Μπορείτε εδώ να προσπαθήσετε να εκκινήσετε από μια εναλλακτική
κατάτμηση, π.χ. την κατάτμηση που περιείχε το ριζικό σύστημα
αρχείων που μετακινήσατε από το <literal>"a"</literal> όταν
ξεκινήσατε να χρησιμοποιείτε το Vinum.</para>
</sect3>
<sect3 id="vinum-root-panic">
<title>Δεν Γίνεται Καμιά Εκκίνηση, ο Κώδικας Εκκίνησης Προκαλεί
Panic</title>
<para>Αυτό μπορεί να συμβεί αν ο κώδικας εκκίνησης καταστραφεί
από την εγκατάσταση του Vinum. Δυστυχώς, το Vinum την τρέχουσα
στιγμή αφήνει μόνο 4 KB ελεύθερα στην αρχή της κατάτμησης του
πριν αρχίσει να γράφει τις πληροφορίες της επικεφαλίδας του.
Ωστόσο τα στάδια ένα και δύο καθώς και το bsdlabel που
ενσωματώνεται ανάμεσα τους, χρειάζονται 8 KB. Έτσι, αν μια
κατάτμηση Vinum ξεκίναγε στην θέση 0 μέσα σε ένα slice ή δίσκο που
προορίζονταν για εκκίνηση, η εγκατάσταση του Vinum θα κατέστρεφε
τον κώδικα εκκίνησης.</para>
<para>Με τον ίδιο τρόπο, αν η παραπάνω κατάσταση επιδιορθωθεί για
παράδειγμα ξεκινώντας από ένα CD <quote>Fixit</quote> και
επανεγκαθιστώντας τον κώδικα εκκίνησης με τη βοήθεια της εντολής
<command>bsdlabel -B</command> (όπως περιγράφεται στο <xref
linkend="boot-boot1"/>), ο κώδικας εκκίνησης θα καταστρέψει την
επικεφαλίδα του Vinum, το οποίο δεν θα μπορεί πλέον να εντοπίσει
τους δίσκους του. Αν και το παραπάνω δεν καταστρέφει τα δεδομένα
ρυθμίσεων ή τα πραγματικά δεδομένα που υπάρχουν στους τόμους (και
η ανάκτηση τους είναι δυνατή αν δώσετε ξανά ακριβώς τις ίδιες
ρυθμίσεις στο Vinum με τις αρχικές σας), η κατάσταση διορθώνεται
αρκετά δύσκολα. Θα πρέπει να μετακινήσετε ολόκληρη την κατάτμηση
του Vinum τουλάχιστον κατά 4 KB ώστε να μην υπάρχει σύγκρουση
μεταξύ της επικεφαλίδας του Vinum και του κώδικα εκκίνησης.</para>
</sect3>
</sect2>
</sect1>
</chapter>