Arkisto: huhtikuu 2011

Linux-ytimen ongelmat Kapsin palvelimilla

maanantaina 25. huhtikuuta 2011

Kuva: ”tarazan” CC BY-NC-SA.

Valitettavasti kaikille yhdistyksen palvelimilta irkkaaville jäsenille on tullut varmasti selväksi, että Kapsin palvelinten Linux-ydinten kanssa on vakavia ongelmia. Avaan tässä hieman tiedotteita yksityiskohtaisemmin mitä ongelmat koskevat, mitä asialle on tehty ja tullaan tekemään.

Verkkokortit

Ilmeisesti lähinnä kuormituksen kasvettua Lakka-palvelimella Siilo-levytilan käyttöönoton jälkeen verkkokortit alkoivat oireilla. Käytännössä palvelimen kahdesta verkkokortista toinen (eth0 tai eth1) meni sellaiseen tilaan että liikennettä ei enää kulkenut. Käytännössä kun sisäverkon kortti tipahti, yhteys NFS-verkkolevypalvelimeen meni poikki ja kaikki verkkolevyä käyttävät ohjelmat (kaikki käyttäjien ohjelmat) menivät jumiin. Jumitus jouduttiin purkamaan uudelleenkäynnistyksellä. Vastaava ongelma on ilmennyt aiemminkin lakalla ja xobilla pidemmän aikaa sitten, mutta ei aiemmin ole toistunut. Oletettavasti uudentyyppinen liikenne sattui olemaan sellaista, joka saa vian esiintymään useammin.

Ongelma liittyi Broadcomin verkkokortteihin tietyllä firmware/ajuriversiolla. Valitettavasti uudempaa ajuria ei saatu käytössä olevan Linux-ytimen 2.6.32.y-sarjan versioon. Ongelma ratkaistiin vaihtamalla tärkeimmille koneille verkkokortit Intelin valmistamiin kortteihin.

NFS ja lukkiutumiset

Aluksi osa jumituksista ja kaatumisista kategorisoitiin Linuxin NFS-toteutuksen huonoudeksi. Todellisen vian selvittäminen on hankalaa ja vaikka osa virheistä onkin antanut ymmärtää, että NFS voisi olla syyllinen, vika on voinut olla osassa tapauksista myös verkkokortin ajurissa.

Nyt ongelmana Lakalla on ollut jumittumisia, joissa kaikki prosessoriytimet ovat odottamassa lukon vapautumista eikä niistä yksikään tee mitään hyödyllistä. Tällainen tilanne johtuu ohjelmointivirheestä ytimessä ja siitä toipumiseksi kone on käynnistettävä uudelleen. Tuotantokoneella viasta ei olla onnistuttu kaivamaan riittävän paljon tietoja, jotta vian aiheuttaja saataisiin jäljitettyä. Vastaavaa ongelmaa ei kovasta yrityksestä huolimatta ole saatu toistettua testaukseen tarkoitetulla Paskanmarja-palvelimella. Ilmeisesti vian toistamiseen tarvittavaa tavallista käyttöä matkivaa testikuormaa ei ole onnistuttu toistamaan riittävän hyvin testiympäristössä. Koska vikaa ei saada toistettua hallitusti, sen löytäminen on äärimmäisen vaikeaa ja korjaaminen mahdotonta. Tietysti on mahdollista, että joku Linux-kehittäjistä törmää samaan ongelmaan ja korjaa sen tai kirjoittaa vian aiheuttavan osan koodia uudestaan muun kehityksen yhteydessä.

Hilla on kaatunut nyt useita kertoja niin, että kaatumisesta ei ole jäänyt mitään jälkiä. Vian etsiminen ilman mitään tietoja kaatumisesta on vielä edellistäkin vikatyyppiä vaikeampaa. Koska kaatumisia on tapahtunut usein, otettiin käyttöön Linux 2.6.38-sarjan ydin, jossa ainakin osa Lakalla saaduissa virheilmoituksissa esiintyneistä osista on kirjoitettu uudelleen. Ydintä ei ole ehditty vielä kovin kattavasti testata (joskin yksi vakava bugi siitä jo testauksessa 12 tunnin rasituksen jälkeen löydettiin ja korjattiin). Se otettiin silti käyttöön ajatuksella “eihän se ainakaan huonompi voi olla kuin edellinen”. Aiempi ydin kun ei tunnu pysyvän enää vuorokautta pidempään kunnossa. Ainut järkevä arvaus tuntuu olevan että jokin käyttäjien aiheuttamassa kuormassa on muuttunut, mikä on johtanut vian toistumiseen. Tai tietysti voi olla että vika tulee muuten vain esiin helpommin Debian Squeezen uudemmilla ohjelmilla.

Yksittäiset ongelmat

Vaikeasti toistettavien vikojen toistamisessa ja paikantamisessa yksi huomattava lisäongelma on, että yhdistyksen ytimet eivät ole ns. vanilla-ytimiä eli suoraan kernel.orgin puusta. Yhdistys käyttää esimerkiksi grsecurity-patchiä, joka mm. sisältää suojakeinoja erilaisia hyökkäyksiä vastaan. Toinen käytössä oleva isompi muutos on BFS-skeduleri. Ennen BFS:n käyttöönottoa paljon CPU-aikaa vievät prosessit haittasivat muun järjestelmän vastenopeutta (interaktiivisuutta). BFS:llä CPU-käyttö ei ole enää ollut ongelma.

Ongelma on, että jos törmäämme johonkin epämääräiseen ongelmaan ja epäilemme että se voisi olla jossain kolmessa mainitusta komponentissa (kernel.org Linux, grsecurity, BFS), niin siitä raporttia lähettäessä ensimmäisenä ehdotetaan kokeilemaan toistuuko puhtaalla kernel.org-ytimellä. Jos ongelma on alunperinkin sellainen ettei sitä saada testiympäristössä toistettua, päädytään melko toivottomaan tilanteeseen. Tuotantoympäristössä ei voi hirveästi myöskään kokeilla kovin suuria muutoksia, varsinkaan jos niiden toimivuudesta ei ole mitään takeita.

Yhteenveto

Yhteenvetona ongelman vakavuus siis on todellakin niin yhdistyksen ylläpidon kuin hallituksen tiedossa ja tilanteen ratkaisu on ensiarvoisen tärkeää ja sen eteen tehdään kovasti töitä. Ylläpitäjät ovat käyttäneet useiden työpäivien verran omaa aikaansa uuden Linux-ytimen testaamiseen, ongelmien selvittämiseen ja korjaamiseen. Siis vapaaehtoistyötä. Jäseniltä tulevat kyselyt ”milloin ongelma korjataan” ovat siis sinänsä oikeutettuja, mutta kun tilanne tuntuu toivottomalta, kysymykset tuntuvat ikävältä. Kysymysten tai jopa haukkujen toistaminen ei ole kehittävää vaan on pois siltä työpanokselta, jonka vapaaehtoiset (ja pätevät) ylläpitäjämme jaksavat käyttää oikeiden ongelmien ratkomiseen.

Me ylläpidossa ja hallinnossa olevat olemme myös käyttäjiä ja muiden käyttäjien tavoin haluamme erittäin paljon, että kaikki palvelut toimisivat vakaasti ja ongelmitta. Ylläpitäjien parhaasta ja oikeasti kovasta yrityksestä huolimatta ongelmilta ei ole nyt vältytty. Toivotaan, että tehdyistä korjauksista olisi nyt apua Hillalla tai ainakin ‘lopullinen’ ratkaisu ydinongelmiin löydettäisiin pian.