Kubadilisha Hifadhi Iliyoshindwa katika safu ya mdadm kwenye Ubuntu
Iliyochapishwa: 15 Februari 2025, 22:03:15 UTC
Ikiwa uko katika hali ya kutisha ya kushindwa kwa gari katika safu ya RAID ya mdadm, nakala hii inaelezea 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 limejumuishwa katika hazina zake; wakati wa kuandika v4.1-rc1. Inaweza au isiwe halali kwa matoleo mengine.
Hivi majuzi nilipata hitilafu ya ghafla ya kiendeshi katika seva yangu ya faili ya nyumbani, ambayo ina viendeshi tisa katika safu ya mdadm RAID-6. Hiyo inatisha kila wakati, lakini kwa bahati nzuri niliweza kupata hifadhi mbadala ambayo iliwasilishwa tayari siku iliyofuata ili niweze kuanza ujenzi upya.
Kwa hakika nilikuwa nafuu sana nilipoanzisha seva ya faili awali; mbili tu ya anatoa ni NAS halisi anatoa (Seagate IronWolf), wakati wengine ni anatoa desktop (Seagate Barracuda). Haishangazi, ilikuwa moja ya anatoa za desktop ambazo zilikuwa zimeacha (baada ya karibu miaka mitatu ya huduma, ingawa). Ilikuwa imekufa kabisa; baada ya kuihamisha hadi kwenye eneo lililofungwa la USB la eneo-kazi nilichotoka ndani yake ilikuwa sauti ya kubofya isiyo na wasiwasi na wala Ubuntu 20.04 wala Windows 10 hawakuweza kuigundua.
Kweli, kwenye sehemu ya uingizwaji (na ndio, gari jipya nililonunua lilikuwa IronWolf, somo lililojifunza) - inatisha kama kupoteza gari katika safu inayoendesha, inatisha zaidi ikiwa haujui utaratibu sahihi wa kuibadilisha. Sio mara ya kwanza imenibidi kuchukua nafasi ya kiendeshi kilichoshindwa katika safu ya mdadm, lakini kwa bahati nzuri ni nadra sana kwamba mimi hulazimika kutafuta amri zinazofaa. Wakati huu niliamua kupiga mwongozo wangu mdogo kwa kumbukumbu ya baadaye.
Kwa hivyo, kwanza kabisa, unapopata barua pepe ya tukio la kutisha kutoka kwa mdadm, unahitaji kutambua ni kiendeshi gani kimeshindwa. Hakika, itakuambia jina la kifaa (kwa upande wangu /dev/sdf), lakini labda sio dhahiri ni kiendeshi kipi ambacho kwa kweli ni kama majina hayo yanaweza kubadilika wakati mashine imezimwa.
Ikiwa huna uhakika hata jina la kifaa limeshindwa, unaweza kutumia amri ifuatayo ili kujua (badilisha /dev/md0 na kifaa chako cha RAID):
Kama ilivyotajwa, kwa upande wangu ilikuwa /dev/sdf, kwa hivyo wacha tuendelee na hiyo.
Kisha, unaweza kujaribu kupata nambari ya serial ya kiendeshi kilichoshindwa kwa kutoa amri hii:
(ikiwa smartctl haipatikani, unahitaji kusakinisha kifurushi cha smartmontools kwenye Ubuntu)
Nambari ya serial basi inaweza kulinganishwa na nambari za serial kwenye lebo halisi kwenye viendeshi ili kujua ni ipi imeshindwa.
Wakati huu, sikuwa na bahati sana, ingawa. Hifadhi ilikuwa imekufa kabisa na hata ilikataa kutoa SMART au data nyingine, ikiwa ni pamoja na nambari ya serial.
Kwa kuwa nilikuwa na ufikiaji wa kawaida wa seva (ambayo unahitaji sana ikiwa utabadilisha kiendeshi chako mwenyewe, nadhani ;-)) na seva ilikuwa ikifanya kazi wakati diski ilishindwa (na iliendelea kufanya kazi vizuri kutokana na upungufu wa RAID-6), nilienda na njia ya primitive, lakini yenye ufanisi sana na dhahiri, ya kunakili faili kubwa kwa seva na kutazama ambayo HDD haikuangaza. Ndani ya sekunde chache nilikuwa nimemtambua mhalifu.
Sasa, kabla ya kuanza kuendesha gari, ni wazo nzuri kumjulisha rasmi mdadm juu ya dhamira hii, kwa kutoa amri hii (badilisha majina ya kifaa na yako mwenyewe inavyofaa):
Ikifanikiwa, mdadm atajibu na ujumbe akisema kwamba "imeondoa moto" kwenye kiendeshi, inaonekana kwa sababu kifaa cha uvamizi kinaendelea wakati huo.
Ikishindikana na ujumbe wa makosa sawa na "kifaa au rasilimali ina shughuli nyingi", inaweza kuwa kwamba mdadm kwa kweli haijasajili kiendeshi kuwa kimeshindwa kabisa. Ili kufanya hivyo, toa amri hii (tena, kumbuka kubadilisha majina ya kifaa na yako mwenyewe inavyofaa):
Baada ya hapo, unapaswa kuwa na uwezo wa kuondoa kifaa kutoka kwa safu na amri ya awali.
Sasa ni wakati wa kuchukua nafasi ya kiendeshi. Ikiwa kweli, kweli - kama, kweli - hakika mashine yako na kidhibiti kinaauni ubadilishanaji moto, unaweza kufanya hivi bila kuzima mashine. Hiyo itakuwa njia ya kuendelea na mifumo muhimu ya uzalishaji inayoendesha kwenye vifaa halisi, sahihi vya seva ambavyo unajua kwa kweli vinaweza kushughulikia. Seva yangu ya faili ya nyumbani inategemea ubao wa mama wa daraja la watumiaji na vidhibiti kadhaa vya SATA vya nusu-noname kwenye nafasi za PCIe kutoa bandari zaidi za SATA, ingawa.
Ingawa SATA kwa ujumla inapaswa kusaidia ubadilishanaji moto, sikuwa karibu kuhatarisha chochote katika usanidi huu, kwa hivyo nilichagua kuzima mashine wakati nikibadilisha kiendeshi.
Kabla ya kufanya hivyo, ni wazo nzuri kutoa maoni juu ya kifaa cha uvamizi kwenye /etc/fstab faili ili Ubuntu usijaribu kuiweka kiotomatiki kwenye buti inayofuata, kwa sababu inaweza kunyongwa na kukulazimisha katika hali ya uokoaji kwa sababu ya safu iliyoharibika ya RAID. Hilo linaweza lisiwe suala kubwa ikiwa ni mfumo wa eneo-kazi, lakini ninaendesha seva hii bila kichwa bila kifuatiliaji au kibodi iliyoambatanishwa, kwa hivyo hii itakuwa shida kidogo.
Baada ya kuwasha mashine na kiendeshi kipya kinachong'aa kilichosakinishwa, tumia lsblk au njia nyingine kuitambua. Ikiwa haujabadilisha kitu kingine chochote, labda (lakini sio lazima ) kupata jina sawa na kiendeshi ulichobadilisha. Kwa upande wangu ilifanya, kwa hivyo mpya pia inaitwa /dev/sdf.
Kwa kuwa safu yangu inategemea kizigeu badala ya vifaa vya kawaida, nilihitaji kunakili jedwali la kizigeu kutoka kwa kiendeshi cha kufanya kazi hadi kiendeshi kipya 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 umebadilisha majina ya kifaa ili yalingane na yako inavyofaa.
Angalia mpangilio hapa: unaorodhesha "ili" gari kwanza! Hili ni jambo lisiloeleweka kwangu, lakini hakikisha unaipata sawa ili usipate kutofaulu kwa kiendeshi kingine katika safu ;-)
Kisha ili kuzuia mizozo ya UUID, toa UUID mpya kwa kiendeshi kipya:
Na sasa hatimaye wakati umefika wa kuongeza kiendeshi kipya kwenye safu na kuanzisha karamu ya kuunda upya! (Sawa, sio sherehe, kwa kweli ni mchakato wa polepole na wa kusikitisha kwani kwa kweli, hutaki gari lingine lishindwe kwa wakati huu. Bia inaweza kusaidia, ingawa)
Walakini, ili kuongeza kiendeshi kipya kwenye safu, toa amri hii (tena, hakikisha kubadilisha majina ya kifaa na yako mwenyewe inavyofaa):
Ikiwa kila kitu kitaenda vizuri, gari litaongezwa kwenye safu bila hiccups. Ninaamini imeongezwa kama "vipuri vya moto" kwa chaguo-msingi, lakini kwa kuwa safu hii inakosa diski (ile ambayo imeshindwa), inatumiwa mara moja na mchakato wa kujenga upya utaanza.
Unaweza kuiangalia kama hii:
Hii pengine itachukua muda; kwenye seva yangu ya hali ya chini (kulingana na vifaa vya kiwango cha watumiaji na viendeshi vya mezani, kumbuka) iliweza kufikia chini ya 100 MB/sec. Kumbuka kuwa hii ni RAID-6, kwa hivyo kuna hesabu nyingi za usawa zinazohusika na uundaji upya; RAID-10 ingekuwa haraka sana. Mashine hii ina AMD A10 9700E quad core CPU ("E" ikimaanisha kuwa ni kielelezo cha matumizi ya nishati isiyo na saa, yaani, si ya haraka sana), ili tu kukupa wazo la nini cha kutarajia. Nikiwa na viendeshi tisa vya TB 8 katika usanidi wangu, uundaji upya kamili ulichukua zaidi ya saa 24.
Wakati wa kujenga upya, unaweza kuweka mfumo wa faili kwenye safu na kuitumia kama kawaida ikiwa unataka, lakini napendelea kuiacha ijengwe tena hadi ikamilike. Kumbuka kwamba ikiwa gari moja litashindwa, lingine linaweza kufuata hivi karibuni, kwa hivyo unataka ujenzi ufanyike haraka iwezekanavyo kwani hutaki kiendeshi kingine kishindwe wakati huo. Kwa hivyo, usiibebeshe na IO zingine ambazo sio lazima kabisa.
Mara tu ikiwa imekamilika, iongeze kwenye /etc/fstab faili yako, washa upya na ufurahie faili zako :-)