11 Οκτ 2017

Τι είναι το RAID ;

Τι είναι το RAID ;

Το Raid (Redundant Arrays of Independent Disks) είναι μια τεχνική για να αυξήσουμε την ασφάλεια και την ταχύτητα αποθήκευσης δεδομένων στο δίσκο . Στην πράξη , είναι 2 η περισσότεροι δίσκοι που συνεργάζονται ενώ το σύστημα τους βλέπει ως 1 δίσκο(raid array) . Τα RAID arrays τα συναντάμε σχεδόν πάντα στους server  παρά στους προσωπικούς υπολογιστές . 

Πότε αξίζει να χρησιμοποιήσουμε ένα RAID array ;

Κατα βάση 2 είναι οι λόγοι που θα μας διευκολύνει ένα RAID array :

α) Ταχύτητα . Ας υποθέσουμε ότι έχουμε ένα μεγάλο αρχείο αποθηκευμένο στο δίσκο . Όταν θέλουμε να διαβάσουμε αυτό το αρχείο θα χρειαστεί κάποιος χρόνος , αναλόγως και με την ταχύτητα του δίσκου . Αν είχαμε ένα RAID array όμως , το αρχείο θα έσπαγε αυτόματα σε κομμάτια , και το κάθε κομμάτι θα αποθηκευόταν σε διαφορετικό δίσκο . Έτσι όταν θα θέλαμε να διαβάσουμε το αρχείο αυτό , θα φόρτωνε από πολλούς δίσκους παράλληλα , και άρα θα φόρτωνε γρηγορότερα . 

β) Αξιοπιστία . Πολλές φορές χρησιμοποιούμε ένα RAID array έτσι ώστε , κάθε αρχείο να έχει και ένα αντίγραφο του σε εναν διαφορετικό δίσκο . Έτσι σε περίπτωση που υπάρχει βλαβη στον πρώτο , το αρχείο θα είναι προσβάσιμο από τον δεύτερο . Επίσης , ακόμα και σε περιπτώσεις που δεν έχουμε backup του αρχείου σε δεύτερο δίσκο ,αν πάθει βλάβη ο πρώτος , το γενικότερο σύστημα μας θα συνεχίσει να λειτουργεί . 

Εφόσον λοιπόν ένα RAID array στο σύστημα μας θα αυξήσει την ταχύτητα και την αξιοπιστία του γιατί δεν εφαρμόζεται πάντα ; 

Αρχικά για να φτιάξουμε ένα RAID array χρειαζόμαστε τουλάχιστον 2 δίσκους, άρα μιλάμε για έξτρα κόστος . Επίσης για να διαμορφωθεί και να χρησιμοποιηθεό ένα τέτοιο array , υπάρχει αυξημένη δυσκολία σε σχέση με τη χρήση απλά ενός δίσκου για αποθήκευση των αρχείων . Και ο απλός χρήστης , δεν χρείαζεται να μπει σε αυτή τη διαδικασία . Για αυτό και RAID arrays συνήθως συναντάμε σε Server δι΄΄αφορων εταιριών και όχι σε προσωπικά μηχανήματα . 

Πώς μπορεί να δημιουργηθεί ένα RAID array ;

Ένα RAID Array μπορεί να στηθεί , είτε στο λογισμικό  , είτε στο υλικό , με ένα ειδικό RAID controller . 'Ενα RAID controller δεν χρησιμοποιεί πόρους απο τον CPU όπως ένα πρόγραμμα , αλλά από την άλλη έχει κάποιο κόστος , ενώ τα προγράμματα είναι δωρεάν . Μια άλλη διαφορά είναι ότι με το λογισμικό δεν μπορούμε να κάνουμε RAID Array κατά το boot . Πρέπει να εγκαταστήσουμε πρώτα ένα λειτουργικό συστημά και μετά κάποιο πρόγραμμα που θα διαμορφώσει το RAID . Με έναν RAID controller όμως το RAID array διαμορφώνεται εξαρχής . 

Ορολογία 

Πριν προχωρήσουμε παρακάτω και δούμε τα RAID levels  πιο συγκεκριμένα ,δηλαδή το πώς δουλεύουν ακριβώς οι δίσκοι μεταξύ τους σε ένα τέτοιο array ας δούμε κάποιους βασικούς όρους . 

RAID Level Ονομάζουμε την διαμόρφωση και τις ρυθμίσεις που έχει γίνει , για το πώς θα 

επικοινωνούν και θα συνεργάζονται οι δίσκοι μεταξύ τους . 

Striping Είναι η διαδικασία που ένα μεγάλο αρχείο σπάει σε chunks και διανέμεται στους δίσκους ανάλογα με το RAID Level που έχει ρυθμιστεί .

Chunk Size Καθορίζει το μέγεθος που θα έχει κάθε chunk , όταν θα γίνει το striping . 

Parity Είναι ένας μηχανισμός , που κρατάει κάποιες πληροφορίες για κάθε chunk που γράφεται σε κάθε δίσκο , και χρησιμέυει σε περίπτωση βλάβης , ώστε να επανακτήσουμε τις πληροφορίες που χάθηκαν . 

Degraded Arrays Είναι το array , που ναι μεν είναι λειτουργικοί , αλλά υπάρχει κάποια βλάβη σε έναν απτους δίσκους . Μπορούν να επιδιορθωθούν αν αντικαταστήσουμε τον χαλασμένο δίσκο .  

Resilvering Είναι η διαδικασία 'επισκευής' ενός degraded array .

Nested Arrays Είναι RAID arrays που αποτελούν κομμάτι ενός μεγαλύτερου array.

Scrubbing
Είναι η διαδικασία ελέγχου ολόκληρου του array για πιθανά σφάλματα . Χρησιμεύει στο να δούμε ότι υπάρχει συμβατότητα μεταξύ των αρχείων που είναι στους δίσκους . 

Επίπεδα RAID

  • RAID 0 Στο RAID 0 το κάθε αρχείο σπάει σε chunks , και τα chunks γράφονται με τη σειρά στους δίσκους του συστήματος .Πχ αν έχουμε 2 δίσκους , το πρώτο chunk θα γραφτεί στον πρώτο , το δεύτερο στον δεύτερο , το τρίτο πάλι στον πρώτο κλπ . Με αυτό τον τρόπο εκμεταλλευόμαστε την ταχύτητα όλων των δίσκων , αλλά από την άλλη , επειδή ολόκληρο το αρχείο δεν υπάρχει πουθενά , αν χαλάσει ένας δίσκος θα χαθούν και τα αρχεία μας . 

  • RAID 1 Στο RAID 1 , όταν αποθηκεύουμε ένα αρχείο , αυτόματα γράφεται σε κάθε δίσκο του συστήματος . 'Ετσι σε περίπτωση που έχουμε βλάβη σε έναν δίσκο , δεν πρόκειται να χάσουμε κάποιο αρχείο . Από την άλλη , η χωρητικότητα περιορίζεται αρκετά , σαν να είχαμε έναν δίσκο δηλαδή . 

  • RAID 5 Το RAID 5 δουλεύει παρόμοια με το 0 . Δηλαδή , σπάει κάθε αρχείο σε chunks ,  και μοιράζει το κάθε chunk σειριακά στους δίσκους . Όμως , για κάθε chunk που γράφεται σε έναν δίσκο , στον επόμενο δίσκο γράφεται parity information , δηλαδή πληροφορίες για επανάκτησει των αρχείων που περιέχει το chunk του αρχείου αν πάθει κάτι ο δίσκος . 

  • RAID 6 Το RAID 6 λειτουργεί όπως ακριβώς και το 5 , μόνο που κρατάει διπλό parity information . Έτσι το σύστημα ακόμα και αν χαλάσουν 2 δίσκοι , μπορούμε να τους αντικαταστήσουμε με καινούριους και θα κανει rebuild . Βέβαια σε σχέση με το RAID 5 έχει μικρότερη χωρητικότητα , γιατι δεσμεύεται έξτρα χώρος για το διπλό parity information .