Epäonnistuneen aseman vaihtaminen Ubuntun mdadm-taulukossa
Julkaistu: 15. helmikuuta 2025 klo 22.02.18 UTC
Viimeksi päivitetty: 12. tammikuuta 2026 klo 8.49.54 UTC
Jos kohtaat pelätyn aseman, jossa mdadm RAID -levyjärjestelmässä on levyvika, tässä artikkelissa kerrotaan, kuinka se korvataan oikein Ubuntu-järjestelmässä.
Replacing a Failed Drive in an mdadm Array on Ubuntu
Tämän viestin tiedot perustuvat Ubuntu 18.04:ään ja sen repositorioissa olevaan mdadm-versioon kirjoitushetkellä v4.1-rc1. Tiedot eivät välttämättä päde muihin versioihin.
Kotikoneessani oleva tiedostopalvelin, joka koostuu yhdeksästä kiintolevystä mdadm RAID-6 -järjestelmässä, hajosi hiljattain äkillisesti. Se on aina pelottavaa, mutta onneksi sain nopeasti hankittua korvaavan levyn, joka toimitettiin jo seuraavana päivänä, joten pääsin aloittamaan uudelleenrakennuksen.
Myönnettäköön, että olin hieman liian pihi alun perin asentaessani tiedostopalvelinta; vain kaksi asemasta on varsinaisia NAS-asemia (Seagate IronWolf), kun taas loput ovat pöytäkoneen asemia (Seagate Barracuda). Ei ole yllättävää, että se oli yksi pöytäkoneen asemista, joka oli luopunut käytöstä (tosin lähes kolmen vuoden käytön jälkeen). Se oli täysin kuollut; siirrettyäni sen pöytäkoneen USB-koteloon sain siitä aikaan vain hermoja raastavan naksahduksen, eikä Ubuntu 20.04 eikä Windows 10 havainnut sitä.
No, sitten itse varaosaan (ja kyllä, ostamani uusi kiintolevy oli IronWolf, läksy opittu) - niin pelottavaa kuin levyn menettäminen käynnissä olevasta levyryhmästä onkin, se on vielä pelottavampaa, jos et tiedä oikeaa menettelyä sen vaihtamiseen. Tämä ei ole ensimmäinen kerta, kun minun on täytynyt vaihtaa viallinen kiintolevy mdadm-levyryhmässä, mutta onneksi se on niin harvinaista, että minun on yleensä etsittävä oikeat komennot. Tällä kertaa päätin tehdä oman pienen oppaani tulevaa tarvetta varten.
Joten ensinnäkin, kun saat pelätyn vikailmoituksen mdadm:lta, sinun on tunnistettava, mikä levy on vioittunut. Toki se kertoo laitteen nimen (minun tapauksessani /dev/sdf), mutta ei luultavasti ole ilmeistä, mikä fyysinen levy se todellisuudessa on, koska nimet voivat muuttua koneen käynnistyksen yhteydessä.
Jos et ole varma, mikä laite on epäonnistunut, voit selvittää sen seuraavalla komennolla (korvaa /dev/md0 RAID-laitteesi nimellä):
Kuten mainittiin, minun tapauksessani se oli /dev/sdf, joten jatketaan siitä.
Sitten voit yrittää löytää viallisen aseman sarjanumeron suorittamalla seuraavan komennon:
(jos smartctl-pakettia ei löydy, sinun on asennettava smartmontools-paketti Ubuntuun)
Sarjanumeroa voidaan sitten verrata asemien fyysisten tarrojen sarjanumeroihin sen selvittämiseksi, mikä levy on viallinen.
Tällä kertaa en kuitenkaan ollut yhtä onnekas. Kiintolevy oli täysin kuollut eikä suostunut antamaan SMART- tai muita tietoja, mukaan lukien sarjanumeroa.
Koska minulla oli fyysinen pääsy palvelimelle (jota todella tarvitset, jos aiot vaihtaa fyysisen levyn itse ;-)) ja palvelin oli oikeasti käynnissä levyn vikaantuessa (ja jatkoi toimintaansa moitteettomasti RAID-6-redundanssin ansiosta), valitsin todella alkeellisen, mutta itse asiassa erittäin tehokkaan ja ilmeisen menetelmän: kopioin suuren tiedoston palvelimelle ja katsoin, mikä kiintolevyn valo ei vilku. Muutamassa sekunnissa olin tunnistanut syyllisen.
Ennen fyysisen levyn irrottamista on hyvä ilmoittaa mdadm:lle tästä aikomuksesta virallisesti suorittamalla seuraava komento (korvaa laitteiden nimet omillasi tarvittaessa):
Onnistuessaan mdadm vastaa viestillä, jossa ilmoitetaan levyn "poistaneen hot-poiston" ilmeisesti siksi, että virtuaalinen RAID-laite on itse asiassa käynnissä.
Jos se epäonnistuu ja näyttää virheilmoituksen, joka on samanlainen kuin "laite tai resurssi varattu", mdadm ei ehkä ole rekisteröinyt asemaa täydellisesti epäonnistuneeksi. Voit tehdä sen seuraavalla komennolla (muista jälleen korvata laitteiden nimet omillasi tarvittaessa):
Sen jälkeen sinun pitäisi pystyä poistamaan laite taulukosta edellisellä komennolla.
Nyt on aika vaihtaa levy. Jos olet todella, todella – aivan, todella – varma, että koneesi ja ohjaimesi tukevat hot swappia, voit tehdä tämän sammuttamatta konetta. Näin toimittaisiin kriittisissä tuotantojärjestelmissä, jotka toimivat oikealla palvelinlaitteistolla, jonka tiedät varmasti pystyvän käsittelemään sitä. Kotini tiedostopalvelimena on kuitenkin kuluttajaluokan pöytätietokoneiden emolevy, jossa on pari puoliksi nimetöntä SATA-ohjainta PCIe-paikoissa useampien SATA-porttien tarjoamiseksi.
Vaikka SATAn yleensä pitäisi tukea hot swappia, en aikonut ottaa riskejä tässä kokoonpanossa, joten päätin sammuttaa koneen levyn vaihdon ajaksi.
Ennen sitä on hyvä kommentoida RAID-laite pois /etc/fstab-tiedostosta, jotta Ubuntu ei yritä liittää sitä automaattisesti seuraavan käynnistyksen yhteydessä, koska se saattaa jumiutua ja pakottaa sinut palautustilaan heikentyneen RAID-taulukon vuoksi. Tämä ei ehkä ole suuri ongelma, jos kyseessä on työpöytäjärjestelmä, mutta käytän tätä palvelinta ilman näyttöä tai näppäimistöä, joten tämä olisi hieman hankalaa.
Kun olet käynnistänyt koneen uudella kiintolevyllä, tunnista se lsblk-komennolla tai jollain muulla tavalla. Jos et ole muuttanut mitään muuta, se todennäköisesti (mutta ei välttämättä) saa saman nimen kuin korvaamasi levy. Minun tapauksessani näin tapahtui, joten uuden levyn nimi on myös /dev/sdf.
Koska taulukkoni perustuu osioihin eikä fyysisiin laitteisiin, minun piti kopioida osiotaulukko toimivasta asemasta uudelle asemalle varmistaakseni, että ne ovat täsmälleen samat. Jos käytät taulukkoa fyysisillä laitteilla, voit ohittaa tämän vaiheen.
Käytin tähän tarkoitukseen sgdisk-komentoa ja kopioin osiotaulukon /dev/sdc-hakemistosta /dev/sdf-hakemistoon. Muista korvata laitteiden nimet omillasi asianmukaisesti.
Huomaa järjestys: listaat "kohteena"-aseman ensin! Tämä on minusta hieman epäloogista, mutta varmista, että teet sen oikein, jotta levy ei vioitu uudelleen taulukossa ;-)
Vältä sitten UUID-ristiriidat luomalla uudelle asemalle uudet UUID:t:
Ja nyt on vihdoin aika lisätä uusi levy levyjärjestelmään ja aloittaa uudelleenrakennusjuhlat! (Okei, ne eivät ole oikeastaan juhlat, vaan itse asiassa melko hidas ja hermoja raastava prosessi, koska et todellakaan halua toisen levyn hajoavan tässä vaiheessa. Olut saattaa tosin auttaa.)
Joka tapauksessa, lisätäksesi uuden aseman taulukkoon, anna tämä komento (muista jälleen korvata laitteiden nimet omillasi tarvittaessa):
Jos kaikki menee hyvin, levy lisätään levyryhmään ilman ongelmia. Uskon, että se lisätään oletuksena "hot spare" -levyksi, mutta koska levyryhmästä puuttuu levy (se, joka vioittui), se otetaan välittömästi käyttöön ja uudelleenrakennusprosessi alkaa.
Voit pitää sitä silmällä näin:
Tämä luultavasti vie jonkin aikaa; vaatimattomalla palvelimellani (joka tosin perustui pääosin kuluttajalaatuiseen laitteistoon ja pöytätietokoneiden kiintolevyihin) se ylsi hieman alle 100 Mt/s nopeuteen. Muista, että kyseessä on RAID-6, joten uudelleenrakennukseen liittyy paljon pariteettilaskelmia; RAID-10 olisi ollut paljon nopeampi. Tässä koneessa on AMD A10 9700E -neliydinsuoritin ("E" tarkoittaa, että se on alikellotettu energiatehokas malli eli ei supernopea), vain antaakseni kuvan siitä, mitä odottaa. Yhdeksällä 8 Tt:n kiintolevyllä koko uudelleenrakennus kesti hieman yli 24 tuntia.
Uudelleenrakennuksen aikana voit liittää tiedostojärjestelmän taulukkoon ja käyttää sitä normaalisti, jos haluat, mutta mieluummin jätän sen uudelleenrakennuksen tehtäväksi, kunnes se on valmis. Muista, että jos yksi levy vikaantuu, toinen voi pian seurata perässä, joten haluat uudelleenrakennuksen tapahtuvan mahdollisimman nopeasti, koska et todellakaan halua toisen levyn vikaantuvan sen aikana. Älä siis kuormita sitä muilla I/O-toiminnoilla, jotka eivät ole ehdottoman välttämättömiä.
Kun se on valmis, lisää se takaisin /etc/fstab-tiedostoon, käynnistä kone uudelleen ja nauti tiedostoistasi :-)
