Ubuntu-da mdadm massivində uğursuz diskin dəyişdirilməsi
Nəşr olundu: 15 fevral 2025 at 22:09:10 UTC
Əgər mdadm RAID massivində sürücünün nasazlığı ilə bağlı qorxulu vəziyyətdəsinizsə, bu məqalə onu Ubuntu sistemində düzgün şəkildə necə əvəz edəcəyinizi izah edir.
Replacing a Failed Drive in an mdadm Array on Ubuntu
Bu yazıdakı məlumat Ubuntu 18.04 və onun depolarına daxil edilmiş mdadm versiyasına əsaslanır; v4.1-rc1 yazarkən. Digər versiyalar üçün keçərli və ya olmaya bilər.
Bu yaxınlarda mdadm RAID-6 massivində doqquz diskdən ibarət olan ev fayl serverimdə qəfil sürücü nasazlığı oldu. Bu, həmişə qorxuludur, amma xoşbəxtlikdən mən ertəsi gün təhvil verilmiş əvəzedici diski tez bir zamanda əldə edə bildim ki, yenidən qurmağa başlaya bildim.
Mən ilkin olaraq fayl serverini qurarkən, etiraf etmək lazımdır ki, bir az çox ucuz idim; disklərdən yalnız ikisi həqiqi NAS sürücüləridir (Seagate IronWolf), qalanları isə masa üstü sürücüləridir (Seagate Barracuda). Təəccüblü deyil ki, bu, imtina edən masaüstü disklərdən biri idi (hərçənd demək olar ki, üç illik xidmətdən sonra). Tamamilə ölü idi; onu masa üstü USB korpusuna köçürdükdən sonra əldə etdiyim tək şey əsəbiləşən klik səsi oldu və nə Ubuntu 20.04, nə də Windows 10 bunu aşkar edə bilmədi.
Oh, əvəzedici hissəyə keçək (və bəli, aldığım yeni sürücü IronWolf idi, dərs öyrənildi) - işləyən massivdə bir sürücünü itirmək qədər qorxuludur, onu dəyişdirmək üçün düzgün proseduru bilmirsinizsə, daha qorxuludur. Bu, ilk dəfə deyil ki, mdadm massivində uğursuz diski əvəz etməli oluram, amma xoşbəxtlikdən bu, o qədər nadirdir ki, adətən müvafiq əmrləri axtarmalı oluram. Bu dəfə gələcək istinad üçün öz kiçik bələdçimi hazırlamağa qərar verdim.
Beləliklə, ilk növbədə, mdadm-dən qorxulu uğursuz hadisə e-poçtunu aldığınızda, hansı diskin uğursuz olduğunu müəyyənləşdirməlisiniz. Əlbəttə, o, sizə cihazın adını deyəcək (mənim vəziyyətimdə /dev/sdf), lakin yəqin ki, maşın işə salındıqda həmin adların hansı fiziki diskin dəyişə biləcəyi aydın deyil.
Hansı cihazın adının uğursuz olduğuna əmin deyilsinizsə, öyrənmək üçün aşağıdakı əmrdən istifadə edə bilərsiniz (/dev/md0-ı RAID cihazınızla əvəz edin):
Qeyd edildiyi kimi, mənim vəziyyətimdə bu /dev/sdf idi, buna görə də davam edək.
Sonra, bu əmri verməklə uğursuz sürücünün seriya nömrəsini tapmağa cəhd edə bilərsiniz:
(smartctl tapılmazsa, smartmontools paketini Ubuntu-da quraşdırmalısınız)
Daha sonra hansının uğursuz olduğunu anlamaq üçün seriya nömrəsini disklərdəki fiziki etiketdəki seriya nömrələri ilə müqayisə etmək olar.
Baxmayaraq ki, bu dəfə o qədər də şanslı deyildim. Sürücü tamamilə ölü idi və hətta SMART və ya seriya nömrəsi daxil olmaqla digər məlumatları təqdim etməkdən imtina etdi.
Serverə fiziki girişim olduğundan (fiziki sürücünü özünüz əvəz edəcəksinizsə, buna həqiqətən ehtiyacınız var, güman edirəm ki, ;-)) və disk uğursuz olduqda server həqiqətən işləyirdi (və RAID-6 ehtiyatı sayəsində yaxşı işləməyə davam etdi), mən həqiqətən primitiv, lakin əslində çox təsirli və aşkar bir üsulla getdim. Bir neçə saniyə ərzində mən günahkarı müəyyən etdim.
İndi, fiziki diski çıxarmazdan əvvəl, bu əmri verməklə mdadm-a bu niyyət barədə rəsmi məlumat vermək yaxşı bir fikirdir (uyğun olaraq cihaz adlarını özünüzlə əvəz edin):
Müvəffəqiyyət əldə etdikdən sonra, mdadm sürücünün "isti çıxarıldığını" bildirən bir mesajla cavab verəcək, yəqin ki, virtual reyd cihazı o anda işləyir.
Əgər o, "cihaz və ya resurs məşğuldur" kimi bir səhv mesajı ilə uğursuz olarsa, bu, mdadm-in əslində diski qeydiyyatdan keçirməməsi ola bilər ki, tamamilə sıradan çıxıb. Bunu etmək üçün bu əmri verin (yenidən lazım olduqda cihaz adlarını özünüzlə əvəz etməyi unutmayın):
Bundan sonra, əvvəlki komanda ilə cihazı massivdən çıxara bilməlisiniz.
İndi sürücünü həqiqətən dəyişdirməyin vaxtı gəldi. Əgər siz həqiqətən, həqiqətən, həqiqətən , sizin maşınınızın və nəzarətçinizin isti dəyişdirməni dəstəklədiyinə əminsinizsə, maşını söndürmədən bunu edə bilərsiniz. Bu, real, düzgün server avadanlığı üzərində işləyən kritik istehsal sistemlərinə keçməyin yolu olardı ki, bunun öhdəsindən gələ bilər. Mənim ev fayl serverim daha çox SATA portu təmin etmək üçün PCIe yuvalarında bir neçə yarı-adsız SATA nəzarətçiləri olan istehlakçı dərəcəli masaüstü anakarta əsaslanır.
Baxmayaraq ki, SATA ümumiyyətlə qaynar dəyişdirməni dəstəkləməlidir , mən bu quraşdırmada heç nəyi riskə atmaq fikrində deyildim, ona görə də sürücünü dəyişdirərkən maşını bağlamağı seçdim.
Bunu etməzdən əvvəl /etc/fstab faylında reyd cihazını şərh etmək yaxşı fikirdir ki, Ubuntu onu növbəti yükləmə zamanı avtomatik quraşdırmaya çalışmasın, çünki o, deqradasiya olunmuş RAID massivinə görə sizi asıb bərpa rejiminə keçirməyə məcbur edə bilər. Əgər bu, iş masası sistemidirsə, bu, böyük problem olmaya bilər, lakin mən bu serveri monitor və ya klaviatura əlavə etmədən başsız idarə edirəm, ona görə də bu, bir az əngəl olacaq.
Quraşdırılmış parlaq yeni sürücü ilə maşını yüklədikdən sonra onu müəyyən etmək üçün lsblk və ya başqa vasitələrdən istifadə edin. Əgər siz başqa heç nə dəyişməmisinizsə, o, yəqin ki (lakin mütləq deyil) dəyişdirdiyiniz sürücü ilə eyni adı alacaq. Mənim vəziyyətimdə belə oldu, yenisi də /dev/sdf adlanır.
Massilim fiziki cihazlardan daha çox arakəsmələrə əsaslandığı üçün, onların tam olaraq eyni olduğundan əmin olmaq üçün bölmə cədvəlini işləyən sürücüdən yeni diskə köçürməli oldum. Bunun əvəzinə massivinizi fiziki cihazlarda işlədirsinizsə, bu addımı atlaya bilərsiniz.
Bu məqsədlə bölmə cədvəlini /dev/sdc-dən /dev/sdf-ə köçürərək sgdisk-dən istifadə etdim. Müvafiq olaraq cihaz adlarını özünüzlə uyğunlaşdırmaq üçün dəyişdirdiyinizə əmin olun.
Buradakı sıraya diqqət yetirin : əvvəlcə "to" sürücüsünü qeyd edin! Bu, mənim üçün bir az əks-intuitivdir, lakin serialda başqa bir sürücü nasazlığı ilə üzləşməmək üçün düzgün başa düşdüyünüzə əmin olun ;-)
Sonra UUID münaqişələrinin qarşısını almaq üçün yeni sürücü üçün yeni UUID-lər yaradın:
İndi nəhayət, seriala yeni disk əlavə etmək və yenidən qurma partiyasına başlamaq vaxtı gəldi! (Yaxşı, bu, həqiqətən bir ziyafət deyil, bu, əslində olduqca yavaş və əsəbi bir prosesdir, çünki bu anda başqa bir sürücünün uğursuz olmasını həqiqətən istəmirsiniz. Pivə kömək edə bilər)
Hər halda, seriala yeni disk əlavə etmək üçün bu əmri verin (yenidən cihaz adlarını müvafiq olaraq özünüzlə əvəz etməyinizə əmin olun):
Hər şey qaydasındadırsa, sürücü hıçqırıq olmadan seriala əlavə olunacaq. İnanıram ki, o, əslində defolt olaraq "isti ehtiyat" kimi əlavə edilib, lakin bu massivdə disk (uğursuz olan) olmadığı üçün o, dərhal istifadəyə verilir və yenidən qurma prosesi başlayacaq.
Onu belə izləyə bilərsiniz:
Bu, yəqin ki, bir az vaxt aparacaq; mənim aşağı serverimdə (əsasən istehlakçı dərəcəli aparat və masaüstü disklərə əsaslanaraq) 100 MB/san sürətinə çata bildi. Nəzərə alın ki, bu, RAID-6-dır, ona görə də yenidən qurma ilə bağlı çoxlu paritet hesablamaları var; RAID-10 daha sürətli olardı. Bu xüsusi maşın AMD A10 9700E dördnüvəli CPU-ya malikdir (“E” o deməkdir ki, o, enerjiyə qənaətcil modeldir, yəni super sürətli deyil). Quraşdırdığım doqquz 8 TB disklə tam yenidənqurma 24 saatdan bir qədər çox çəkdi.
Yenidən qurma zamanı siz fayl sistemini massivdə quraşdıra və istəsəniz ondan normal istifadə edə bilərsiniz, lakin mən onu bitənə qədər yenidən qurmağa buraxmağı üstün tuturam. Nəzərə alın ki, bir disk uğursuz olarsa, tezliklə başqa bir disk də ardınca gələ bilər, buna görə də siz yenidən qurmanın mümkün qədər tez həyata keçirilməsini istəyirsiniz, çünki həqiqətən bu müddət ərzində başqa bir diskin sıradan çıxmasını istəmirsiniz. Buna görə də, onu ciddi şəkildə lazım olmayan digər IO ilə yükləməyin.
Tamamlandıqdan sonra onu /etc/fstab faylınıza əlavə edin, yenidən başladın və fayllarınızdan həzz alın :-)