Neveiksmīga diska aizstāšana mdadm masīvā Ubuntu
Publicēts: 2025. gada 15. februāris 22:02:26 UTC
Ja atrodaties briesmīgā situācijā, kad mdadm RAID masīvā var rasties 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
Informācija šajā ziņā ir balstīta uz Ubuntu 18.04 un tās krātuvēs iekļauto mdadm versiju; rakstīšanas laikā v4.1-rc1. Tas var būt un var nebūt derīgs citām versijām.
Man nesen bija pēkšņa diska kļūme manā mājas failu serverī, kas sastāv no deviņiem diskdziņiem mdadm RAID-6 masīvā. Tas vienmēr ir biedējoši, taču, par laimi, es varēju ātri iegūt rezerves disku, kas tika piegādāts jau nākamajā dienā, lai es varētu sākt pārbūvi.
Protams, es biju mazliet pārāk lēts, kad sākotnēji iestatīju failu serveri; tikai divi no diskdziņiem ir faktiskie NAS diskdziņi (Seagate IronWolf), bet pārējie ir darbvirsmas diskdziņi (Seagate Barracuda). Nav pārsteidzoši, ka tas bija viens no darbvirsmas diskdziņiem, kas bija atteicies (tomēr pēc gandrīz trīs gadu kalpošanas). Tas bija pilnīgi miris; pēc pārvietošanas uz darbvirsmas USB korpusu viss, ko es no tā izdzirdēju, bija satraucoša klikšķināšanas skaņa, un ne Ubuntu 20.04, ne Windows 10 nevarēja to atklāt.
Ak, labi, par rezerves daļu (un jā, jaunais disks, ko nopirku, bija IronWolf, mācība ir gūta) — lai cik biedējoši būtu diska pazaudēšana masīvā, tas ir vēl briesmīgāk, ja nezināt pareizo tā nomaiņas procedūru. Tā nav pirmā reize, kad man ir jāmaina neveiksmīgs disks mdadm masīvā, taču, par laimi, tas ir tik reti, ka man parasti ir jāmeklē pareizās komandas. Šoreiz es nolēmu izveidot savu mazo ceļvedi turpmākai uzziņai.
Tātad, pirmkārt, kad no mdadm saņemat e-pasta ziņojumu ar briesmīgo neveiksmes notikumu, jums ir jānoskaidro, kurš disks ir bojāts. Protams, tas jums pateiks ierīces nosaukumu (manā gadījumā /dev/sdf), taču, iespējams, nav skaidrs, kurš fiziskais diskdzinis patiesībā ir, jo šie nosaukumi var mainīties, kad iekārta tiek sāknēta.
Ja pat neesat pārliecināts, kurš ierīces nosaukums ir neizdevies, varat izmantot šo komandu, lai uzzinātu (aizstāt /dev/md0 ar savu RAID ierīci):
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 neveiksmīgā diska sērijas numuru, izdodot šo komandu:
(ja smartctl nav atrasts, Ubuntu ir jāinstalē smartmontools pakotne)
Pēc tam sērijas numuru var salīdzināt ar sērijas numuriem uz diskdziņu fiziskās etiķetes, lai noskaidrotu, kurš no tiem ir bojāts.
Tomēr šoreiz man nepaveicās. Disks bija pilnībā miris un pat atteicās sniegt SMART vai citus datus, tostarp sērijas numuru.
Tā kā man bija fiziska piekļuve serverim (kas jums patiešām ir nepieciešams, ja pats nomainīsit fizisko disku ;-)) un serveris faktiski darbojās, kad disks neizdevās (un turpināja darboties labi, pateicoties RAID-6 dublēšanai), es izmantoju patiešām primitīvu, bet patiesībā ļoti efektīvu un acīmredzamu metodi, kā vienkārši kopēt lielu failu uz serveri un noskatīties, kuru HDD gaisma. Dažu sekunžu laikā es noskaidroju vainīgo.
Tagad, pirms izņemat fizisko disku, ieteicams oficiāli informēt mdadm par šo nodomu, izdodot šo komandu (nomainiet ierīču nosaukumus ar saviem):
Veiksmes gadījumā mdadm atbildēs ar ziņojumu, kurā teikts, ka tas "karsti noņēma" disku, acīmredzot tāpēc, ka tajā laikā faktiski darbojas virtuālā raidierīce.
Ja tas neizdodas un parādās kļūdas ziņojums, kas līdzīgs “ierīce vai resurss aizņemts”, iespējams, mdadm faktiski nav reģistrējis diskdzini, lai tas būtu pilnībā atteicies. Lai to izdarītu, izdodiet šo komandu (atkal neaizmirstiet pēc vajadzības aizstāt ierīču nosaukumus ar saviem):
Pēc tam jums vajadzētu būt iespējai noņemt ierīci no masīva ar iepriekšējo komandu.
Tagad ir pienācis laiks faktiski nomainīt disku. Ja jūs patiešām esat pārliecināts, ka jūsu iekārta un kontrolleris atbalsta karsto maiņu, varat to izdarīt, neizslēdzot iekārtu. Tas būtu veids, kā izmantot kritiskās ražošanas sistēmas, kas darbojas uz īstas, pareizas servera aparatūras, kas, jūsuprāt, var tikt galā ar to. Mans mājas failu serveris ir balstīts uz patērētāja līmeņa galddatoru mātesplati ar pāris daļēji nosauktiem SATA kontrolleriem PCIe slotos, lai nodrošinātu vairāk SATA portu.
Lai gan SATA parasti būtu jāatbalsta karstā maiņa, šajā iestatījumā es nedomāju riskēt, tāpēc izvēlējos izslēgt iekārtu, nomainot disku.
Pirms to darīt, ir ieteicams komentēt raid ierīci failā /etc/fstab, lai Ubuntu nemēģinātu to automātiski uzstādīt nākamajā sāknēšanas reizē, jo tas var uzkarināt un piespiest jūs pāriet atkopšanas režīmā degradētā RAID masīva dēļ. Iespējams, ka tā nav liela problēma, ja tā ir galddatora sistēma, taču es darbinu šo serveri bez galvām bez pievienota monitora vai tastatūras, tāpēc tas radītu zināmas grūtības.
Pēc mašīnas palaišanas ar instalētu spīdīgo jauno disku, izmantojiet lsblk vai kādu citu līdzekli, lai to identificētu. Ja neko citu neesat mainījis, tas, iespējams (bet ne obligāti ) saņems tādu pašu nosaukumu kā diskam, kuru nomainījāt. Manā gadījumā tā notika, tāpēc jauno sauc arī par /dev/sdf.
Tā kā mana masīva pamatā ir nodalījumi, nevis fiziskas ierīces, man vajadzēja kopēt nodalījumu tabulu no strādājoša diska uz jauno disku, lai pārliecinātos, ka tie ir tieši tādi paši. Ja masīvu palaižat fiziskās ierīcēs, varat izlaist šo darbību.
Šim nolūkam izmantoju sgdisk, nokopējot nodalījuma tabulu no /dev/sdc uz /dev/sdf. Noteikti nomainiet ierīču nosaukumus, lai tie atbilstu jūsu nosaukumiem.
Ievērojiet secību šeit: vispirms norādiet braucienu "uz"! Tas man ir nedaudz pretintuitīvs, taču pārliecinieties, ka esat to izdarījis pareizi, lai masīvā nerastos vēl viena diska kļūme ;-)
Pēc tam, lai izvairītos no UUID konfliktiem, jaunajam diskam ģenerējiet jaunus UUID:
Un tagad beidzot ir pienācis laiks pievienot masīvam jauno disku un sākt atjaunošanas ballīti! (Labi, tā nav īsti ballīte, patiesībā tas ir diezgan lēns un satraucošs process, jo jūs patiešām, ļoti nevēlaties, lai kāds cits disks šobrīd neizdodas. Tomēr alus varētu palīdzēt)
Jebkurā gadījumā, lai masīvam pievienotu jauno disku, izdodiet šo komandu (atkal noteikti aizstājiet ierīču nosaukumus ar saviem nosaukumiem):
Ja viss noritēs labi, disks tiks pievienots masīvam bez žagas. Es uzskatu, ka pēc noklusējuma tas faktiski ir pievienots kā "karsto rezerves", taču, tā kā šim masīvam trūkst diska (tā, kas neizdevās), tas tiek nekavējoties nodots lietošanā un sāksies atjaunošanas process.
Varat tam sekot līdzi šādi:
Tas, iespējams, prasīs kādu laiku; manā zemajā serverī (pamatojoties galvenokārt uz patērētāja līmeņa aparatūru un galddatoru diskdziņiem, ņemiet vērā) tas spēja sasniegt nedaudz mazāk par 100 MB/s. Ņemiet vērā, ka šis ir RAID-6, tāpēc pārbūvei ir nepieciešams veikt daudz paritātes aprēķinu; 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 energoefektīvs modelis, ti, tas nav īpaši ātrs), lai sniegtu jums priekšstatu par to, ko sagaidīt. Tā kā manā iestatījumā bija deviņi 8 TB diskdziņi, pilnīga atjaunošana aizņēma nedaudz vairāk par 24 stundām.
Pārbūves laikā varat uzstādīt failu sistēmu masīvā un, ja vēlaties, to izmantot kā parasti, taču es labāk to atstāt pārbūvei, līdz tā ir pabeigta. Ņemiet vērā, ka, ja viens disks neizdodas, drīz var sekot cits, tāpēc vēlaties, lai atjaunošana tiktu veikta pēc iespējas ātrāk, jo jūs patiešām nevēlaties, lai tās laikā neizdodas cits disks. Tāpēc neapgrūtiniet to ar citiem IO, kas nav noteikti nepieciešami.
Kad tas ir izdarīts, pievienojiet to atpakaļ savam /etc/fstab failam, restartējiet un izbaudiet failus :-)