Αντικατάσταση μιας αποτυχημένης μονάδας δίσκου σε έναν πίνακα mdadm στο Ubuntu
Δημοσιεύθηκε: 15 Φεβρουαρίου 2025 στις 10:02:15 μ.μ. UTC
Εάν βρίσκεστε στη φοβερή κατάσταση της αποτυχίας της μονάδας δίσκου σε μια συστοιχία RAID mdadm, αυτό το άρθρο εξηγεί πώς να την αντικαταστήσετε σωστά σε ένα σύστημα Ubuntu.
Replacing a Failed Drive in an mdadm Array on Ubuntu
Οι πληροφορίες σε αυτήν την ανάρτηση βασίζονται στο Ubuntu 18.04 και στην έκδοση του mdadm που περιλαμβάνεται στα αποθετήρια του. τη στιγμή της συγγραφής του v4.1-rc1. Μπορεί να ισχύει ή να μην ισχύει για άλλες εκδόσεις.
Πρόσφατα είχα μια ξαφνική αποτυχία της μονάδας δίσκου στον διακομιστή αρχείων του σπιτιού μου, ο οποίος αποτελείται από εννέα μονάδες σε μια συστοιχία mdadm RAID-6. Αυτό είναι πάντα τρομακτικό, αλλά ευτυχώς μπόρεσα να προμηθευτώ γρήγορα μια μονάδα αντικατάστασης που παραδόθηκε ήδη την επόμενη μέρα, ώστε να ξεκινήσω την ανοικοδόμηση.
Ομολογουμένως ήμουν λίγο πολύ φθηνός όταν ρύθμισα αρχικά τον διακομιστή αρχείων. μόνο δύο από τις μονάδες είναι πραγματικές μονάδες NAS (Seagate IronWolf), ενώ οι υπόλοιπες είναι μονάδες επιτραπέζιου υπολογιστή (Seagate Barracuda). Δεν αποτελεί έκπληξη το γεγονός ότι ήταν μια από τις μονάδες επιτραπέζιου υπολογιστή που είχε εγκαταλείψει (μετά από σχεδόν τρία χρόνια υπηρεσίας, ωστόσο). Ήταν τελείως νεκρό. Μετά τη μετακίνησή του σε ένα περίβλημα USB επιτραπέζιου υπολογιστή το μόνο που έβγαλα από αυτό ήταν ένας ενοχλητικός ήχος κλικ και ούτε το Ubuntu 20.04 ούτε τα Windows 10 μπόρεσαν να το εντοπίσουν.
Λοιπόν, στο ανταλλακτικό (και ναι, η νέα μονάδα που αγόρασα ήταν IronWolf, μάθημα) - όσο τρομακτικό κι αν είναι η απώλεια μιας μονάδας δίσκου σε μια συστοιχία που λειτουργεί, είναι ακόμα πιο τρομακτικό αν δεν γνωρίζετε τη σωστή διαδικασία για την αντικατάστασή της. Δεν είναι η πρώτη φορά που πρέπει να αντικαταστήσω μια αποτυχημένη μονάδα δίσκου σε μια συστοιχία mdadm, αλλά ευτυχώς είναι τόσο σπάνιο που συνήθως πρέπει να αναζητήσω τις κατάλληλες εντολές. Αυτή τη φορά αποφάσισα να ετοιμάσω τον δικό μου μικρό οδηγό για μελλοντική αναφορά.
Επομένως, πρώτα απ 'όλα, όταν λαμβάνετε το e-mail με το τρομερό συμβάν αποτυχίας από το mdadm, πρέπει να προσδιορίσετε ποια μονάδα δίσκου απέτυχε. Σίγουρα, θα σας πει το όνομα της συσκευής (στην περίπτωσή μου /dev/sdf), αλλά πιθανώς δεν είναι προφανές ποια φυσική μονάδα δίσκου είναι στην πραγματικότητα, καθώς αυτά τα ονόματα μπορούν να αλλάξουν κατά την εκκίνηση του μηχανήματος.
Εάν δεν είστε καν σίγουροι ποιο όνομα συσκευής απέτυχε, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να μάθετε (αντικαταστήστε το /dev/md0 με τη συσκευή σας RAID):
Όπως αναφέρθηκε, στην περίπτωσή μου ήταν /dev/sdf, οπότε ας συνεχίσουμε με αυτό.
Στη συνέχεια, μπορείτε να προσπαθήσετε να βρείτε τον σειριακό αριθμό της αποτυχημένης μονάδας δίσκου εκδίδοντας αυτήν την εντολή:
(αν δεν βρεθεί το smartctl, πρέπει να εγκαταστήσετε το πακέτο smartmontools στο Ubuntu)
Ο σειριακός αριθμός μπορεί στη συνέχεια να συγκριθεί με τους σειριακούς αριθμούς στη φυσική ετικέτα των μονάδων δίσκου για να καταλάβουμε ποιος απέτυχε.
Αυτή τη φορά, όμως, δεν ήμουν τόσο τυχερός. Η μονάδα ήταν εντελώς νεκρή και αρνήθηκε ακόμη και να παράσχει SMART ή άλλα δεδομένα, συμπεριλαμβανομένου του σειριακού αριθμού.
Δεδομένου ότι είχα φυσική πρόσβαση στον διακομιστή (που πραγματικά χρειάζεστε αν πρόκειται να αντικαταστήσετε μόνοι σας μια φυσική μονάδα, υποθέτω ;-)) και ο διακομιστής λειτουργούσε όταν ο δίσκος απέτυχε (και συνέχισε να λειτουργεί καλά χάρη στον πλεονασμό του RAID-6), χρησιμοποίησα την πραγματικά πρωτόγονη, αλλά στην πραγματικότητα πολύ αποτελεσματική και προφανή, μέθοδο απλής αντιγραφής ενός μεγάλου αρχείου στον διακομιστή και παρακολουθούσε το HDD. Μέσα σε λίγα δευτερόλεπτα είχα εντοπίσει τον ένοχο.
Τώρα, προτού αφαιρέσετε τη φυσική μονάδα δίσκου, είναι καλή ιδέα να ενημερώσετε επίσημα τον mdadm για αυτήν την πρόθεση, εκδίδοντας αυτήν την εντολή (αντικαταστήστε τα ονόματα συσκευών με τα δικά σας ανάλογα με την περίπτωση):
Σε περίπτωση επιτυχίας, το mdadm θα απαντήσει με ένα μήνυμα λέγοντας ότι "αφαίρεσε" τη μονάδα δίσκου, προφανώς επειδή η συσκευή εικονικής επιδρομής εκτελείται πραγματικά εκείνη τη στιγμή.
Εάν αποτύχει με ένα μήνυμα σφάλματος παρόμοιο με το "Device or Resource Busy", μπορεί στην πραγματικότητα η mdadm να μην έχει καταχωρήσει τη μονάδα δίσκου ώστε να έχει αποτύχει εντελώς. Για να το κάνετε αυτό, εκδώστε αυτήν την εντολή (και πάλι, θυμηθείτε να αντικαταστήσετε τα ονόματα συσκευών με τα δικά σας ανάλογα με την περίπτωση):
Μετά από αυτό, θα πρέπει να μπορείτε να αφαιρέσετε τη συσκευή από τη συστοιχία με την προηγούμενη εντολή.
Τώρα ήρθε η ώρα να αντικαταστήσετε πραγματικά τη μονάδα δίσκου. Εάν είστε πραγματικά, πραγματικά - όπως, πραγματικά - βέβαιοι ότι το μηχάνημα και ο ελεγκτής σας υποστηρίζουν εναλλαγή εναλλαγής, μπορείτε να το κάνετε αυτό χωρίς να απενεργοποιήσετε το μηχάνημα. Αυτός θα ήταν ο τρόπος για να προχωρήσουμε σε κρίσιμα συστήματα παραγωγής που λειτουργούν με πραγματικό, κατάλληλο υλικό διακομιστή που ξέρετε ότι μπορεί να το χειριστεί. Ωστόσο, ο διακομιστής αρχείων του σπιτιού μου βασίζεται σε μια μητρική επιτραπέζιου υπολογιστή κατηγορίας καταναλωτών με μερικούς ελεγκτές SATA semi-noname στις υποδοχές PCIe για να παρέχει περισσότερες θύρες SATA, ωστόσο.
Αν και το SATA γενικά θα έπρεπε να υποστηρίζει την εναλλαγή εναλλαγής, δεν επρόκειτο να διακινδυνεύσω τίποτα σε αυτήν τη ρύθμιση, επομένως επέλεξα να απενεργοποιήσω το μηχάνημα κατά την αντικατάσταση της μονάδας.
Πριν το κάνετε αυτό, είναι καλή ιδέα να σχολιάσετε τη συσκευή raid στο αρχείο /etc/fstab, ώστε το Ubuntu να μην προσπαθήσει να το προσαρτήσει αυτόματα στην επόμενη εκκίνηση, επειδή μπορεί να κολλήσει και να σας αναγκάσει σε λειτουργία ανάκτησης λόγω της υποβαθμισμένης συστοιχίας RAID. Αυτό μπορεί να μην είναι μεγάλο πρόβλημα εάν πρόκειται για επιτραπέζιο σύστημα, αλλά τρέχω αυτόν τον διακομιστή χωρίς κεφαλή χωρίς συνδεδεμένη οθόνη ή πληκτρολόγιο, οπότε αυτό θα ήταν λίγο ενοχλητικό.
Μετά την εκκίνηση του μηχανήματος με εγκατεστημένη τη γυαλιστερή νέα μονάδα δίσκου, χρησιμοποιήστε lsblk ή κάποιο άλλο μέσο για να το αναγνωρίσετε. Εάν δεν έχετε αλλάξει κάτι άλλο, πιθανότατα (αλλά όχι απαραίτητα ) θα έχει το ίδιο όνομα με τη μονάδα δίσκου που αντικαταστήσατε. Στην περίπτωσή μου το έκανε, οπότε το νέο ονομάζεται επίσης /dev/sdf.
Καθώς ο πίνακας μου βασίζεται σε κατατμήσεις και όχι σε φυσικές συσκευές, χρειάστηκε να αντιγράψω τον πίνακα κατατμήσεων από μια λειτουργική μονάδα δίσκου στη νέα μονάδα δίσκου, προκειμένου να βεβαιωθώ ότι είναι ακριβώς το ίδιο. Εάν εκτελείτε τη συστοιχία σας σε φυσικές συσκευές, μπορείτε να παραλείψετε αυτό το βήμα.
Χρησιμοποίησα το sgdisk για αυτό το σκοπό, αντιγράφοντας τον πίνακα κατατμήσεων από /dev/sdc στο /dev/sdf. Φροντίστε να αντικαταστήσετε τα ονόματα συσκευών ώστε να ταιριάζουν με τα δικά σας ανάλογα με την περίπτωση.
Παρατηρήστε τη σειρά εδώ: αναφέρετε πρώτα το "to" drive! Αυτό είναι λίγο αντίθετο για μένα, αλλά απλώς βεβαιωθείτε ότι το κάνετε σωστά, ώστε να μην έχετε άλλη μια αποτυχία μονάδας δίσκου στη συστοιχία ;-)
Στη συνέχεια, για να αποφύγετε διενέξεις UUID, δημιουργήστε νέα UUID για τη νέα μονάδα δίσκου:
Και τώρα επιτέλους ήρθε η ώρα να προσθέσετε τη νέα μονάδα δίσκου στη συστοιχία και να ξεκινήσετε το πάρτι αναδόμησης! (Εντάξει, δεν είναι πραγματικά πάρτι, είναι στην πραγματικότητα μια αρκετά αργή και ενοχλητική διαδικασία, καθώς πραγματικά, πραγματικά δεν θέλετε να αποτύχει άλλος δίσκος αυτή τη στιγμή. Η μπύρα μπορεί να σας βοηθήσει όμως)
Εν πάση περιπτώσει, για να προσθέσετε τη νέα μονάδα δίσκου στη συστοιχία, εκδώστε αυτήν την εντολή (και πάλι, φροντίστε να αντικαταστήσετε τα ονόματα συσκευών με τα δικά σας ανάλογα με την περίπτωση):
Εάν όλα πάνε καλά, η μονάδα δίσκου θα προστεθεί στη συστοιχία χωρίς λόξυγκα. Πιστεύω ότι στην πραγματικότητα προστίθεται ως "hot spare" από προεπιλογή, αλλά επειδή από αυτόν τον πίνακα λείπει ένας δίσκος (αυτός που απέτυχε), τίθεται αμέσως σε χρήση και η διαδικασία ανακατασκευής θα ξεκινήσει.
Μπορείτε να το παρακολουθείτε ως εξής:
Αυτό πιθανότατα θα διαρκέσει λίγο. στον χαμηλό διακομιστή μου (με βάση σε μεγάλο βαθμό σε υλικό καταναλωτικής ποιότητας και επιτραπέζιους δίσκους, προσέξτε) ήταν σε θέση να φτάσει λίγο λιγότερο από 100 MB/sec. Λάβετε υπόψη ότι αυτό είναι το RAID-6, επομένως υπάρχουν πολλοί υπολογισμοί ισοτιμίας που σχετίζονται με μια ανακατασκευή. ένα RAID-10 θα ήταν πολύ πιο γρήγορο. Το συγκεκριμένο μηχάνημα διαθέτει τετραπύρηνο CPU AMD A10 9700E (το "E" σημαίνει ότι είναι ένα υποχρονισμένο ενεργειακά αποδοτικό μοντέλο, δηλαδή όχι εξαιρετικά γρήγορο), απλά για να σας δώσει μια ιδέα για το τι να περιμένετε. Με τις εννέα μονάδες 8 TB στη ρύθμιση μου, η πλήρης ανακατασκευή κράτησε λίγο περισσότερο από 24 ώρες.
Κατά τη διάρκεια της αναδόμησης, μπορείτε να προσαρτήσετε το σύστημα αρχείων στη συστοιχία και να το χρησιμοποιήσετε κανονικά αν θέλετε, αλλά προτιμώ να το αφήσω στην αναδόμηση μέχρι να ολοκληρωθεί. Λάβετε υπόψη ότι εάν αποτύχει μια μονάδα δίσκου, μπορεί να ακολουθήσει σύντομα μια άλλη, επομένως θέλετε η ανακατασκευή να γίνει όσο το δυνατόν γρηγορότερα, καθώς πραγματικά δεν θέλετε να αποτύχει μια άλλη μονάδα δίσκου κατά τη διάρκεια αυτής της διαδικασίας. Επομένως, μην το επιβαρύνετε με άλλα IO που δεν είναι απολύτως απαραίτητα.
Μόλις τελειώσετε, προσθέστε το ξανά στο αρχείο /etc/fstab, επανεκκινήστε και απολαύστε τα αρχεία σας :-)