Εγχειρίδιο του FreeBSD
Προηγ | Κεφάλαιο 21 Ο Διαχειριστής Τόμων Vinum | Επόμενο

# 21.6 Μερικά Παραδείγματα

Το Vinum διατηρεί μια βάση δεδομένων με τις ρυθμίσεις του η οποία περιγράφει τα αντικείμενα τα οποία γνωρίζει ένα συγκεκριμένο σύστημα. Αρχικά, ο χρήστης δημιουργεί αυτή τη βάση δεδομένων από ένα ή περισσότερα αρχεία ρυθμίσεων, με την βοήθεια του προγράμματος gvinum(8). Το vinum αποθηκεύει ένα αντίγραφο της βάσης δεδομένων σε κάθε slice του δίσκου (που το Vinum αποκαλεί συσκευή) που βρίσκεται υπό τον έλεγχο του. Η βάση δεδομένων ανανεώνεται σε κάθε αλλαγή κατάστασης, ώστε όλα τα αντικείμενα του Vinum να επανέρχονται στη σωστή κατάσταση μετά από μια επανεκκίνηση.

## 21.6.1 Το Αρχείο Ρυθμίσεων

Το αρχείο ρυθμίσεων περιγράφει τα μεμονωμένα αντικείμενα του Vinum. Ο ορισμός για ένα απλό τόμο μπορεί να μοιάζει με τον παρακάτω:

        drive a device /dev/da3h
        volume myvol
          plex org concat
            sd length 512m drive a

Αυτό το αρχείο περιγράφει τέσσερα αντικείμενα του Vinum:

- Η γραμμή drive περιγράφει μια κατάτμηση δίσκου (οδηγού) και τη θέση της σε σχέση με το φυσικό δίσκο. Δίνεται σε αυτή το συμβολικό όνομα a. Αυτός ο διαχωρισμός των συμβολικών από τα πραγματικά ονόματα συσκευών, μας επιτρέπει να μεταφέρουμε δίσκους από μια θέση σε μια άλλη χωρίς να προκληθεί σύγχυση.

- Η γραμμή volume περιγράφει ένα τόμο. Το μόνο απαιτούμενο χαρακτηριστικό εδώ είναι το όνομα, στην περίπτωση μας myvol.

- Η γραμμή plex ορίζει ένα plex. Η μόνη απαραίτητη παράμετρος είναι το είδος της οργάνωσης, στη συγκεκριμένη περίπτωση το concat. Δεν είναι απαραίτητο να δοθεί όνομα: το σύστημα παράγει αυτόματα ένα όνομα χρησιμοποιώντας το όνομα του τόμου και την κατάληξη .px, όπου το x είναι ο αριθμός του plex στον τόμο. Έτσι, αυτό το plex θα καλείται myvol.p0.

- Η γραμμή sd περιγράφει ένα υποδίσκο. Οι ελάχιστες απαιτούμενες προδιαγραφές είναι το όνομα ενός δίσκου στον οποίο θα αποθηκευτεί, και το μήκος του υποδίσκου. Όπως συμβαίνει και με τα plex, δεν απαιτείται όνομα: το σύστημα αποδίδει ονόματα αυτόματα, χρησιμοποιώντας ως σημείο εκκίνησης το όνομα του plex και προσθέτοντας την κατάληξη .sx, όπου το x είναι ο αριθμός του υποδίσκου στο plex. Έτσι, το Vinum δίνει σε αυτόν τον υποδίσκο το όνομα myvol.p0.s0.

Μετά την επεξεργασία αυτού του αρχείου, το gvinum(8) παράγει την ακόλουθη έξοδο:

          # gvinum -> create config1
          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

Η παραπάνω έξοδος χρησιμοποιεί τη μορφή συντομευμένης λίστας του gvinum(8). Η γραφική απεικόνιση φαίνεται στο Σχήμα 21-4.

Σχήμα 21-4. Ένας Απλός Τόμος Vinum

Στο σχήμα αυτό (καθώς και σε αυτά που ακολουθούν) υπάρχει η αναπαράσταση ενός τόμου που περιέχει τα plex, τα οποία με τη σειρά τους περιέχουν τους υποδίσκους. Σε αυτό το απλουστευμένο παράδειγμα, ο τόμος περιέχει ένα plex και το plex περιέχει ένα υποδίσκο.

Ο τόμος αυτός δεν έχει κάποιο συγκεκριμένο πλεονέκτημα σε σχέση με μια συμβατική κατάτμηση δίσκου. Περιέχει ένα μόνο plex, άρα δεν έχει κάποια ικανότητα ανοχής σφαλμάτων. Το plex περιέχει επίσης ένα υποδίσκο, και έτσι δεν υπάρχει διαφορά στην κατανομή χώρου σε σχέση με μια συμβατική κατάτμηση. Στις επόμενες ενότητες θα δείξουμε διαφορετικές και πιο ενδιαφέρουσες μεθόδους ρύθμισης.

## 21.6.2 Αυξημένη Αξιοπιστία: Mirroring

Η αξιοπιστία ενός τόμου μπορεί να αυξηθεί μέσω του mirroring (καθρεπτισμού). Όταν σχεδιάζετε ένα τόμο στον οποίο θα γίνει mirroring, είναι σημαντικό να εξασφαλίσετε ότι οι υποδίσκοι σε κάθε plex είναι σε διαφορετικούς οδηγούς, ώστε η αποτυχία ενός δίσκου να μην προκαλέσει παύση λειτουργίας και στα δύο plex. Το παρακάτω παράδειγμα δείχνει πως μπορεί να γίνει mirroring ενός τόμου:

       drive b device /dev/da4h
        volume mirror
          plex org concat
            sd length 512m drive a
          plex org concat
            sd length 512m drive b

Στο παράδειγμα αυτό, δεν ήταν απαραίτητο να καθοριστεί ξανά ο οδηγός a, καθώς το Vinum διαθέτει ήδη τις αντίστοιχες καταχωρίσεις στη βάση δεδομένων με τις ρυθμίσεις του. Μετά την επεξεργασία των παραπάνω ορισμών, η ρύθμιση μοιάζει με την παρακάτω:

       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

Το Σχήμα 21-5 αναπαριστά αυτή τη δομή γραφικά.

Σχήμα 21-5. Ένας Mirrored Τόμος Vinum

Στο παράδειγμα αυτό, κάθε plex περιέχει την πλήρη περιοχή διευθύνσεων, μεγέθους 512 MB. Όπως και στο προηγούμενο παράδειγμα, κάθε plex περιέχει ένα μοναδικό υποδίσκο.

## 21.6.3 Βελτιστοποιώντας την Απόδοση

Ο mirrored τόμος του προηγούμενου παραδείγματος παρουσιάζει μεγαλύτερη ανοχή σφαλμάτων σε σχέση με ένα τόμο που δεν χρησιμοποιεί mirror, αλλά η απόδοση του είναι μικρότερη: κάθε εγγραφή στον τόμο πρέπει να γίνεται και στους δύο δίσκους, χρησιμοποιώντας έτσι μεγαλύτερο ποσοστό του διαθέσιμου εύρους ζώνης. Οι απαιτήσεις που ενδεχομένως έχουμε για απόδοση, απαιτούν διαφορετική προσέγγιση: αντί να χρησιμοποιήσουμε mirror, μπορούμε να δημιουργήσουμε λωρίδες αποθήκευσης (stripes) σε όσο το δυνατόν περισσότερους δίσκους. Η παρακάτω ρύθμιση δείχνει ένα τόμο στον οποίο το plex έχει γίνει stripe σε τέσσερις δίσκους:

       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

Όπως και προηγουμένως, δεν χρειάζεται να ορίσουμε ξανά τους δίσκους που είναι ήδη γνωστοί στο Vinum. Μετά την επεξεργασία του παραπάνω ορισμού, η ρύθμιση θα μοιάζει με την παρακάτω:

       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

Σχήμα 21-6. Ένας Striped Τόμος Vinum

Αυτός ο τόμος αναπαρίσταται γραφικά στο Σχήμα 21-6. Η απόχρωση της λωρίδας αντιπροσωπεύει τη θέση της μέσα στην περιοχή διευθύνσεων του plex: οι ανοιχτόχρωμες λωρίδες είναι οι πρώτες, οι σκουρόχρωμες είναι οι τελευταίες.

## 21.6.4 Αξιοπιστία και Απόδοση

Με το κατάλληλο υλικό, είναι δυνατόν να δημιουργηθούν τόμοι οι οποίοι να παρουσιάζουν τόσο μεγάλη ανοχή σε σφάλματα, όσο και αυξημένη απόδοση σε σχέση με τις τυποποιημένες κατατμήσεις του UNIX®. Ένα τυπικό αρχείο ρυθμίσεων θα μοιάζει με το παρακάτω:

       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

Οι υποδίσκοι του δεύτερου plex έχουν μετατεθεί κατά δύο οδηγούς σε σχέση με αυτούς του πρώτου plex: αυτό εξασφαλίζει ότι οι εγγραφές δεν γίνονται στους ίδιους υποδίσκους, ακόμα και αν μια μεταφορά χρησιμοποιεί και τους δύο δίσκους.

Το Σχήμα 21-7 αναπαριστά γραφικά τη δομή αυτού του τόμου.

Σχήμα 21-7. Ένας Mirrored και Striped Τόμος του Vinum

Προηγ | Αρχή | Επόμενο
Αντικείμενα του Vinum | Πάνω | Ονομασία Αντικειμένων

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.