Miklix

Epäonnistuneen aseman vaihtaminen Ubuntun mdadm-taulukossa

Julkaistu: 15. helmikuuta 2025 klo 22.02.18 UTC

Jos olet pelätyssä tilanteessa, jossa mdadm RAID -ryhmässä on asemavika, tässä artikkelissa kerrotaan, kuinka se korvataan oikein Ubuntu-järjestelmässä.


Tämä sivu on käännetty koneellisesti englannista, jotta se olisi mahdollisimman monen ihmisen saatavilla. Valitettavasti konekääntäminen ei ole vielä täydellistä tekniikkaa, joten virheitä voi esiintyä. Voit halutessasi tarkastella alkuperäistä englanninkielistä versiota täällä:

Replacing a Failed Drive in an mdadm Array on Ubuntu

Tämän viestin tiedot perustuvat Ubuntu 18.04:ään ja sen arkistoihin sisältyvään mdadm-versioon; kirjoitushetkellä v4.1-rc1. Se voi tai ei välttämättä ole voimassa muille versioille.

Minulla oli äskettäin äkillinen asemavika kotitiedostopalvelimessani, joka koostuu yhdeksästä asemasta mdadm RAID-6 -ryhmässä. Se on aina pelottavaa, mutta onneksi sain nopeasti hankittua korvaavan aseman, joka toimitettiin jo seuraavana päivänä, jotta pystyin aloittamaan uudelleenrakentamisen.

Olin kieltämättä hieman liian halpa, kun alun perin määritin tiedostopalvelimen; vain kaksi asemista on todellisia NAS-asemia (Seagate IronWolf), kun taas loput ovat työpöytäasemia (Seagate Barracuda). Ei ole yllättävää, että se oli yksi pöytäkoneista, joka oli luovuttanut (tosin melkein kolmen vuoden palvelun jälkeen). Se oli täysin kuollut; siirryttyäni sen työpöydän USB-koteloon, sain siitä vain pelottavan napsahdusäänen, eikä Ubuntu 20.04 tai Windows 10 pystynyt havaitsemaan sitä.

No, varaosaan (ja kyllä, uusi asema, jonka ostin, oli IronWolf, opittu) - niin pelottavaa kuin aseman menettäminen käynnissä olevassa järjestelmässä on, se on vielä pelottavampaa, jos et tiedä oikeaa vaihtomenettelyä. Tämä ei ole ensimmäinen kerta, kun joudun korvaamaan epäonnistuneen aseman mdadm-taulukossa, mutta onneksi se on niin harvinaista, että minun on yleensä etsittävä oikeat komennot. Tällä kertaa päätin laatia oman pienen oppaani tulevaa käyttöä varten.

Joten ensinnäkin, kun saat pelätyn epäonnistumistapahtumasähköpostin mdadm:ltä, sinun on tunnistettava mikä asema on viallinen. Tietysti se kertoo laitteen nimen (minun tapauksessani /dev/sdf), mutta luultavasti ei ole selvää mikä fyysinen asema todellisuudessa on, koska nimet voivat muuttua, kun kone käynnistetään.

Jos et ole edes varma, mikä laitenimi on epäonnistunut, voit käyttää seuraavaa komentoa selvittääksesi (korvaa /dev/md0 RAID-laitteellasi):

mdadm -–query -–detail /dev/md0

Kuten mainittiin, minun tapauksessani se oli /dev/sdf, joten jatketaan siitä.

Sitten voit yrittää löytää epäonnistuneen aseman sarjanumeron antamalla tämän komennon:

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

(jos smartctl ei löydy, sinun on asennettava smartmontools-paketti Ubuntuun)

Sarjanumeroa voidaan sitten verrata asemien fyysisessä tarrassa oleviin sarjanumeroihin selvittääkseen, kumpi on viallinen.

Tällä kertaa en kuitenkaan ollut niin onnekas. Asema oli täysin kuollut ja jopa kieltäytyi antamasta SMART- tai muita tietoja, mukaan lukien sarjanumero.

Koska minulla oli fyysinen pääsy palvelimeen (jota todella tarvitset, jos aiot vaihtaa fyysisen aseman itse ;-)) ja palvelin oli todella käynnissä, kun levy epäonnistui (ja jatkoi toimintaansa RAID-6:n redundanssin ansiosta), päädyin todella primitiiviseen, mutta itse asiassa erittäin tehokkaaseen ja ilmeiseen tapaan kopioida suuri tiedosto palvelimelle ja katsella mitä HDD light ei. Muutamassa sekunnissa tunnistin syyllisen.

Nyt ennen fyysisen aseman irrottamista on hyvä idea ilmoittaa mdadm:lle tästä tarkoituksesta antamalla tämä komento (korvaa laitenimet omillasi tarpeen mukaan):

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

Onnistuessaan mdadm vastaa viestillä, että se "poisti kuumana" aseman, ilmeisesti siksi, että virtuaalinen raid-laite on todella käynnissä tuolloin.

Jos se epäonnistuu virheilmoituksella, joka muistuttaa "laite tai resurssi varattu", saattaa olla, että mdadm ei itse asiassa ole rekisteröinyt asemaa täysin epäonnistuneeksi. Tee se antamalla tämä komento (muista jälleen korvata laitenimet omillasi tarpeen mukaan):

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

Tämän jälkeen sinun pitäisi pystyä poistamaan laite ryhmästä edellisellä komennolla.

Nyt on aika vaihtaa asema. Jos olet todella, todella - kuten, todella - varma, että koneesi ja ohjaimesi tukevat hot swapping -toimintoa, voit tehdä tämän sammuttamatta konetta. Tämä olisi tapa edetä kriittisissä tuotantojärjestelmissä, jotka toimivat aidolla, oikealla palvelinlaitteistolla, jonka tiedät todellakin pystyvän käsittelemään sitä. Kotitiedostopalvelimeni perustuu kuluttajatason työpöydän emolevyyn, jossa on pari puolinimetöntä SATA-ohjainta PCIe-paikoissa, jotta saadaan enemmän SATA-portteja.

Vaikka SATA:n pitäisi yleensä tukea hot swappingia, en aikonut riskeerata mitään tässä asetuksessa, joten päätin sammuttaa koneen aseman vaihtamisen ajaksi.

Ennen kuin teet sen, on hyvä idea kommentoida raid-laitetta /etc/fstab-tiedostoon, jotta Ubuntu ei yritä liittää sitä automaattisesti seuraavassa käynnistyksessä, koska se saattaa jumittua ja pakottaa sinut palautustilaan heikentyneen RAID-ryhmän vuoksi. Se ei ehkä ole suuri ongelma, jos se on pöytäkonejärjestelmä, mutta käytän tätä palvelinta ilman päätä ilman näyttöä tai näppäimistöä, joten tämä olisi hieman vaivalloista.

Kun olet käynnistänyt koneen kiiltävän uuden aseman ollessa asennettuna, käytä lsblk-komentoa tai jotain muuta tapaa tunnistaa se. Jos et ole muuttanut mitään muuta, se todennäköisesti (mutta ei välttämättä ) saa saman nimen kuin vaihtamasi asema. Minun tapauksessani kävi, joten uutta kutsutaan myös nimellä /dev/sdf.

Koska taulukkoni perustuu osioihin fyysisten laitteiden sijaan, minun piti kopioida osiotaulukko toimivasta asemasta uudelle asemalle varmistaakseni, että ne ovat täsmälleen samat. Jos käytät taulukkoa sen sijaan fyysisissä laitteissa, voit ohittaa tämän vaiheen.

Käytin sgdiskiä tähän tarkoitukseen ja kopioin osiotaulukon tiedostosta /dev/sdc kansioon /dev/sdf. Varmista, että vaihdat laitteiden nimet vastaamaan omiasi tarvittaessa.

Huomaa järjestys täällä: luettele "to" -ajo ensin! Tämä on minulle hieman vastoin intuitiivista, mutta varmista vain, että teet sen oikein, jotta et saa toista asemavirhettä taulukkoon ;-)

sgdisk -R /dev/sdf /dev/sdc

Luo sitten uudet UUID-tunnukset uudelle asemalle välttääksesi UUID-ristiriidat:

sgdisk -G /dev/sdf

Ja nyt vihdoin on tullut aika lisätä uusi asema joukkoon ja saada rebuild-bileet käyntiin! (Okei, se ei todellakaan ole juhla, se on itse asiassa melko hidas ja ahdistava prosessi, koska et todellakaan halua, että toinen asema epäonnistuu tällä hetkellä. Olut saattaa kuitenkin auttaa)

Joka tapauksessa, jos haluat lisätä uuden aseman taulukkoon, anna tämä komento (muista jälleen korvata laitenimet omillasi tarpeen mukaan):

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

Jos kaikki menee hyvin, asema lisätään joukkoon ilman hikkausta. Uskon, että se on itse asiassa lisätty "hot spare" -levyksi oletuksena, mutta koska tästä taulukosta puuttuu levy (se, joka epäonnistui), se otetaan välittömästi käyttöön ja uudelleenrakennusprosessi alkaa.

Voit pitää sitä silmällä näin:

watch cat /proc/mdstat

Tämä kestää todennäköisesti jonkin aikaa; vaatimattomalla palvelimellani (perustuu pitkälti kuluttajatason laitteistoihin ja työpöytäasemiin, muistakaa) se pystyi saavuttamaan hieman alle 100 Mt/s. Muista, että tämä on RAID-6, joten uudelleenmuodostukseen liittyy paljon pariteettilaskelmia; RAID-10 olisi ollut paljon nopeampi. Tässä nimenomaisessa koneessa on AMD A10 9700E -neliydinsuoritin ("E" tarkoittaa, että se on alikellotettu energiatehokas malli, eli ei supernopea), jotta saat käsityksen siitä, mitä odottaa. Kun asennuksessani oli yhdeksän 8 teratavun asemaa, täydellinen uudelleenrakennus kesti hieman yli 24 tuntia.

Uudelleenmuodostuksen aikana voit liittää tiedostojärjestelmän taulukkoon ja käyttää sitä normaalisti, jos haluat, mutta jätän sen mieluummin uudelleenrakentamisen tehtäväksi, kunnes se on valmis. Muista, että jos yksi asema epäonnistuu, toinen voi pian seurata, joten haluat tehdä uudelleenmuodostuksen mahdollisimman nopeasti, koska et todellakaan halua toisen aseman epäonnistuvan sen aikana. Siksi älä kuormita sitä muilla IO:lla, joka ei ole ehdottoman välttämätöntä.

Kun se on valmis, lisää se takaisin /etc/fstab-tiedostoosi, käynnistä uudelleen ja nauti tiedostoistasi :-)

Jaa BlueskyssäJaa FacebookissaJaa LinkedInissäJaa TumblrissaJaa X:ssäJaa LinkedInissäPin Pinterestissä

Mikkel Bang Christensen

Kirjoittajasta

Mikkel Bang Christensen
Mikkel on miklix.com-sivuston luoja ja omistaja. Hänellä on yli 20 vuoden kokemus ammattimaisena tietokoneohjelmoijana/ohjelmistokehittäjänä, ja tällä hetkellä hän työskentelee kokopäiväisesti suuressa eurooppalaisessa IT-yrityksessä. Kun hän ei ole bloggaamassa, hän käyttää vapaa-aikaansa monenlaisiin kiinnostuksen kohteisiin, harrastuksiin ja aktiviteetteihin, mikä saattaa jossain määrin heijastua tällä verkkosivustolla käsiteltävien aiheiden moninaisuuteen.