Neveiksmīga diska aizstāšana mdadm masīvā Ubuntu
Publicēts: 2025. gada 15. februāris 22:02:26 UTC
Pēdējo reizi atjaunināts: 2026. gada 12. janvāris 08:49:58 UTC
Ja atrodaties briesmīgajā situācijā, kad mdadm RAID masīvā rodas diska kļūme, šajā rakstā ir paskaidrots, kā to pareizi nomainīt Ubuntu sistēmā.
Replacing a Failed Drive in an mdadm Array on Ubuntu
Šajā ierakstā sniegtā informācija ir balstīta uz Ubuntu 18.04 un mdadm versiju, kas iekļauta tās repozitorijos; rakstīšanas laikā v4.1-rc1. Tā var būt vai nebūt derīga citām versijām.
Nesen manā mājas failu serverī, kas sastāv no deviņiem diskiem mdadm RAID-6 masīvā, pēkšņi radās diska kļūme. Tas vienmēr ir biedējoši, bet par laimi man izdevās ātri atrast rezerves disku, kas tika piegādāts jau nākamajā dienā, lai es varētu sākt atjaunošanu.
Jāatzīst, ka sākotnēji iestatot failu serveri, es biju mazliet par skopu; tikai divi no diskdziņiem ir īsti NAS diski (Seagate IronWolf), bet pārējie ir galddatoru diski (Seagate Barracuda). Nav pārsteidzoši, ka tas bija viens no galddatoru diskiem, kas bija atteicies (tomēr pēc gandrīz trīs gadu kalpošanas). Tas bija pilnībā miris; pēc tā pārvietošanas uz galddatora USB korpusu viss, ko es no tā dzirdēju, bija satraucoša klikšķoša skaņa, un ne Ubuntu 20.04, ne Windows 10 to nespēja atpazīt.
Nu ko, tagad par rezerves daļu (un jā, jaunais disks, ko iegādājos, bija IronWolf, mācība gūta) — lai arī cik biedējoši ir pazaudēt disku darbojošā masīvā, vēl biedējošāk ir, ja nezināt pareizo tā nomaiņas procedūru. Šī nav pirmā reize, kad man ir jānomaina bojāts disks mdadm masīvā, bet, par laimi, tas notiek tik reti, ka parasti man ir jāmeklē pareizās komandas. Šoreiz nolēmu izveidot savu mazo rokasgrāmatu turpmākai uzziņai.
Tātad, pirmkārt, kad saņemat no mdadm baiso kļūmes notikuma e-pastu, jums ir jānosaka, kurš disks ir sabojājies. Protams, tas parādīs ierīces nosaukumu (manā gadījumā /dev/sdf), taču, iespējams, nav acīmredzams, kurš fiziskais disks tas īsti ir, jo šie nosaukumi var mainīties, kad dators tiek startēts.
Ja neesat pārliecināts, kura ierīces nosaukuma labošana neizdevās, varat to noskaidrot, izmantojot šo komandu (aizstājiet /dev/md0 ar savu RAID ierīces nosaukumu):
Kā jau minēts, manā gadījumā tas bija /dev/sdf, tāpēc turpināsim ar to.
Pēc tam varat mēģināt atrast neizdevušā diska sērijas numuru, izpildot šo komandu:
(ja smartctl netiek atrasts, Ubuntu vidē jāinstalē smartmontools pakotne)
Pēc tam sērijas numuru var salīdzināt ar sērijas numuriem uz disku fiziskās etiķetes, lai noskaidrotu, kurš no tiem ir sabojājies.
Šoreiz man tik ļoti nepaveicās. Disks bija pilnībā nedarbojošs un pat atteicās sniegt SMART vai citus datus, tostarp sērijas numuru.
Tā kā man bija fiziska piekļuve serverim (kas tiešām ir nepieciešama, ja pats nomainīsi fizisko disku, es pieņemu ;-)) un serveris faktiski darbojās, kad disks atteicās (un turpināja darboties nevainojami, pateicoties RAID-6 redundanci), es izvēlējos ļoti primitīvu, bet patiesībā ļoti efektīvu un acīmredzamu metodi - vienkārši nokopēju lielu failu uz serveri un vēroju, kura cietā diska gaismiņa nemirgo. Dažu sekunžu laikā es biju identificējis vainīgo.
Pirms fiziskā diska izņemšanas ieteicams oficiāli informēt mdadm par šo nodomu, izpildot šo komandu (attiecīgā gadījumā ierīču nosaukumus aizstājiet ar savējiem):
Veiksmīgas darbības gadījumā mdadm atbildēs ar ziņojumu, ka disks ir "karsti noņemts", acīmredzot tāpēc, ka virtuālā RAID ierīce tajā laikā faktiski darbojas.
Ja tas neizdodas ar kļūdas ziņojumu, kas līdzīgs "ierīce vai resurss aizņemts", iespējams, ka mdadm faktiski nav reģistrējis disku kā pilnīgu kļūmi. Lai to izdarītu, izpildiet šo komandu (atcerieties, ja nepieciešams, aizstāt ierīču nosaukumus ar saviem):
Pēc tam ierīci vajadzētu būt iespējai noņemt no masīva ar iepriekšējo komandu.
Tagad ir pienācis laiks nomainīt disku. Ja esat patiešām, patiešām — tiešām — pārliecināts, ka jūsu dators un kontrolieris atbalsta karsto nomaiņu, varat to izdarīt, neizslēdzot datoru. Tas būtu veids, kā rīkoties kritiski svarīgās ražošanas sistēmās, kas darbojas uz īstas, atbilstošas servera aparatūras, par kuru jūs droši zināt, ka tā to var apstrādāt. Mans mājas failu serveris ir balstīts uz patērētāju klases galddatoru mātesplati ar pāris daļēji nezināmiem SATA kontrolieriem PCIe slotos, lai nodrošinātu vairāk SATA portu.
Lai gan SATA parasti atbalsta karsto pārnešanu, šajā konfigurācijā es negrasījos riskēt, tāpēc izvēlējos izslēgt datoru, nomainot disku.
Pirms tam ieteicams komentēt RAID ierīci failā /etc/fstab, lai Ubuntu nemēģinātu to automātiski pievienot nākamajā palaišanas reizē, jo tas varētu uzkarties un piespiest jūs pārslēgties atkopšanas režīmā degradētā RAID masīva dēļ. Tā var nebūt liela problēma, ja tā ir galddatoru sistēma, bet es darbinu šo serveri bez galviņas, bez pievienota monitora vai tastatūras, tāpēc tas varētu būt nedaudz apgrūtinoši.
Pēc datora palaišanas ar instalēto jauno disku, izmantojiet lsblk vai kādu citu metodi, lai to identificētu. Ja neko citu neesat mainījis, tas, iespējams (bet ne obligāti) iegūs tādu pašu nosaukumu kā nomainītais disks. Manā gadījumā tas tā bija, tāpēc jaunais disks tiek saukts arī par /dev/sdf.
Tā kā mans masīvs ir balstīts uz nodalījumiem, nevis fiziskām ierīcēm, man vajadzēja kopēt nodalījumu tabulu no darbojošā diska uz jauno disku, lai pārliecinātos, ka tie ir pilnīgi vienādi. Ja masīvu darbināt fiziskās ierīcēs, varat izlaist šo soli.
Šim nolūkam es izmantoju komandu sgdisk, kopējot nodalījumu tabulu no /dev/sdc uz /dev/sdf. Pārliecinieties, ka ierīču nosaukumi ir aizstāti ar savējiem.
Ievērojiet secību: vispirms uzskaitiet disku "uz"! Man tas šķiet nedaudz neloģiski, bet pārliecinieties, ka visu darāt pareizi, lai masīvā nerastos vēl viena diska kļūme ;-)
Pēc tam, lai izvairītos no UUID konfliktiem, ģenerējiet jaunus UUID jaunajam diskam:
Un beidzot ir pienācis laiks pievienot masīvam jauno disku un sākt pārbūves ballīti! (Labi, tā īsti nav ballīte, tas patiesībā ir diezgan lēns un satraucošs process, jo jūs tiešām, tiešām nevēlaties, lai šajā brīdī sabojātos vēl viens disks. Lai gan alus varētu palīdzēt.)
Jebkurā gadījumā, lai pievienotu jauno disku masīvam, izpildiet šo komandu (atkal pārliecinieties, ka ierīču nosaukumi ir aizstāti ar savējiem, ja nepieciešams):
Ja viss noritēs labi, disks tiks pievienots masīvam bez aizķeršanās. Domāju, ka pēc noklusējuma tas faktiski tiek pievienots kā "karstā rezerves daļa", bet, tā kā šim masīvam trūkst diska (tā, kas neizdevās), tas nekavējoties tiek izmantots un sāksies pārbūves process.
Jūs varat to uzraudzīt šādi:
Tas droši vien prasīs kādu laiku; manā pieticīgajā serverī (kas galvenokārt balstīts uz patērētāju līmeņa aparatūru un galddatoru diskdziņiem) tas spēja sasniegt nedaudz zem 100 MB/s. Paturiet prātā, ka šis ir RAID-6, tāpēc pārbūvē ir iesaistīti daudzi paritātes aprēķini; RAID-10 būtu bijis daudz ātrāks. Šai konkrētajai iekārtai ir AMD A10 9700E četrkodolu centrālais procesors ("E" nozīmē, ka tas ir nepietiekami taktēts energoefektīvs modelis, t. i., ne īpaši ātrs), tikai lai sniegtu priekšstatu par to, ko sagaidīt. Ar deviņiem 8 TB diskdziņiem manā iestatījumā pilnīga pārbūve aizņēma nedaudz vairāk par 24 stundām.
Pārbūves laikā failu sistēmu var pievienot masīvam un izmantot to kā parasti, ja vēlaties, taču es dodu priekšroku atstāt to pārbūves ziņā, līdz tā ir pabeigta. Paturiet prātā, ka, ja viens disks neizdodas, drīz var rasties cita problēma, tāpēc pārbūve ir jāveic pēc iespējas ātrāk, jo jūs patiešām nevēlaties, lai pārbūves laikā neizdotos vēl viens disks. Tāpēc neapgrūtiniet to ar citām ievades darbībām, kas nav absolūti nepieciešamas.
Kad tas ir izdarīts, pievienojiet to atpakaļ failam /etc/fstab, pārstartējiet un izbaudiet savus failus :-)
