Miklix

Αντικατάσταση μιας αποτυχημένης μονάδας δίσκου σε έναν πίνακα mdadm στο Ubuntu

Δημοσιεύθηκε: 15 Φεβρουαρίου 2025 στις 10:02:15 μ.μ. UTC
Τελευταία ενημέρωση: 12 Ιανουαρίου 2026 στις 8:49:52 π.μ. 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, αλλά ευτυχώς είναι τόσο σπάνιο που συνήθως πρέπει να αναζητήσω τις κατάλληλες εντολές. Αυτή τη φορά αποφάσισα να φτιάξω τον δικό μου μικρό οδηγό για μελλοντική αναφορά.

Έτσι, πρώτα απ 'όλα, όταν λάβετε το επίφοβο email σφάλματος από το mdadm, πρέπει να εντοπίσετε ποια μονάδα δίσκου έχει παρουσιάσει βλάβη. Σίγουρα, θα σας πει το όνομα της συσκευής (στην περίπτωσή μου /dev/sdf), αλλά πιθανώς δεν είναι προφανές ποια φυσική μονάδα δίσκου είναι στην πραγματικότητα, καθώς αυτά τα ονόματα μπορούν να αλλάξουν κατά την εκκίνηση του υπολογιστή.

Αν δεν είστε καν σίγουροι ποιο όνομα συσκευής έχει αποτύχει, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να το μάθετε (αντικαταστήστε το /dev/md0 με τη συσκευή RAID σας):

mdadm -–query -–detail /dev/md0

Όπως αναφέρθηκε, στην περίπτωσή μου ήταν /dev/sdf, οπότε ας συνεχίσουμε με αυτό.

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

smartctl -–all /dev/sdf | grep -i 'Serial'

(αν δεν βρεθεί το smartctl, πρέπει να εγκαταστήσετε το πακέτο smartmontools στο Ubuntu)

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

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

Δεδομένου ότι είχα φυσική πρόσβαση στον διακομιστή (κάτι που πραγματικά χρειάζεστε αν πρόκειται να αντικαταστήσετε μόνοι σας μια φυσική μονάδα δίσκου, υποθέτω ;-)) και ο διακομιστής λειτουργούσε όταν ο δίσκος παρουσίασε βλάβη (και συνέχισε να λειτουργεί κανονικά χάρη στην πλεονάζουσα τεχνολογία RAID-6), επέλεξα την πραγματικά πρωτόγονη, αλλά στην πραγματικότητα εξαιρετικά αποτελεσματική και προφανή, μέθοδο, να αντιγράψω απλώς ένα μεγάλο αρχείο στον διακομιστή και να παρακολουθήσω ποιο λαμπάκι του σκληρού δίσκου δεν τρεμόπαιζε. Μέσα σε λίγα δευτερόλεπτα είχα εντοπίσει τον ένοχο.

Τώρα, πριν αφαιρέσετε τη φυσική μονάδα δίσκου, είναι καλή ιδέα να ενημερώσετε επίσημα το mdadm για αυτήν την πρόθεση, εκδίδοντας αυτήν την εντολή (αντικαταστήστε τα ονόματα συσκευών με τα δικά σας, όπως απαιτείται):

mdadm -–manage /dev/md0 -–remove /dev/sdf1

Μόλις ολοκληρωθεί με επιτυχία, το mdadm θα απαντήσει με ένα μήνυμα που θα λέει ότι "αφαίρεσε αμέσως" τη μονάδα δίσκου, προφανώς επειδή η εικονική συσκευή raid εκτελείται εκείνη τη στιγμή.

Εάν αποτύχει με ένα μήνυμα σφάλματος παρόμοιο με το "συσκευή ή πόρος απασχολημένος", ενδέχεται το mdadm να μην έχει καταχωρίσει στην πραγματικότητα τη μονάδα δίσκου ως πλήρως αποτυχημένη. Για να το κάνετε αυτό, εκτελέστε αυτήν την εντολή (και πάλι, θυμηθείτε να αντικαταστήσετε τα ονόματα συσκευών με τα δικά σας, όπως απαιτείται):

mdadm --manage /dev/md0 --fail /dev/sdf

Μετά από αυτό, θα πρέπει να μπορείτε να αφαιρέσετε τη συσκευή από τον πίνακα με την προηγούμενη εντολή.

Τώρα είναι η ώρα να αντικαταστήσετε πραγματικά τη μονάδα δίσκου. Αν είστε πραγματικά, πραγματικά - δηλαδή, πραγματικά - σίγουροι ότι το μηχάνημά σας και ο ελεγκτής σας υποστηρίζουν εναλλαγή εν ώρα λειτουργίας, θα μπορούσατε να το κάνετε αυτό χωρίς να απενεργοποιήσετε το μηχάνημα. Αυτός θα ήταν ο τρόπος να ενεργήσετε σε κρίσιμα συστήματα παραγωγής που λειτουργούν σε πραγματικό, κατάλληλο υλικό διακομιστή που γνωρίζετε σίγουρα ότι μπορεί να το χειριστεί. Ο οικιακός διακομιστής αρχείων μου βασίζεται σε μια μητρική πλακέτα επιτραπέζιου υπολογιστή καταναλωτικού επιπέδου με μερικούς ημι-ανώνυμους ελεγκτές SATA στις υποδοχές PCIe για την παροχή περισσότερων θυρών SATA.

Παρόλο που το SATA γενικά θα έπρεπε να υποστηρίζει εναλλαγή εν ώρα λειτουργίας (hot swaping), δεν σκόπευα να ρισκάρω τίποτα σε αυτήν τη ρύθμιση, οπότε επέλεξα να κλείσω το μηχάνημα κατά την αντικατάσταση της μονάδας δίσκου.

Πριν το κάνετε αυτό, είναι καλή ιδέα να σχολιάσετε τη συσκευή raid στο αρχείο /etc/fstab, ώστε το Ubuntu να μην προσπαθήσει να την προσαρτήσει αυτόματα στην επόμενη εκκίνηση, επειδή μπορεί να κολλήσει και να σας αναγκάσει να μπείτε σε λειτουργία ανάκτησης λόγω της υποβαθμισμένης συστοιχίας RAID. Αυτό μπορεί να μην είναι μεγάλο πρόβλημα αν πρόκειται για επιτραπέζιο σύστημα, αλλά εγώ χρησιμοποιώ αυτόν τον διακομιστή χωρίς headless χωρίς οθόνη ή πληκτρολόγιο, οπότε αυτό θα ήταν λίγο ενοχλητικό.

Αφού εκκινήσετε το μηχάνημα με εγκατεστημένη τη λαμπερή καινούργια μονάδα δίσκου, χρησιμοποιήστε την εντολή lsblk ή κάποιο άλλο μέσο για να την αναγνωρίσετε. Εάν δεν έχετε αλλάξει τίποτα άλλο, πιθανότατα (αλλά όχι απαραίτητα) θα έχει το ίδιο όνομα με τη μονάδα δίσκου που αντικαταστήσατε. Στην περίπτωσή μου, έλαβε, επομένως η νέα μονάδα ονομάζεται επίσης /dev/sdf.

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

Χρησιμοποίησα το sgdisk για αυτόν τον σκοπό, αντιγράφοντας τον πίνακα διαμερισμάτων από το /dev/sdc στο /dev/sdf. Βεβαιωθείτε ότι έχετε αντικαταστήσει τα ονόματα των συσκευών ώστε να ταιριάζουν με τα δικά σας, όπως απαιτείται.

Προσέξτε τη σειρά εδώ: παραθέτετε πρώτα τη μονάδα δίσκου "προς"! Αυτό είναι λίγο αντίθετο με τη διαίσθησή μου, αλλά βεβαιωθείτε ότι το κάνετε σωστά, ώστε να μην αντιμετωπίσετε άλλη βλάβη μονάδας δίσκου στον πίνακα ;-)

sgdisk -R /dev/sdf /dev/sdc

Στη συνέχεια, για να αποφύγετε διενέξεις UUID, δημιουργήστε νέα UUID για τη νέα μονάδα δίσκου:

sgdisk -G /dev/sdf

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

Τέλος πάντων, για να προσθέσετε τη νέα μονάδα δίσκου στον πίνακα, εκτελέστε αυτήν την εντολή (και πάλι, φροντίστε να αντικαταστήσετε τα ονόματα συσκευών με τα δικά σας, όπως απαιτείται):

mdadm -–manage /dev/md0 -–add /dev/sdf1

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

Μπορείτε να το παρακολουθείτε ως εξής:

watch cat /proc/mdstat

Αυτό πιθανότατα θα πάρει λίγο χρόνο. Στον απλό διακομιστή μου (που βασίζεται κυρίως σε υλικό καταναλωτικής ποιότητας και μονάδες δίσκου επιτραπέζιου υπολογιστή, σημειώστε) κατάφερε να φτάσει λίγο κάτω από 100 MB/δευτ. Λάβετε υπόψη ότι πρόκειται για RAID-6, επομένως υπάρχουν πολλοί υπολογισμοί ισοτιμίας που εμπλέκονται με μια ανακατασκευή. Μια RAID-10 θα ήταν πολύ πιο γρήγορη. Αυτό το συγκεκριμένο μηχάνημα διαθέτει τετραπύρηνο επεξεργαστή AMD A10 9700E (το "E" σημαίνει ότι είναι ένα μοντέλο με υποχρονισμό και ενεργειακή απόδοση, δηλαδή όχι εξαιρετικά γρήγορο), απλώς για να σας δώσω μια ιδέα για το τι να περιμένετε. Με τους εννέα δίσκους των 8 TB στη ρύθμισή μου, η πλήρης ανακατασκευή χρειάστηκε λίγο περισσότερο από 24 ώρες.

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

Μόλις τελειώσετε, προσθέστε το ξανά στο αρχείο /etc/fstab, επανεκκινήστε και απολαύστε τα αρχεία σας :-)

Μοιραστείτε το στο BlueskyΚοινή χρήση στο FacebookΚοινοποίηση στο LinkedInΜοιραστείτε το στο TumblrΚοινοποίηση στο XΚοινοποίηση στο LinkedInΚαρφιτσώστε στο Pinterest

Mikkel Christensen

Σχετικά με τον συγγραφέα

Mikkel Christensen
Ο Μιχαήλ είναι ο δημιουργός και ιδιοκτήτης του miklix.com. Έχει πάνω από 20 χρόνια εμπειρίας ως επαγγελματίας προγραμματιστής υπολογιστών/προγραμματιστής λογισμικού και σήμερα εργάζεται με πλήρη απασχόληση σε μια μεγάλη ευρωπαϊκή εταιρεία πληροφορικής. Όταν δεν ασχολείται με το ιστολόγιο, αφιερώνει τον ελεύθερο χρόνο του σε ένα ευρύ φάσμα ενδιαφερόντων, χόμπι και δραστηριοτήτων, τα οποία μπορεί σε κάποιο βαθμό να αντικατοπτρίζονται στην ποικιλία των θεμάτων που καλύπτονται σε αυτόν τον ιστότοπο.