Kubadilisha Hifadhi Iliyoshindwa katika safu ya mdadm kwenye Ubuntu
Iliyochapishwa: 15 Februari 2025, 22:03:15 UTC
Mara ya mwisho kusasishwa: 12 Januari 2026, 08:50:09 UTC
Ikiwa uko katika hali ya kutisha ya kuwa na hitilafu ya kiendeshi katika safu ya RAID ya mdadm, makala haya yanaelezea jinsi ya kuibadilisha kwa usahihi kwenye mfumo wa Ubuntu.
Replacing a Failed Drive in an mdadm Array on Ubuntu
Taarifa katika chapisho hili inategemea Ubuntu 18.04 na toleo la mdadm lilijumuishwa katika hazina zake; wakati wa kuandika v4.1-rc1. Huenda ikawa halali au isiwe halali kwa matoleo mengine.
Hivi majuzi nilipata hitilafu ya ghafla ya kiendeshi kwenye seva yangu ya faili ya nyumbani, ambayo ina viendeshi tisa katika safu ya mdadm RAID-6. Hilo huwa linatisha kila wakati, lakini kwa bahati nzuri niliweza kupata haraka kiendeshi mbadala ambacho tayari kiliwasilishwa siku iliyofuata ili niweze kuanza ujenzi upya.
Kwa kweli nilikuwa na bei nafuu kidogo nilipoanzisha seva ya faili hapo awali; ni diski mbili tu ndizo diski halisi za NAS (Seagate IronWolf), huku zingine zikiwa diski za mezani (Seagate Barracuda). Haishangazi, ilikuwa moja ya diski za mezani ambazo zilikuwa zimeacha kufanya kazi (baada ya karibu miaka mitatu ya huduma, ingawa). Ilikuwa imekufa kabisa; baada ya kuihamisha kwenye kizingiti cha USB cha mezani nilichopata ni sauti ya kubofya ya kutisha na wala Ubuntu 20.04 wala Windows 10 hawakuweza kuigundua.
Naam, endelea kwenye sehemu ya kubadilisha (na ndio, diski mpya niliyonunua ilikuwa IronWolf, somo nililojifunza) - ingawa inatisha kupoteza diski katika safu inayoendelea, inatisha zaidi ikiwa hujui utaratibu sahihi wa kuibadilisha. Sio mara ya kwanza kulazimika kubadilisha diski iliyoshindwa katika safu ya mdadm, lakini kwa bahati nzuri ni nadra sana kwamba kwa kawaida hulazimika kutafuta amri zinazofaa. Wakati huu niliamua kutengeneza mwongozo wangu mdogo kwa ajili ya marejeleo ya baadaye.
Kwa hivyo, kwanza kabisa, unapopokea barua pepe ya tukio la kufeli linaloogopesha kutoka kwa mdadm, unahitaji kubaini ni kiendeshi kipi kimefeli. Hakika, kitakuambia jina la kifaa (katika kesi yangu /dev/sdf), lakini labda haijulikani ni kiendeshi kipi halisi kwani majina hayo yanaweza kubadilika wakati mashine inapowashwa.
Ikiwa huna uhakika hata ni jina gani la kifaa ambalo halijafanya kazi, unaweza kutumia amri ifuatayo ili kujua (badilisha /dev/md0 na kifaa chako cha RAID):
Kama ilivyotajwa, katika kesi yangu ilikuwa /dev/sdf, kwa hivyo tuendelee na hilo.
Kisha, unaweza kujaribu kupata nambari ya serial ya diski iliyoshindwa kwa kutoa amri hii:
(ikiwa smartctl haipatikani, unahitaji kusakinisha kifurushi cha smartmontools kwenye Ubuntu)
Nambari ya mfululizo inaweza kulinganishwa na nambari za mfululizo kwenye lebo halisi kwenye diski ili kubaini ni ipi imeshindwa.
Wakati huu, sikuwa na bahati sana. Hifadhi ilikuwa imekufa kabisa na hata ilikataa kutoa data ya SMART au nyingine, ikiwa ni pamoja na nambari ya mfululizo.
Kwa kuwa nilikuwa na ufikiaji wa kawaida wa seva (ambayo unahitaji sana ikiwa utabadilisha kiendeshi halisi mwenyewe, nadhani ;-)) na seva ilikuwa inafanya kazi wakati diski ilishindwa (na iliendelea kufanya kazi vizuri kutokana na upungufu wa RAID-6), nilitumia njia ya zamani sana, lakini yenye ufanisi mkubwa na dhahiri, ya kunakili faili kubwa kwenye seva na kutazama ni taa gani ya HDD ambayo haikuwaka. Ndani ya sekunde chache nilikuwa nimemtambua mhalifu.
Sasa, kabla ya kuondoa kiendeshi halisi, ni wazo zuri kumjulisha rasmi mdadm kuhusu nia hii, kwa kutoa amri hii (badilisha majina ya kifaa na yako inavyofaa):
Baada ya kufanikiwa, mdadm atajibu kwa ujumbe unaosema kwamba "imeondoa" diski, inaonekana kwa sababu kifaa cha uvamizi pepe kilikuwa kinafanya kazi wakati huo.
Ikiwa itashindwa na ujumbe wa hitilafu sawa na "kifaa au rasilimali ina shughuli nyingi", huenda ikawa kwamba mdadm hajasajili kiendeshi kuwa kimeshindwa kabisa. Ili kuifanya ifanye hivyo, toa amri hii (tena, kumbuka kubadilisha majina ya kifaa na chako inavyofaa):
Baada ya hapo, unapaswa kuwa na uwezo wa kuondoa kifaa kutoka kwa safu na amri ya awali.
Sasa ni wakati wa kubadilisha kiendeshi. Ikiwa una uhakika kweli, kama, kama, kweli, kwamba mashine yako na kidhibiti chako vinaunga mkono ubadilishaji wa hot, unaweza kufanya hivi bila kuzima mashine. Hiyo ndiyo njia ya kuendelea na mifumo muhimu ya uzalishaji inayoendesha vifaa halisi na sahihi vya seva ambavyo unajua kwa hakika vinaweza kuvishughulikia. Seva yangu ya faili ya nyumbani inategemea ubao wa mama wa eneo-kazi wa kiwango cha watumiaji na vidhibiti kadhaa vya SATA visivyo na jina katika nafasi za PCIe ili kutoa milango zaidi ya SATA, ingawa.
Ingawa SATA kwa ujumla inapaswa kuunga mkono ubadilishaji wa moto, sikuwa karibu kuhatarisha chochote katika usanidi huu, kwa hivyo nilichagua kuzima mashine wakati wa kubadilisha kiendeshi.
Kabla ya kufanya hivyo, ni vyema kutoa maoni kuhusu kifaa cha uvamizi katika faili ya /etc/fstab ili Ubuntu isijaribu kukiweka kiotomatiki kwenye mfumo unaofuata wa kuwasha, kwa sababu kinaweza kutundika na kukulazimisha kuingia katika hali ya kurejesha data kutokana na safu ya RAID iliyoharibika. Hilo linaweza lisiwe tatizo kubwa ikiwa ni mfumo wa eneo-kazi, lakini ninaendesha seva hii bila kichwa bila kifuatiliaji au kibodi kilichounganishwa, kwa hivyo hii itakuwa shida kidogo.
Baada ya kuwasha mashine ukiwa na kiendeshi kipya kinachong'aa kilichosakinishwa, tumia lsblk au njia nyingine ya kukitambua. Ikiwa hujabadilisha kitu kingine chochote, huenda (lakini si lazima) kikapata jina sawa na kiendeshi ulichobadilisha. Katika hali yangu, kilipata jina hilo, kwa hivyo kipya pia huitwa /dev/sdf.
Kwa kuwa safu yangu inategemea vizigeu badala ya vifaa halisi, nilihitaji kunakili jedwali la kizigeu kutoka kwenye diski inayofanya kazi hadi kwenye diski mpya ili kuhakikisha kuwa zinafanana kabisa. Ukiendesha safu yako kwenye vifaa halisi badala yake, unaweza kuruka hatua hii.
Nilitumia sgdisk kwa kusudi hili, nikinakili jedwali la kizigeu kutoka /dev/sdc hadi /dev/sdf. Hakikisha unabadilisha majina ya vifaa ili yalingane na yako inavyofaa.
Angalia mpangilio hapa: unaorodhesha kiendeshi cha "kwa" kwanza! Hili ni jambo lisiloeleweka kwangu, lakini hakikisha tu unalifanya vizuri ili usipate hitilafu nyingine ya kiendeshi kwenye safu ;-)
Kisha ili kuepuka migogoro ya UUID, tengeneza UUID mpya kwa ajili ya kiendeshi kipya:
Na sasa hatimaye wakati umefika wa kuongeza kiendeshi kipya kwenye safu na kuanza sherehe ya kujenga upya! (Sawa, sio sherehe kweli, kwa kweli ni mchakato wa polepole na wa kutisha kwani hutaki kiendeshi kingine kifanye kazi kwa wakati huu. Bia inaweza kusaidia, ingawa)
Kwa vyovyote vile, ili kuongeza kiendeshi kipya kwenye safu, toa amri hii (tena, hakikisha unabadilisha majina ya kifaa na chako kama inavyofaa):
Ikiwa yote yataenda vizuri, diski itaongezwa kwenye safu bila vikwazo. Ninaamini imeongezwa kama "kipekee cha ziada" kwa chaguo-msingi, lakini kwa kuwa safu hii haina diski (ile iliyoshindwa), inatumika mara moja na mchakato wa kujenga upya utaanza.
Unaweza kuifuatilia kama ifuatavyo:
Huenda hii itachukua muda; kwenye seva yangu ya chini (kwa kiasi kikubwa kulingana na vifaa vya kiwango cha watumiaji na viendeshi vya kompyuta, kumbuka) iliweza kufikia chini ya 100 MB/sekunde. Kumbuka kwamba hii ni RAID-6, kwa hivyo kuna hesabu nyingi za usawa zinazohusika na ujenzi upya; RAID-10 ingekuwa ya haraka zaidi. Mashine hii maalum ina CPU ya AMD A10 9700E quad core ("E" ikimaanisha kuwa ni modeli inayotumia nishati kidogo, yaani si ya haraka sana), ili kukupa wazo la nini cha kutarajia. Kwa viendeshi tisa vya TB 8 katika usanidi wangu, ujenzi kamili ulichukua zaidi ya saa 24.
Wakati wa ujenzi upya, unaweza kuweka mfumo wa faili kwenye safu na kuutumia kama kawaida ukitaka, lakini napendelea kuuacha kwenye ujenzi upya hadi utakapokamilika. Kumbuka kwamba ikiwa diski moja itashindwa, nyingine inaweza kufuata hivi karibuni, kwa hivyo unataka ujenzi upya ufanywe haraka iwezekanavyo kwani hutaki diski nyingine ishindwe wakati huo. Kwa hivyo, usiibebeshe kwa IO nyingine ambayo si lazima kabisa.
Mara tu ikikamilika, iongeze kwenye faili yako ya /etc/fstab, washa upya na ufurahie faili zako :-)
