Προς το περιεχόμενο

Raid 5: Abuse του degraded mode για migration


nske

Προτεινόμενες αναρτήσεις

Καλημέρα,

 

Έχω κάποιους δίσκους, οι δύο άδειοι και οι υπόλοιποι γεμάτοι.

Ήλπιζα να φτιάξω ένα raid 5 array με τους δύο άδειους δίσκους, προσωρινά σε degraded mode, ώστε να μεταφέρω σταδιακά τα δεδομένα από 1-1 γεμάτο δίσκο, προσθέτοντάς τον στη συνέχεια στο array.

 

Δοκιμάζω το εξής:

># mdadm --create /dev/md0 --level=5 --chunk 128 --raid-devices=3 /dev/sdc /dev/sdd missing
# mdadm --assemble --force --run /dev/md0 /dev/sdc /dev/sdd

αλλά δεν δουλεύει.

 

Τυπώνει στο stdout:

>mdadm: failed to RUN_ARRAY /dev/md0: Invalid argument

, στο kernel log:

>md: personality for level 5 is not loaded!

και δεν εκκινεί το array:

># mdadm --detail /dev/md0

/dev/md0:
[...]
  Raid Devices : 3
 Total Devices : 2
[...]
   Update Time : Fri Feb 27 06:36:01 2009
         State : active, degraded, [b]Not Started[/b]
Active Devices : 2
Working Devices : 2
Failed Devices : 0
 Spare Devices : 0

        Layout : left-symmetric
    Chunk Size : 128K
[...]
   Number   Major   Minor   RaidDevice State
      0       8       32        0      active sync   /dev/sdc
      1       8       48        1      active sync   /dev/sdd
      2       0        0        2      removed

 

Απεναντίας, το ίδιο ακριβώς πράγμα σε raid 1 (με ένα device) δουλεύει μια χαρά.

 

Μήπως έχει κανείς κάποια ιδέα;

 

[EDIT] Άκυρο, είμαι βλάκας. Δεν είχα support για raid 5 στον kernel (CONFIG_MD_RAID456) :o

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κανονικά το raid 5 μοιράζει τα δεδομένα και επιπλέον parity info για αυτά κατά τέτοιο τρόπο ώστε οποιοσδήποτε ένας δίσκος αποτύχει ή αποσυνδεθεί, να είναι προσπελάσιμα (-υπολογίσιμα). Όμως αυτό το μοντέλο απαιτεί τουλάχιστον 3 δίσκους. Όταν αποτύχει κάποιος δίσκος, εφόσον δεν υπάρχει πρόσθετος αχρησιμοποίητος δίσκος συνδεδεμένος σαν "hot spare", το array μαρκάρεται σαν "degraded": το σύστημα χρειάζεται περισσότερο χρόνο για να προσπελάσει τα δεδομένα, αφού αναγκάζεται να υπολογίσει τα δεδομένα που κανονικά θα διαβάζονταν απευθείας από τον δίσκο που απέτυχε από τα parity info που βρίσκονται σε όλους τους υπόλοιπους. Εκτός αυτού, δεν υπάρχει προστασία από αποτυχία δεύτερου δίσκου του array.

 

Όμως μπορεί κάποιος να φτιάξει ένα raid 5 array εξ' αρχής σε degraded mode, ορίζοντας ότι θα αποτελείται από 3 συσκευές αλλά η τρίτη θα είναι "missing" προς το παρόν. Έτσι η διανομή των δεδομένων γίνεται αρχικά όπως σε ένα raid 0 array, χωρίς parity. Όταν όμως προστεθεί τρίτος δίσκος στο array, τότε αυτόματα αρχίζει η αναδιανομή των δεδομένων και ο υπολογισμός του parity ("reshaping") το οποίο παίρνει αρκετές ώρες. Το reshaping γίνεται και κάθε φορά που κάνεις grow ένα array (παρεμπιπτόντως το growing, η δυνατότητα δηλαδή να επεκτείνεις ένα raid 5 array με πρόσθετες συσκευές, είναι κάτι που δεν υποστηρίζεται από το ZFS :) ).Το εντυπωσιακό είναι ότι όλα αυτά γίνονται διάφανα από πίσω, χωρίς να καταλαβαίνει τίποτα το LVM ή/και το filesystem ή να επηρεάζεται η λειτουργία του συστήματος. Η μόνη παρενέργεια είναι το IO activity που αφήνει λιγότερους πόρους για άλλες απαιτητικές σε IO εργασίες.

 

Όπως είπα, εγώ το κάνω αυτό επειδή θέλω να βάλω όλους τους δίσκους μου σε ένα raid 5 array αλλά έχω μόνο 2 άδειους δίσκους και δεν έχω χώρο για backup.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 9 μήνες μετά...

Ξεθάβω αυτό το topic γιατί απλά θέλω να ευλογήσω το software raid του Linux κάπου για το πόσο αξιόπιστο και crap-proof είναι, με αφορμή μια σημερινή περιπετειούλα.

 

Να εξηγήσω κατ' αρχήν ότι πρόκειται για έναν file-server με, αυτή τη στιγμή 19 δίσκους. Επειδή οι δίσκοι είναι διαφορετικής χωρητικότητας, τους έχω χωρίσει σε 3 διαφορετικά raid5 arrays: ένα με μονάδα 200GB, ένα με μονάδα 400 και ένα με 1000.

 

Εδώ να επισημάνω ότι το Linux είναι το μοναδικό λειτουργικό απ' όσο ξέρω που επιτρέπει την επέκταση raid-5 και raid-6 arrays με νέους δίσκους, το οποίο είναι πολύ σημαντικό για έναν ιδιώτη ή μικρή εταιρία που δεν έχει την οικονομική ευχέρεια να αγοράζει τους δίσκους 10-10 εκ των προτέρων. Εκεί βασίστηκα και για αυτό που ανέφερα πιο πάνω.

 

Ο server είναι στημένος με φθηνό home-grade hardware. Οι δίσκοι είναι τοποθετημένοι εξωτερικά, σε μία αυτοσχέδια θήκη από μελαμίνη, στην οποία είναι προσαρμοσμένοι ανεμιστήρες.

 

Εκτός από τον onboard sata controller, χρησιμοποιώ και 4 άλλους, PCI και PCI express, με chips Silicon Image 3114A και 3132, οι οποίο κόστισαν γύρω στους 10 ευρώ ο ένας, με τα μεταφορικά από Hong Kong. Μακράν οι φθηνότεροι 4-port controllers που υπάρχουν (το 3132 είναι 2-port, αλλά υποστηρίζει port multiplication).

 

Αν και οι controllers δουλεύουν αξιόπιστα, το όλο setup είναι αρκετά εύθραυστο, επειδή δεν έχω αξιωθεί να φτιάξω ένα σωστό casing: τα καλώδια φεύγουν από το motherboard και πάνε σα μακαρονάδα στην εξωτερική θήκη. Τα SATA βύσματα είναι επισφαλή εκ σχεδιασμού, ακόμη και σε σταθερά συστήματα, φανταστείτε εδώ που κουμπώνουν και σχετικά οριακά, ενώ σε μερικούς δίσκους έχει λασκάρει και το πλαστικό στο οποίο υποτίθεται ότι κουμπώνει υποτυπωδώς το βύσμα.

 

Συνολικά το μηχάνημα δουλεύει αξιόπιστα σε μια ντουλάπα στο μπαλκόνι, για όσο δεν αγγίζει κάποιος τα καλλώδια. Τα προβλήματα δημιουργούνται μόνο όταν χρειαστεί να προσθέσω ή να αφαιρέσω δίσκο (3-4 φορές το χρόνο), που όλο και κάτι κουνιέται. Ή όταν πιάνει πολύς αέρας και κουνιέται ολόκληρη η ντουλάπα (σπάνιο).

 

Το συνηθισμένο πρόβλημα είναι να εξαφανιστεί κάποιος δίσκος, ή να αλλάξει η αρίθμησή του, αλλά έχω κάνει κι εγώ αρκετές απροσεξίες με αποτέλεσμα να βρεθούν raid 5 arrays με μείον 2 δίσκους και corrupt/inconsistent superblocks. Bέβαια κρατάω αναλυτικότατα backups όλων των raid και lvm superblocks και αυτό με έχει σώσει πολλές φορές. Με τη σημερινή αναβάθμιση όμως συνέβη κάτι ακόμη χειρότερο: ενώ νόμιζα ότι τα καλώδια ήταν εντάξει και το είχα αφήσει να κάνει το reshaping των δίσκων, με το array να είναι σε degraded mode (μείον ένας δίσκος), ξαφνικά ένας από τους active δίσκους άρχισε να πετάει ATA errors, ώσπου εξαφανίστηκε. Αυτό το είδα μετά από καμιά ώρα.

 

Με το πρώτο error, η διαδικασία του reshaping σταμάτησε, αλλά δύο από τους δίσκους ήταν σε κακή κατάσταση και δεν αναγνωρίζονταν καν τα supperblocks τους (πρώτη φορά που το είχα πάθει). Αφού δοκίμασα διάφορες ιδέες και καμία δε δούλεψε, έκανα το πιο επικίνδυνο: μηδένισα όλα τα superblocks και ξαναέφτιαξα το array από την αρχή με τα ίδια settings και την ίδια σειρά δίσκων. Και ναι, τελικά το Linux raid ήταν τόσο έξυπνο ώστε να βρει το παλιό, κακοποιημένο array, και να το ανακατασκευάσει!

 

Μπράβο λοιπόν στο Linux και τους developers που έφτιαξαν το RAID του και όποιος το σκέφτεται θα έλεγα να το εμπιστευθεί χωρίς δεύτερη κουβέντα. Αφού έχει αποδειχτεί τόσο ανθεκτικό στο δικό μου αναξιόπιστο hardware και setup, δεν υπάρχει περίπτωση να απογοητεύσει οποιονδήποτε.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ξεθάβω αυτό το topic γιατί απλά θέλω να ευλογήσω το software raid του Linux κάπου για το πόσο αξιόπιστο και crap-proof είναι, με αφορμή μια σημερινή περιπετειούλα.

 

Να εξηγήσω κατ' αρχήν ότι πρόκειται για έναν file-server με, αυτή τη στιγμή 19 δίσκους. Επειδή οι δίσκοι είναι διαφορετικής χωρητικότητας, τους έχω χωρίσει σε 3 διαφορετικά raid5 arrays: ένα με μονάδα 200GB, ένα με μονάδα 400 και ένα με 1000.

 

Εδώ να επισημάνω ότι το Linux είναι το μοναδικό λειτουργικό απ' όσο ξέρω που επιτρέπει την επέκταση raid-5 και raid-6 arrays με νέους δίσκους, το οποίο είναι πολύ σημαντικό για έναν ιδιώτη ή μικρή εταιρία που δεν έχει την οικονομική ευχέρεια να αγοράζει τους δίσκους 10-10 εκ των προτέρων. Εκεί βασίστηκα και για αυτό που ανέφερα πιο πάνω.

 

Ο server είναι στημένος με φθηνό home-grade hardware. Οι δίσκοι είναι τοποθετημένοι εξωτερικά, σε μία αυτοσχέδια θήκη από μελαμίνη, στην οποία είναι προσαρμοσμένοι ανεμιστήρες.

 

Εκτός από τον onboard sata controller, χρησιμοποιώ και 4 άλλους, PCI και PCI express, με chips Silicon Image 3114A και 3132, οι οποίο κόστισαν γύρω στους 10 ευρώ ο ένας, με τα μεταφορικά από Hong Kong. Μακράν οι φθηνότεροι 4-port controllers που υπάρχουν (το 3132 είναι 2-port, αλλά υποστηρίζει port multiplication).

 

Αν και οι controllers δουλεύουν αξιόπιστα, το όλο setup είναι αρκετά εύθραυστο, επειδή δεν έχω αξιωθεί να φτιάξω ένα σωστό casing: τα καλώδια φεύγουν από το motherboard και πάνε σα μακαρονάδα στην εξωτερική θήκη. Τα SATA βύσματα είναι επισφαλή εκ σχεδιασμού, ακόμη και σε σταθερά συστήματα, φανταστείτε εδώ που κουμπώνουν και σχετικά οριακά, ενώ σε μερικούς δίσκους έχει λασκάρει και το πλαστικό στο οποίο υποτίθεται ότι κουμπώνει υποτυπωδώς το βύσμα.

 

Συνολικά το μηχάνημα δουλεύει αξιόπιστα σε μια ντουλάπα στο μπαλκόνι, για όσο δεν αγγίζει κάποιος τα καλλώδια. Τα προβλήματα δημιουργούνται μόνο όταν χρειαστεί να προσθέσω ή να αφαιρέσω δίσκο (3-4 φορές το χρόνο), που όλο και κάτι κουνιέται. Ή όταν πιάνει πολύς αέρας και κουνιέται ολόκληρη η ντουλάπα (σπάνιο).

 

Το συνηθισμένο πρόβλημα είναι να εξαφανιστεί κάποιος δίσκος, ή να αλλάξει η αρίθμησή του, αλλά έχω κάνει κι εγώ αρκετές απροσεξίες με αποτέλεσμα να βρεθούν raid 5 arrays με μείον 2 δίσκους και corrupt/inconsistent superblocks. Bέβαια κρατάω αναλυτικότατα backups όλων των raid και lvm superblocks και αυτό με έχει σώσει πολλές φορές. Με τη σημερινή αναβάθμιση όμως συνέβη κάτι ακόμη χειρότερο: ενώ νόμιζα ότι τα καλώδια ήταν εντάξει και το είχα αφήσει να κάνει το reshaping των δίσκων, με το array να είναι σε degraded mode (μείον ένας δίσκος), ξαφνικά ένας από τους active δίσκους άρχισε να πετάει ATA errors, ώσπου εξαφανίστηκε. Αυτό το είδα μετά από καμιά ώρα.

 

Με το πρώτο error, η διαδικασία του reshaping σταμάτησε, αλλά δύο από τους δίσκους ήταν σε κακή κατάσταση και δεν αναγνωρίζονταν καν τα supperblocks τους (πρώτη φορά που το είχα πάθει). Αφού δοκίμασα διάφορες ιδέες και καμία δε δούλεψε, έκανα το πιο επικίνδυνο: μηδένισα όλα τα superblocks και ξαναέφτιαξα το array από την αρχή με τα ίδια settings και την ίδια σειρά δίσκων. Και ναι, τελικά το Linux raid ήταν τόσο έξυπνο ώστε να βρει το παλιό, κακοποιημένο array, και να το ανακατασκευάσει!

 

Μπράβο λοιπόν στο Linux και τους developers που έφτιαξαν το RAID του και όποιος το σκέφτεται θα έλεγα να το εμπιστευθεί χωρίς δεύτερη κουβέντα. Αφού έχει αποδειχτεί τόσο ανθεκτικό στο δικό μου αναξιόπιστο hardware και setup, δεν υπάρχει περίπτωση να απογοητεύσει οποιονδήποτε.

 

Γεια σου nske! Αυτός ο βόμβος που ακούγετε στην Αττική και τα περίεργα ατμοσφαιρικά φαινόμενα στο σύστημα σου οφείλονται; Στις επόμενες μπήρες (σύντομα ελπίζω) περιμένω να δω φωτογραφίες...

 

Στο FreeBSD παίζουν αυτά που ανέφερες;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στο FreeBSD παίζουν αυτά που ανέφερες;

Όχι, δεν υποστηρίζει growing raid5 arrays, οπότε δε θα βρισκόμουν καν σε αυτή την κατάσταση (αλλά δε θα μπορούσα και να επεκτείνω τα arrays μου). Όμως αν εξαιρέσουμε αυτό φαντάζομαι ότι και το ZFS θα είναι παρόμοια αξιόπιστο και ανθεκτικό σε κακοποίηση :-)

 

Φωτογραφίες δεν θέλεις να δεις, it's really fugly :P

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όμως αν εξαιρέσουμε αυτό φαντάζομαι ότι και το ZFS θα είναι παρόμοια αξιόπιστο και ανθεκτικό σε κακοποίηση :-)

 

Το ZFS σε solaris/opensolars ναι, σε FreeBSD μάλλον όχι ;-). Το «καλό» (ή κακό) με το ZFS είναι ότι υλοποιεί δικό του raid layer, πράγμα που επιτρέπει στο RAID-Z να κάνει διάφορα ωραία κόλπα (end-to-end checksums, χωρίς write hole).

 

Ορίστε gtroza :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραία υλοποίηση. Μπορείς να περιγράψεις λίγο πως κάνεις backup τα superblocks?

 

Και έχω αρκετές ερωτήσεις αλλά είναι hardware κυρίως και δεν ξέρω αν μπορούμε να μολύνουμε το topic...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τα σχετικά με hardware posts μεταφέρονται σε αυτό το topic που είχα ανοίξει παλιά, που είναι πιο σχετικό, για οτιδήποτε hardware-ικό συνεχίζουμε εκεί.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...