Για την αντιμετώπιση των παραπάνω προβλημάτων, το Vinum υλοποιεί μια ιεραρχία αντικειμένων τεσσάρων επιπέδων:
Το πλέον ορατό αντικείμενο είναι ο εικονικός δίσκος, ο οποίος καλείται και τόμος (volume). Οι τόμοι έχουν ουσιαστικά τις ίδιες ιδιότητες με ένα δίσκο του UNIX®, αν και υπάρχουν κάποιες μικρές διαφορές. Δεν υπάρχουν περιορισμοί όσο αφορά το μέγεθος τους.
Οι τόμοι αποτελούνται από plex, και κάθε ένα από αυτά αντιπροσωπεύει το συνολικό χώρο διευθύνσεων ενός τόμου. Αυτό το επίπεδο στην ιεραρχία παρέχει τη δυνατότητα redundancy. Μπορείτε να σκεφτείτε τα plex ως μεμονωμένους δίσκους σε μια συστοιχία mirror, όπου κάθε ένα περιέχει τα ίδια δεδομένα.
Καθώς το Vinum υπάρχει μέσα στο πλαίσιο λειτουργιών του UNIX που χρησιμοποιείται για την αποθήκευση σε δίσκους, θα μπορούσε να χρησιμοποιήσει τις κατατμήσεις του UNIX ως το δομικό στοιχείο για τη δημιουργία των plex. Στην πραγματικότητα, η λογική αυτή αποδεικνύεται ιδιαίτερα περιοριστική: οι δίσκοι στο UNIX μπορούν να έχουν περιορισμένο αριθμό κατατμήσεων. Αντίθετα, το Vinum υποδιαιρεί μια μόνο κατάτμηση του UNIX (τον οδηγό) σε συνεχόμενες περιοχές που καλούνται υποδίσκοι (subdisks). Οι υποδίσκοι χρησιμοποιούνται ως τα δομικά στοιχεία για τα plex.
Οι υποδίσκοι βρίσκονται σε οδηγούς Vinum, που τη δεδομένη στιγμή είναι κατατμήσεις του UNIX. Οι οδηγοί του Vinum μπορούν να περιέχουν οποιοδήποτε αριθμό από υποδίσκους. Με εξαίρεση μια μικρή περιοχή στην αρχή του δίσκου (η οποία χρησιμοποιείται για την αποθήκευση δεδομένων ρύθμισης και κατάστασης) όλος ο υπόλοιπος οδηγός είναι διαθέσιμος για αποθήκευση δεδομένων.
Οι παρακάτω ενότητες περιγράφουν τον τρόπο με τον οποίο αυτά τα αντικείμενα παρέχουν την λειτουργικότητα που απαιτείται από το Vinum.
Τα plex μπορούν να περιλαμβάνουν πολλαπλούς υποδίσκους, που κατανέμονται σε όλους τους οδηγούς του Vinum. Σαν αποτέλεσμα, το μέγεθος ενός συγκεκριμένου δίσκου δεν περιορίζει το μέγεθος ούτε του plex, ούτε του τόμου.
Το Vinum υλοποιεί το mirroring προσαρτώντας πολλαπλά plex σε ένα τόμο. Κάθε plex είναι μια αναπαράσταση των δεδομένων ενός τόμου. Ένας τόμος μπορεί να περιέχει μεταξύ ενός και οκτώ plex.
Αν και ένα plex αντιπροσωπεύει τα πλήρη δεδομένα ενός τόμου, είναι πιθανόν κάποια μέρη της αναπαράστασης να λείπουν από το φυσικό μέσο, είτε επειδή έχει σχεδιαστεί με αυτό το τρόπο (αν δεν έχει οριστεί υποδίσκος για κάποια τμήματα του plex) ή από πρόβλημα (ως αποτέλεσμα της αποτυχίας κάποιου δίσκου). Όσο υπάρχει τουλάχιστον ένα plex που μπορεί να παρέχει τα δεδομένα για την πλήρη περιοχή διευθύνσεων του τόμου, ο τόμος είναι πλήρως λειτουργικός.
Το Vinum υλοποιεί τόσο συνένωση όσο και striping σε επίπεδο plex:
Ένα plex συνένωσης (concatenated) χρησιμοποιεί την περιοχή διευθύνσεων κάθε υποδίσκου με τη σειρά.
Ένα striped plex γράφει τα δεδομένα σε λωρίδες (stripes) που κατανέμονται σε κάθε υποδίσκο. Όλοι οι υποδίσκοι πρέπει να έχουν το ίδιο μέγεθος και πρέπει να υπάρχουν τουλάχιστον δύο υποδίσκοι, για να ξεχωρίζουν σε σχέση με το plex συνένωσης.
Η έκδοση του Vinum που παρέχεται με το FreeBSD 9.1 υλοποιεί δύο είδη plex:
Τα plex συνένωσης προσφέρουν τη μεγαλύτερη ευελιξία: μπορούν να περιέχουν οποιοδήποτε αριθμό υποδίσκων, και οι υποδίσκοι αυτοί μπορεί να είναι διαφορετικού μεγέθους. Το plex μπορεί να επεκταθεί προσθέτοντας περισσότερους υποδίσκους. Χρειάζονται λιγότερο χρόνο CPU σε σχέση με τα stripes, αν και η διαφορά στη χρήση της CPU δεν είναι μετρήσιμη. Από την άλλη μεριά, είναι πιο επιρρεπή σε μη-ισορροπημένη λειτουργία, όπου ένας δίσκος είναι πολύ ενεργός και οι υπόλοιποι αδρανούν.
Το μεγαλύτερο πλεονέκτημα των stripes (RAID-0), είναι ότι έχουν πιο ισορροπημένη λειτουργία: επιλέγοντας το σωστό μέγεθος λωρίδας (περίπου 256 kB), μπορείτε να εξισορροπήσετε το φορτίο σε κάθε δίσκο του plex. Τα μειονεκτήματα αυτής της μεθόδου είναι (ελαφρά) πιο πολύπλοκος κώδικας και περιορισμοί στους υποδίσκους: πρέπει όλοι να είναι το ίδιο μέγεθος και η επέκταση ενός plex με προσθήκη περισσότερων δίσκων είναι τόσο πολύπλοκη που τη δεδομένη στιγμή το Vinum δεν την υλοποιεί. Το Vinum επίσης επιβάλλει ένα ακόμα απλοϊκό περιορισμό: ένα plex τύπου stripe πρέπει να διαθέτει υποχρεωτικά δύο τουλάχιστον υποδίσκους, διαφορετικά είναι αδύνατο να το ξεχωρίσουμε από ένα plex συνένωσης.
Ο Πίνακας 22-1 δείχνει περιληπτικά τα πλεονεκτήματα και μειονεκτήματα κάθε είδους οργάνωσης plex.
Πίνακας 22-1. Είδη Οργάνωσης Vinum Plex
Τύπος plex | Ελάχιστο πλήθος υποδίσκων | Δυνατότητα προσθήκης υποδίσκων | Οι υποδίσκοι πρέπει να είναι ίδιου μεγέθους | Εφαρμογή |
---|---|---|---|---|
συνένωσης (concatenated) | 1 | ναι | όχι | Αποθήκευση μεγάλου όγκου δεδομένων με μέγιστη ευελιξία στον τρόπο κατανομής και μέτρια απόδοση. |
striped | 2 | όχι | ναι | Υψηλή απόδοση σε συνδυασμό με πολύ καλές ταχύτητες σε καταστάσεις πολλαπλής πρόσβασης. |
Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την
<questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.