Πώς να ανακτήσετε δεδομένα και να δημιουργήσετε αποτυχημένα RAID λογισμικού - Μέρος 8


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

Σε αυτόν τον οδηγό θα συζητήσουμε πώς να δημιουργήσετε ξανά μια συστοιχία RAID λογισμικού χωρίς απώλεια δεδομένων σε περίπτωση βλάβης του δίσκου. Για συντομία, θα εξετάσουμε μόνο μια ρύθμιση RAID 1 – αλλά οι έννοιες και οι εντολές ισχύουν για όλες τις περιπτώσεις το ίδιο.

Σενάριο δοκιμής RAID

Πριν προχωρήσετε περαιτέρω, βεβαιωθείτε ότι έχετε δημιουργήσει έναν πίνακα RAID 1 ακολουθώντας τις οδηγίες που παρέχονται στο Μέρος 3 αυτής της σειράς: Πώς να ρυθμίσετε το RAID 1 (Mirror) στο Linux.

Οι μόνες παραλλαγές στην παρούσα περίπτωσή μας θα είναι:

1) μια διαφορετική έκδοση του CentOS (v7) από αυτή που χρησιμοποιείται σε αυτό το άρθρο (v6.5) και

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

Μπορείτε να το διορθώσετε εκτελώντας:

# restorecon -R /mnt/raid1

Ρύθμιση παρακολούθησης RAID

Υπάρχουν διάφοροι λόγοι για τους οποίους μια συσκευή αποθήκευσης μπορεί να αποτύχει (οι SSD έχουν μειώσει πολύ τις πιθανότητες να συμβεί αυτό, ωστόσο), αλλά ανεξάρτητα από την αιτία, μπορείτε να είστε σίγουροι ότι τα προβλήματα μπορεί να προκύψουν ανά πάσα στιγμή και πρέπει να είστε προετοιμασμένοι να αντικαταστήσετε το αποτυχημένο μέρος και να διασφαλίσει τη διαθεσιμότητα και την ακεραιότητα των δεδομένων σας.

Μια συμβουλή πρώτα. Ακόμη και όταν μπορείτε να επιθεωρήσετε το /proc/mdstat για να ελέγξετε την κατάσταση των RAID σας, υπάρχει μια καλύτερη μέθοδος που εξοικονομεί χρόνο που αποτελείται από την εκτέλεση του mdadm σε οθόνη + σάρωση λειτουργία, η οποία θα στέλνει ειδοποιήσεις μέσω email σε έναν προκαθορισμένο παραλήπτη.

Για να το ρυθμίσετε, προσθέστε την ακόλουθη γραμμή στο /etc/mdadm.conf:

MAILADDR <domain or localhost>

Στην περίπτωσή μου:

MAILADDR 

Για να εκτελέσετε το mdadm σε λειτουργία παρακολούθησης + σάρωσης, προσθέστε την ακόλουθη καταχώρηση crontab ως root:

@reboot /sbin/mdadm --monitor --scan --oneshot

Από προεπιλογή, το mdadm θα ελέγχει τις συστοιχίες RAID κάθε 60 δευτερόλεπτα και θα στέλνει μια ειδοποίηση εάν εντοπίσει κάποιο πρόβλημα. Μπορείτε να τροποποιήσετε αυτήν τη συμπεριφορά προσθέτοντας την επιλογή --delay στην παραπάνω καταχώρηση crontab μαζί με τον αριθμό των δευτερολέπτων (για παράδειγμα, --delay 1800 σημαίνει 30 λεπτά).

Τέλος, βεβαιωθείτε ότι έχετε εγκαταστήσει έναν Mail User Agent (MUA), όπως mutt ή mailx. Διαφορετικά, δεν θα λαμβάνετε ειδοποιήσεις.

Σε ένα λεπτό θα δούμε πώς μοιάζει μια ειδοποίηση που έστειλε ο mdadm.

Προσομοίωση και αντικατάσταση αποτυχημένης συσκευής αποθήκευσης RAID

Για να προσομοιώσουμε ένα πρόβλημα με μία από τις συσκευές αποθήκευσης στη συστοιχία RAID, θα χρησιμοποιήσουμε τις επιλογές --manage και --set-faulty ως εξής:

# mdadm --manage --set-faulty /dev/md0 /dev/sdc1  

Αυτό θα έχει ως αποτέλεσμα το /dev/sdc1 να επισημανθεί ως ελαττωματικό, όπως μπορούμε να δούμε στο /proc/mdstat:

Το πιο σημαντικό, ας δούμε αν λάβαμε μια ειδοποίηση μέσω email με την ίδια προειδοποίηση:

Σε αυτήν την περίπτωση, θα χρειαστεί να αφαιρέσετε τη συσκευή από τη συστοιχία λογισμικού RAID:

# mdadm /dev/md0 --remove /dev/sdc1

Στη συνέχεια, μπορείτε να το αφαιρέσετε φυσικά από το μηχάνημα και να το αντικαταστήσετε με ένα ανταλλακτικό (/dev/sdd, όπου έχει δημιουργηθεί προηγουμένως ένα διαμέρισμα τύπου fd):

# mdadm --manage /dev/md0 --add /dev/sdd1

Ευτυχώς για εμάς, το σύστημα θα ξεκινήσει αυτόματα την ανακατασκευή της συστοιχίας με το τμήμα που μόλις προσθέσαμε. Μπορούμε να το δοκιμάσουμε επισημαίνοντας το /dev/sdb1 ως ελαττωματικό, αφαιρώντας το από τον πίνακα και βεβαιώνοντας ότι το αρχείο tecmint.txt εξακολουθεί να είναι προσβάσιμο στη διεύθυνση / mnt/raid1:

# mdadm --detail /dev/md0
# mount | grep raid1
# ls -l /mnt/raid1 | grep tecmint
# cat /mnt/raid1/tecmint.txt

Η παραπάνω εικόνα δείχνει ξεκάθαρα ότι μετά την προσθήκη του /dev/sdd1 στον πίνακα ως αντικατάσταση του /dev/sdc1, η αναδόμηση των δεδομένων πραγματοποιήθηκε αυτόματα από το σύστημα χωρίς παρέμβαση από την πλευρά μας.

Αν και δεν απαιτείται αυστηρά, είναι καλή ιδέα να έχετε μια εφεδρική συσκευή στη διάθεσή σας, έτσι ώστε η διαδικασία αντικατάστασης της ελαττωματικής συσκευής με μια καλή μονάδα δίσκου να μπορεί να γίνει γρήγορα. Για να το κάνετε αυτό, ας προσθέσουμε ξανά τα /dev/sdb1 και /dev/sdc1:

# mdadm --manage /dev/md0 --add /dev/sdb1
# mdadm --manage /dev/md0 --add /dev/sdc1

Ανάρρωση από απώλεια πλεονασμού

Όπως εξηγήθηκε προηγουμένως, το mdadm θα αναδημιουργήσει αυτόματα τα δεδομένα όταν ένας δίσκος αποτύχει. Τι συμβαίνει όμως αν αποτύχουν 2 δίσκοι στη συστοιχία; Ας προσομοιώσουμε ένα τέτοιο σενάριο επισημαίνοντας τα /dev/sdb1 και /dev/sdd1 ως ελαττωματικά:

# umount /mnt/raid1
# mdadm --manage --set-faulty /dev/md0 /dev/sdb1
# mdadm --stop /dev/md0
# mdadm --manage --set-faulty /dev/md0 /dev/sdd1

Οι προσπάθειες να δημιουργήσετε ξανά τον πίνακα με τον ίδιο τρόπο που δημιουργήθηκε αυτήν τη στιγμή (ή χρησιμοποιώντας την επιλογή --assume-clean) ενδέχεται να οδηγήσουν σε απώλεια δεδομένων, επομένως θα πρέπει να αφεθεί ως έσχατη λύση.

Ας προσπαθήσουμε να ανακτήσουμε τα δεδομένα από το /dev/sdb1, για παράδειγμα, σε ένα παρόμοιο διαμέρισμα δίσκου (/dev/sde1 – σημειώστε ότι αυτό απαιτεί να δημιουργήσετε ένα διαμέρισμα του πληκτρολογήστε fd στο /dev/sde πριν συνεχίσετε) χρησιμοποιώντας ddrescue:

# ddrescue -r 2 /dev/sdb1 /dev/sde1

Λάβετε υπόψη ότι μέχρι αυτό το σημείο, δεν έχουμε αγγίξει το /dev/sdb ή το /dev/sdd, τα διαμερίσματα που ήταν μέρος του πίνακα RAID.

Τώρα ας δημιουργήσουμε ξανά τον πίνακα χρησιμοποιώντας /dev/sde1 και /dev/sdf1:

# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1

Λάβετε υπόψη ότι σε μια πραγματική κατάσταση, θα χρησιμοποιείτε συνήθως τα ίδια ονόματα συσκευών με τον αρχικό πίνακα, δηλαδή /dev/sdb1 και /dev/sdc1 μετά το οι αποτυχημένοι δίσκοι έχουν αντικατασταθεί με νέους.

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

Όταν ερωτηθείτε εάν θα συνεχίσετε να γράφετε πίνακα, πληκτρολογήστε Y και πατήστε Enter. Ο πίνακας πρέπει να ξεκινήσει και θα πρέπει να μπορείτε να παρακολουθείτε την πρόοδό του με:

# watch -n 1 cat /proc/mdstat

Όταν ολοκληρωθεί η διαδικασία, θα πρέπει να έχετε πρόσβαση στο περιεχόμενο του RAID σας:

Περίληψη

Σε αυτό το άρθρο εξετάσαμε τον τρόπο ανάκτησης από αποτυχίες RAID και απώλειες από πλεονασμό. Ωστόσο, πρέπει να θυμάστε ότι αυτή η τεχνολογία είναι μια λύση αποθήκευσης και ΔΕΝ αντικαθιστά τα αντίγραφα ασφαλείας.

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

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