Замена неисправног диска у мдадм низу на Убунту-у
Објављено: 15. фебруар 2025. 22:09:08 UTC
Ако сте у страшној ситуацији да имате квар диска у мдадм РАИД низу, овај чланак објашњава како да га исправно замените на Убунту систему.
Replacing a Failed Drive in an mdadm Array on Ubuntu
Информације у овом посту су засноване на Убунту 18.04 и верзији мдадм-а која је укључена у његова спремишта; у време писања в4.1-рц1. Може, али и не мора бити важеће за друге верзије.
Недавно сам имао изненадни квар диска на мом кућном серверу датотека, који се састоји од девет дискова у мдадм РАИД-6 низу. То је увек застрашујуће, али срећом сам успео брзо да набавим заменски диск који је испоручен већ следећег дана да бих могао да започнем реконструкцију.
Додуше, био сам мало превише јефтин када сам првобитно подесио фајл сервер; само два диска су стварни НАС дискови (Сеагате ИронВолф), док су остали десктоп дискови (Сеагате Баррацуда). Није изненађујуће да је то био један од десктоп драјвова који је одустао (ипак после скоро три године рада). Био је потпуно мртав; након што сам га преместио у УСБ кућиште за десктоп рачунар, све што сам добио био је узнемирујући звук кликтања и ни Убунту 20.04 ни Виндовс 10 нису могли да га открију.
Ох, добро, да пређемо на део за замену (и да, нови диск који сам купио је био ИронВолф, научена лекција) - колико год да је застрашујуће да изгубите диск у активном низу, још је страшније ако не знате исправну процедуру за његову замену. Није први пут да морам да заменим неуспели диск у мдадм низу, али на срећу је тако ретко да обично морам да тражим одговарајуће команде. Овај пут сам одлучио да направим свој мали водич за будућу употребу.
Дакле, пре свега, када од мдадм-а добијете страшну е-пошту о неуспешном догађају, морате да идентификујете који диск је отказао. Наравно, то ће вам рећи име уређаја (у мом случају /дев/сдф), али вероватно није очигледно који је то физички диск јер се та имена могу променити када се машина покрене.
Ако чак нисте сигурни који назив уређаја није успео, можете користити следећу команду да сазнате (замените /дев/мд0 са својим РАИД уређајем):
Као што је поменуто, у мом случају је то био /дев/сдф, па хајде да наставимо са тим.
Затим можете покушати да пронађете серијски број неисправног диска издавањем ове команде:
(ако смартцтл није пронађен, потребно је да инсталирате смартмонтоолс пакет на Убунту)
Серијски број се затим може упоредити са серијским бројевима на физичкој налепници на диск јединицама да би се утврдило који је покварио.
Овај пут, међутим, нисам имао среће. Диск је био потпуно мртав и чак је одбио да пружи СМАРТ или друге податке, укључујући серијски број.
Пошто сам имао физички приступ серверу (који вам је заиста потребан ако ћете сами да замените физички диск, претпостављам ;-)) и сервер је заправо радио када је диск отказао (и наставио да ради добро захваљујући редунданси РАИД-6), користио сам заиста примитивну, али у ствари веома ефикасну и очигледну методу једноставног копирања велике датотеке на сервер и гледање које ХДликер није палио. У року од неколико секунди идентификовао сам кривца.
Сада, пре него што извадите физички диск, добра је идеја да званично обавестите мдадм о овој намери, издавањем ове команде (замените имена уређаја својим сопственим према потреби):
По успеху, мдадм ће одговорити поруком да је „вруће уклонио“ диск, очигледно зато што је виртуелни раид уређај заправо покренут у то време.
Ако не успе са поруком о грешци сличној "уређај или ресурс заузет", може бити да мдадм заправо није регистровао диск да је потпуно отказао. Да бисте то учинили, издајте ову команду (опет, не заборавите да замените имена уређаја својим сопственим према потреби):
Након тога, требало би да будете у могућности да уклоните уређај из низа претходном командом.
Сада је време да заиста замените диск. Ако сте заиста, заиста - као, стварно - сигурни да ваша машина и контролер подржавају замену на врело, можете то да урадите без искључивања машине. То би био начин да идете на критичне производне системе који раде на стварном, одговарајућем серверском хардверу за који знате да то може да поднесе. Мој кућни сервер датотека је заснован на десктоп матичној плочи потрошачког квалитета са неколико полу-нонаме САТА контролера у ПЦИе слотовима да би се ипак обезбедило више САТА портова.
Иако би САТА генерално требало да подржава брзу замену, нисам намеравао ништа да ризикујем у овом подешавању, па сам одлучио да искључим машину док замењујем диск.
Пре него што то урадите, добра је идеја да коментаришете раид уређај у датотеци /етц/фстаб како Убунту не би покушавао да га аутоматски монтира при следећем покретању, јер би могао да се заглави и присили вас у режим опоравка због деградираног РАИД низа. То можда није велики проблем ако је у питању десктоп систем, али овај сервер покрећем без главе без прикљученог монитора или тастатуре, тако да би ово било мало гњаважа.
Након покретања машине са инсталираним сјајним новим диском, користите лсблк или неки други начин да га идентификујете. Ако нисте променили ништа друго, вероватно ће (али не нужно ) добити исто име као диск који сте заменили. У мом случају јесте, тако да се нови такође зове /дев/сдф.
Пошто је мој низ заснован на партицијама, а не на физичким уређајима, морао сам да копирам табелу партиција са радног диска на нови диск како бих се уверио да су потпуно исте. Ако уместо тога покренете свој низ на физичким уређајима, можете прескочити овај корак.
Користио сам сгдиск за ову сврху, копирајући табелу партиција из /дев/сдц у /дев/сдф. Обавезно замените називе уређаја тако да одговарају вашим.
Обратите пажњу на редослед овде: прво наводите „до“ вожње! Ово је мало контраинтуитивно за мене, али само се уверите да сте то урадили како треба како не бисте добили још један квар диска у низу ;-)
Затим да бисте избегли сукобе УУИД-а, генеришите нове УУИД-ове за нови диск:
И сада је коначно дошло време да додате нови диск у низ и започнете забаву за реконструкцију! (У реду, то није баш забава, то је заправо прилично спор и узнемирујући процес јер стварно, стварно не желите да још један диск не успе у овом тренутку. Пиво би ипак могло помоћи)
У сваком случају, да бисте додали нову диск јединицу у низ, издајте ову команду (опет, обавезно замените имена уређаја својим према потреби):
Ако све прође како треба, диск ће бити додат у низ без проблема. Верујем да је заправо додат као „хот спаре“ подразумевано, али пошто овом низу недостаје диск (онај који није успео), одмах се ставља у употребу и процес реконструкције ће почети.
Можете га пратити на следећи начин:
Ово ће вероватно потрајати; на мом скромном серверу (заснованом углавном на хардверу за потрошаче и десктоп дисковима, имајте на уму) успео је да достигне нешто мање од 100 МБ/сец. Имајте на уму да је ово РАИД-6, тако да постоји много калкулација паритета укључених у реконструкцију; РАИД-10 би био много бржи. Ова конкретна машина има АМД А10 9700Е четворојезгарни ЦПУ („Е“ значи да је енергетски ефикасан модел са ниским тактом, тј. није супер брз), само да би вам дао идеју шта да очекујете. Са девет дискова од 8 ТБ у мом подешавању, потпуна реконструкција је трајала нешто више од 24 сата.
Током реконструкције, можете монтирати систем датотека на низ и користити га као нормално ако желите, али ја радије препуштам реконструкцији док се не заврши. Имајте на уму да ако један диск поквари, ускоро може уследити други, тако да желите да се реконструкција обави што је брже могуће јер заиста не желите да други диск откаже током тога. Стога, немојте га оптерећивати другим ИО који није стриктно неопходан.
Када завршите, додајте га назад у /етц/фстаб датотеку, поново покрените и уживајте у датотекама :-)