Miklix

Vervang 'n mislukte skyf in 'n mdadm-skikking op Ubuntu

Gepubliseer: 15 Februarie 2025 om 22:03:55 UTC

As jy in die gevreesde situasie is van 'n skyffout in 'n mdadm RAID-skikking, verduidelik hierdie artikel hoe om dit korrek op 'n Ubuntu-stelsel te vervang.


Hierdie bladsy is masjienvertaal uit Engels om dit vir soveel mense moontlik toeganklik te maak. Ongelukkig is masjienvertaling nog nie 'n volmaakte tegnologie nie, dus kan foute voorkom. As jy verkies, kan jy die oorspronklike Engelse weergawe hier sien:

Replacing a Failed Drive in an mdadm Array on Ubuntu

Die inligting in hierdie pos is gebaseer op Ubuntu 18.04 en die weergawe van mdadm ingesluit in sy bewaarplekke; ten tyde van die skryf van v4.1-rc1. Dit mag of mag nie geldig wees vir ander weergawes nie.

Ek het onlangs 'n skielike dryffout in my tuislêerbediener gehad, wat bestaan ​​uit nege dryf in 'n mdadm RAID-6-skikking. Dit is altyd skrikwekkend, maar ek kon gelukkig vinnig 'n plaasvervangeraandrywing kry wat reeds die volgende dag afgelewer is sodat ek die herbou kon begin.

Ek was weliswaar 'n bietjie te goedkoop toe ek oorspronklik die lêerbediener opgestel het; slegs twee van die aandrywers is werklike NAS-aandrywers (Seagate IronWolf), terwyl die res lessenaaraandrywers is (Seagate Barracuda). Nie verrassend nie, dit was een van die lessenaaraandrywers wat opgegee het (na amper drie jaar se diens egter). Dit was heeltemal dood; nadat ek dit na 'n rekenaar-USB-omhulsel geskuif het, was al wat ek daaruit gekry het 'n ontstellende klikgeluid en nie Ubuntu 20.04 of Windows 10 kon dit opspoor nie.

Ai tog, oor die vervangingsonderdeel (en ja, die nuwe aandrywer wat ek gekoop het, was 'n IronWolf, les geleer) - so skrikwekkend soos dit is om 'n aandrywing in 'n lopende skikking te verloor, is dit selfs skrikwekkender as jy nie die korrekte prosedure ken om dit te vervang nie. Dit is nie die eerste keer dat ek 'n mislukte aandrywer in 'n mdadm-skikking moes vervang nie, maar dit is gelukkig so skaars dat ek gewoonlik die regte opdragte moet opsoek. Hierdie keer het ek besluit om my eie klein gids op te sweep vir toekomstige verwysing.

Dus, eerstens, wanneer jy die gevreesde mislukkingsgebeurtenis-e-pos van mdadm kry, moet jy identifiseer watter stasie misluk het. Sekerlik, dit sal jou die toestelnaam vertel (in my geval /dev/sdf), maar dit is waarskynlik nie duidelik watter fisiese dryfkrag dit eintlik is nie, aangesien daardie name kan verander wanneer die masjien gelaai word.

As jy nie eers seker is watter toestelnaam misluk het nie, kan jy die volgende opdrag gebruik om uit te vind (vervang /dev/md0 met jou RAID-toestel):

mdadm -–query -–detail /dev/md0

Soos genoem, in my geval was dit /dev/sdf, so kom ons gaan daarmee voort.

Dan kan jy probeer om die reeksnommer van die mislukte skyf te vind deur hierdie opdrag uit te reik:

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

(as smartctl nie gevind word nie, moet jy die smartmontools-pakket op Ubuntu installeer)

Die reeksnommer kan dan vergelyk word met die reeksnommers op die fisiese etiket op die dryf om uit te vind watter een misluk het.

Hierdie keer was ek egter nie so gelukkig nie. Die skyf was heeltemal dood en het selfs geweier om SMART of ander data, insluitend die reeksnommer, te verskaf.

Aangesien ek fisieke toegang tot die bediener gehad het (wat jy regtig nodig het as jy self 'n fisiese aandrywer gaan vervang, veronderstel ek ;-)) en die bediener eintlik aan die gang was toe die skyf misluk het (en voortgegaan het om goed te werk danksy die RAID-6-oortolligheid), het ek met die baie primitiewe, maar eintlik hoogs effektiewe en ooglopende metode gegaan om bloot 'n groot lêer na die bediener te kopieer en te kyk watter HDD flikker nie. Binne 'n paar sekondes het ek die skuldige uitgeken.

Nou, voordat jy die fisiese aandrywing uittrek, is dit 'n goeie idee om mdadm formeel van hierdie voorneme in te lig, deur hierdie opdrag uit te reik (vervang toestelname met jou eie soos toepaslik):

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

As dit suksesvol is, sal mdadm antwoord met 'n boodskap wat sê dat dit die aandrywer "hot verwyder" het, blykbaar omdat die virtuele aanvaltoestel eintlik op daardie tydstip loop.

As dit misluk met 'n foutboodskap soortgelyk aan "toestel of hulpbron besig", kan dit wees dat mdadm in werklikheid nie die aandrywer geregistreer het om heeltemal misluk het nie. Om dit te laat doen, gee hierdie opdrag (weereens, onthou om toestelname te vervang met jou eie soos toepaslik):

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

Daarna behoort u die toestel uit die skikking te kan verwyder met die vorige opdrag.

Nou is dit tyd om die aandrywer eintlik te vervang. As jy regtig, regtig - soos, regtig - seker is dat jou masjien en beheerder hot-swap ondersteun, kan jy dit doen sonder om die masjien af ​​te skakel. Dit sou die manier wees om te gaan met kritieke produksiestelsels wat op regte, behoorlike bedienerhardeware werk wat jy weet dit kan hanteer. My tuislêerbediener is gebaseer op 'n verbruikersgraad lessenaar-moederbord met 'n paar semi-noname SATA-beheerders in die PCIe-gleuwe om egter meer SATA-poorte te verskaf.

Alhoewel SATA oor die algemeen hot-swap moet ondersteun, was ek nie op die punt om iets in hierdie opstelling te waag nie, so ek het gekies om die masjien af ​​te skakel terwyl die aandrywer vervang word.

Voordat jy dit doen, is dit 'n goeie idee om kommentaar te lewer op die klopjagtoestel in die /etc/fstab-lêer sodat Ubuntu nie sal probeer om dit outomaties te monteer met die volgende selflaai nie, want dit kan hang en jou na herstelmodus dwing as gevolg van die verswakte RAID-skikking. Dit is dalk nie 'n groot probleem as dit 'n lessenaarstelsel is nie, maar ek hardloop hierdie bediener koploos sonder 'n monitor of sleutelbord aangeheg, so dit sal 'n bietjie moeite wees.

Nadat u die masjien met die blink nuwe aandrywer geïnstalleer het, gebruik lsblk of 'n ander manier om dit te identifiseer. As jy niks anders verander het nie, sal dit waarskynlik (maar nie noodwendig nie ) dieselfde naam kry as die aandrywer wat jy vervang het. In my geval het dit gedoen, so die nuwe een word ook /dev/sdf genoem.

Aangesien my skikking op partisies eerder as fisiese toestelle gebaseer is, moes ek die partisietabel van 'n werkende skyf na die nuwe skyf kopieer om seker te maak dat hulle presies dieselfde is. As jy eerder jou skikking op fisiese toestelle laat loop, kan jy hierdie stap oorslaan.

Ek het sgdisk vir hierdie doel gebruik en die partisietabel van /dev/sdc na /dev/sdf gekopieer. Maak seker dat u toestelname vervang om by u eie te pas soos toepaslik.

Let op die volgorde hier: jy lys die "tot" ry eerste! Dit is 'n bietjie teen-intuïtief vir my, maar maak net seker jy kry dit reg sodat jy nie nog 'n aandrywingsfout in die skikking kry nie ;-)

sgdisk -R /dev/sdf /dev/sdc

Genereer dan nuwe UUID's vir die nuwe skyf om UUID-konflikte te vermy:

sgdisk -G /dev/sdf

En nou het die tyd uiteindelik aangebreek om die nuwe aandrywer by die skikking te voeg en die herbou-partytjie aan die gang te kry! (Oukei, dit is nie regtig 'n partytjie nie, dit is eintlik 'n redelik stadige en ontsenuende proses, aangesien jy regtig, regtig nie wil hê dat nog 'n aandrywing op hierdie stadium misluk nie. Bier kan egter help)

In elk geval, om die nuwe aandrywer by die skikking te voeg, gee hierdie opdrag (weereens, maak seker dat u toestelname vervang met u eie soos toepaslik):

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

As alles goed gaan, sal die aandrywer sonder hik by die skikking gevoeg word. Ek glo dit word eintlik by verstek as 'n "hot spare" bygevoeg, maar aangesien hierdie skikking 'n skyf ontbreek (die een wat misluk het), word dit dadelik in gebruik geneem en die herbouproses sal begin.

Jy kan dit so dophou:

watch cat /proc/mdstat

Dit sal waarskynlik 'n rukkie neem; op my lae bediener (grootliks gebaseer op verbruikersgraad hardeware en lessenaaraandrywers, let wel) kon dit net minder as 100 MB/sek bereik. Hou in gedagte dat dit RAID-6 is, so daar is baie pariteitsberekeninge betrokke by 'n herbou; 'n RAID-10 sou baie vinniger gewees het. Hierdie spesifieke masjien het 'n AMD A10 9700E vierkern-SVE (die "E" wat beteken dat dit 'n ondergeklokte energiedoeltreffende model is, dws nie supervinnig nie), net om jou 'n idee te gee van wat om te verwag. Met die nege 8 TB-aandrywers in my opstelling, het die volle herbou net meer as 24 uur geneem.

Tydens die herbou kan jy die lêerstelsel op die skikking monteer en dit soos normaal gebruik as jy wil, maar ek verkies om dit aan die herbou oor te laat totdat dit klaar is. Hou in gedagte dat as een aandrywing misluk, 'n ander binnekort kan volg, so jy wil hê dat die herbou so vinnig moontlik gedoen moet word, aangesien jy regtig nie wil hê dat 'n ander aandrywing gedurende daardie tyd misluk nie. Moet dit dus nie belas met ander IO wat nie streng nodig is nie.

Sodra dit klaar is, voeg dit terug by jou /etc/fstab-lêer, herlaai en geniet jou lêers :-)

Deel op BlueskyDeel op FacebookDeel op LinkedInDeel op TumblrDeel op XDeel op LinkedInSpeld op Pinterest

Mikkel Bang Christensen

Oor die skrywer

Mikkel Bang Christensen
Mikkel is die skepper en eienaar van miklix.com. Hy het meer as 20 jaar ondervinding as 'n professionele rekenaarprogrammeerder/sagteware-ontwikkelaar en is tans voltyds in diens van 'n groot Europese IT-korporasie. Wanneer hy nie blog nie, spandeer hy sy vrye tyd aan 'n groot verskeidenheid belangstellings, stokperdjies en aktiwiteite, wat tot 'n mate weerspieël kan word in die verskeidenheid onderwerpe wat op hierdie webwerf gedek word.