Nepavykusio disko pakeitimas mdadm masyve Ubuntu
Paskelbta: 2025 m. vasario 15 d. 22:02:25 UTC
Jei susiduriate su baisia situacija, kai mdadm RAID masyve sugenda diskas, šiame straipsnyje paaiškinama, kaip teisingai jį pakeisti Ubuntu sistemoje.
Replacing a Failed Drive in an mdadm Array on Ubuntu
Informacija šiame įraše yra pagrįsta Ubuntu 18.04 ir mdadm versija, įtraukta į jos saugyklas; rašant v4.1-rc1. Jis gali galioti arba negalioja kitoms versijoms.
Neseniai mano namų failų serveryje, kurį sudaro devyni diskai mdadm RAID-6 masyve, įvyko staigus disko gedimas. Tai visada baisu, bet, laimei, man pavyko greitai gauti pakaitinį diską, kuris buvo pristatytas jau kitą dieną, kad galėčiau pradėti atstatymą.
Žinoma, buvau šiek tiek per pigus, kai iš pradžių nustatiau failų serverį; tik du diskai yra tikrieji NAS diskai („Seagate IronWolf“), o kiti yra staliniai įrenginiai („Seagate Barracuda“). Nenuostabu, kad tai buvo vienas iš stalinių kompiuterių, kurie atsisakė (vis dėlto po beveik trejų metų tarnybos). Jis buvo visiškai miręs; perkėlus jį į darbalaukio USB korpusą, viskas, ką išgirdau, buvo nerimą keliantis spragtelėjimas ir nei Ubuntu 20.04, nei Windows 10 negalėjo jo aptikti.
Na, o apie pakaitinę dalį (ir taip, naujas diskas, kurį nusipirkau, buvo „IronWolf“, pamoka buvo išmokta) – kad ir kaip baisu būtų prarasti diską veikiančiame masyve, dar baisiau, jei nežinote teisingos jo pakeitimo procedūros. Tai ne pirmas kartas, kai tenka pakeisti sugedusį diską mdadm masyve, bet, laimei, tai taip retai, kad dažniausiai tenka ieškoti tinkamų komandų. Šį kartą nusprendžiau parengti savo nedidelį vadovą, kad galėtumėte pasinaudoti ateityje.
Taigi, visų pirma, kai gaunate siaubingą nesėkmės įvykio el. laišką iš mdadm, turite nustatyti, kuris diskas sugedo. Žinoma, jis nurodys įrenginio pavadinimą (mano atveju /dev/sdf), bet tikriausiai neaišku, kuris fizinis diskas iš tikrųjų yra, nes tie pavadinimai gali pasikeisti, kai įrenginys paleidžiamas.
Jei net nesate tikri, kurio įrenginio pavadinimo nepavyko, galite naudoti šią komandą, kad sužinotumėte (pakeiskite /dev/md0 savo RAID įrenginiu):
Kaip minėta, mano atveju tai buvo /dev/sdf, todėl tęskime tai.
Tada galite pabandyti rasti nepavykusio disko serijos numerį, išduodami šią komandą:
(jei smartctl nerastas, Ubuntu turite įdiegti smartmontools paketą)
Tada serijos numerį galima palyginti su serijos numeriais, esančiais fizinėje diskų etiketėje, kad išsiaiškintumėte, kuris iš jų sugedo.
Tačiau šį kartą man nepasisekė. Diskas buvo visiškai neveikiantis ir netgi atsisakė pateikti SMART ar kitus duomenis, įskaitant serijos numerį.
Kadangi turėjau fizinę prieigą prie serverio (kurio jums tikrai reikia, jei ketinate pakeisti fizinį diską, manau ;-)) ir serveris iš tikrųjų veikė, kai diskas sugedo (ir toliau veikė gerai dėl RAID-6 pertekliaus), pasirinkau tikrai primityvų, bet iš tikrųjų labai veiksmingą ir akivaizdų būdą, kaip tiesiog nukopijuoti didelį failą į serverį ir žiūrėti HDD lemputė. Per kelias sekundes išsiaiškinau kaltininką.
Dabar, prieš ištraukiant fizinį diską, pravartu oficialiai informuoti mdadm apie šį ketinimą, išduodant šią komandą (pakeiskite įrenginių pavadinimus savo):
Sėkmės atveju „mdadm“ atsakys pranešimu, kad „karštoji pašalino“ diską, matyt, todėl, kad virtualus reido įrenginys tuo metu iš tikrųjų veikia.
Jei nepavyksta gauti klaidos pranešimą, panašų į „įrenginys arba išteklius užimtas“, gali būti, kad mdadm iš tikrųjų neužregistravo disko kaip visiškai sugedusio. Norėdami tai padaryti, išduokite šią komandą (dar kartą nepamirškite pakeisti įrenginių pavadinimų savo):
Po to turėtumėte turėti galimybę pašalinti įrenginį iš masyvo naudodami ankstesnę komandą.
Dabar atėjo laikas iš tikrųjų pakeisti diską. Jei tikrai esate tikras, kad jūsų aparatas ir valdiklis palaiko karštąjį keitimą, galite tai padaryti neišjungę įrenginio. Taip būtų galima naudoti svarbias gamybos sistemas, veikiančias tikra, tinkama serverio aparatūra, kuri, kaip žinote, gali su tuo susidoroti. Mano namų failų serveris yra pagrįstas vartotojų klasės darbalaukio pagrindine plokšte su keliais pusiau bevardžiais SATA valdikliais PCIe lizduose, kad būtų daugiau SATA prievadų.
Nors SATA paprastai turėtų palaikyti karštąjį keitimą, aš neketinau niekuo rizikuoti šioje sąrankoje, todėl nusprendžiau išjungti įrenginį keičiant diską.
Prieš tai darant, patartina pakomentuoti RAID įrenginį faile /etc/fstab, kad Ubuntu nebandytų jo automatiškai prijungti kitą kartą įkrovus, nes jis gali pakibti ir priversti jus įjungti atkūrimo režimą dėl pablogėjusio RAID masyvo. Galbūt tai nėra didelė problema, jei tai yra stalinė sistema, bet aš naudoju šį serverį be galvos, neprijungęs monitoriaus ar klaviatūros, todėl tai būtų šiek tiek vargo.
Paleidę mašiną su įdiegtu blizgančiu nauju disku, naudokite lsblk ar kitą priemonę, kad ją atpažintumėte. Jei nieko daugiau nepakeitėte, jis tikriausiai (bet nebūtinai ) gaus tokį patį pavadinimą kaip ir jūsų pakeistas diskas. Mano atveju taip buvo, todėl naujasis taip pat vadinamas /dev/sdf.
Kadangi mano masyvas pagrįstas skaidiniais, o ne fiziniais įrenginiais, turėjau nukopijuoti skaidinių lentelę iš veikiančio disko į naują diską, kad įsitikinčiau, jog jie yra visiškai vienodi. Jei paleidžiate masyvą fiziniuose įrenginiuose, galite praleisti šį veiksmą.
Šiam tikslui naudojau sgdisk, nukopijuodamas skaidinių lentelę iš /dev/sdc į /dev/sdf. Būtinai pakeiskite įrenginių pavadinimus, kad jie atitiktų jūsų pačių pavadinimus.
Pastebėkite eiliškumą čia: pirmiausia nurodykite važiavimą „į“! Man tai šiek tiek priešinga, bet įsitikinkite, kad tai darote teisingai, kad masyve nekiltų dar vieno disko gedimo ;-)
Tada, kad išvengtumėte UUID konfliktų, sugeneruokite naujus UUID naujam diskui:
Ir dabar pagaliau atėjo laikas pridėti naują diską į masyvą ir pradėti atkūrimo vakarėlį! (Gerai, tai tikrai ne vakarėlis, iš tikrųjų tai gana lėtas ir nerimą keliantis procesas, nes tikrai labai nenorite, kad šiuo metu sugestų kitas diskas. Tačiau alus gali padėti)
Bet kokiu atveju, norėdami pridėti naują diską prie masyvo, išduokite šią komandą (vėl būtinai pakeiskite įrenginių pavadinimus savo):
Jei viskas bus gerai, diskas bus įtrauktas į masyvą be žagsėjimo. Manau, kad pagal numatytuosius nustatymus jis iš tikrųjų įtrauktas kaip „karštas atsarginis“, bet kadangi šiame masyve trūksta disko (to, kuriam nepavyko), jis nedelsiant pradedamas naudoti ir prasidės atkūrimo procesas.
Galite tai stebėti taip:
Tai tikriausiai užtruks; mano žemame serveryje (daugiausia remiantis vartotojų klasės aparatine įranga ir staliniais diskais, atminkite) jis galėjo pasiekti šiek tiek mažiau nei 100 MB/sek. Turėkite omenyje, kad tai yra RAID-6, todėl su atkūrimu reikia atlikti daug pariteto skaičiavimų; RAID-10 būtų buvęs daug greitesnis. Šiame konkrečiame aparate yra AMD A10 9700E keturių branduolių procesorius ("E" reiškia, kad tai yra per mažai energijos taupantis modelis, ty ne itin greitas), kad suprastumėte, ko tikėtis. Kai mano sąrankoje buvo devyni 8 TB diskai, visas atkūrimas užtruko šiek tiek daugiau nei 24 valandas.
Atkūrimo metu galite prijungti failų sistemą į masyvą ir, jei norite, naudoti kaip įprasta, bet aš norėčiau palikti tai atkūrimui, kol jis bus baigtas. Turėkite omenyje, kad jei vienas diskas sugenda, netrukus gali atsirasti kitas, todėl norite, kad atkūrimas būtų atliktas kuo greičiau, nes tikrai nenorite, kad per tą laiką sugestų kitas diskas. Todėl neapkraukite jo kitais IO, kurie nėra griežtai būtini.
Kai tai bus padaryta, pridėkite jį atgal į /etc/fstab failą, paleiskite iš naujo ir mėgaukitės failais :-)