Kernel Oops VPN:n käynnistyessä: todisteet, jotka kannattaa säilyttää
VPN:n käynnistymisen yhteydessä tapahtuva kaatuminen vaatii vastaavan kernel-koonnoksen ja ensimmäisen jäljen, ei kuvakaappausta viimeisestä rivistä. Päätä, mitä tallennat ennen seuraavaa uudelleenkäynnistystä.
VPN-asiakkaan käynnistäminen on kätevä aikaleima, ei syy, ja tämä ero ratkaisee, mitä seuraavaksi tapahtuu. Kun kernel-Oops osuu lähelle sitä hetkeä, valinta on käyttökelpoisen vikaraportin keräämisen ja saman kaatumisen vielä viisi kertaa tuotantokoneella aiheuttamisen välillä. Tallenna neljä asiaa ennen uudelleenkäynnistystä: tarkka kernel-koonnos, ensimmäinen vikajälki, taint-tila ja lyhyt kuvaus kaikesta muusta, mikä muuttui samana minuuttina. Loput on tulkintaa, ja tulkinta voi odottaa, kunnes todisteet ovat turvallisessa paikassa.
Tallenna ensimmäinen vika, älä viimeistä riviä
Lokin ensimmäinen Oops on se, jolla on merkitystä, koska jokainen myöhempi vika voi olla jo sairaan kernelin oheisvahinkoa. Kopioi otsake yhdessä kutsujäljen kanssa, sillä otsake sisältää vioittuneen komennon ja rekisteritilan, joka tunnistaa koodipolun. Raportti, joka alkaa viimeiseltä riviltä, on hyvin vähän arvoinen sille, joka lukee sen viikkoa myöhemmin.
Jos kone on jo uudelleenkäynnistetty, edellisen käynnistyksen kernel-puskuri on usein vielä lokissa, mikäli pysyvä tallennus oli silloin käytössä. Lue se tallennetusta tiedostosta sen sijaan, että loisit työkuorman uudelleen, koska toinen toisto voi ylikirjoittaa sen, mitä tarvitset. Kun kone ei voi pitää lokia uudelleenkäynnistysten yli, sarjaväyläkonsole tai netconsole on ainoa tapa, jolla vika koskaan tulee näkyväksi.
Kiinnitä koonnos ennen kuin luet yhtään symbolia
Funktioiden nimet ja siirtymät merkitsevät vain suhteessa binaariin, joka ne tuotti, joten kirjaa kernelin julkaisuversiomerkkijono ja jakelun koonnostunniste yhdessä. Toisen koonnoksen symbolitiedosto osoittaa väärälle riville täydellä varmuudella, mikä on pahempaa kuin että symbolia ei olisi lainkaan. Säilytä kernel-paketin versio, älä vain upstream-numeroa, koska jakelut siirtävät paljon takaisinpäin.
Puun ulkopuoliset moduulit ansaitsevat oman rivinsä merkintään, koska taintattu kernel rajoittaa sitä, mitä ylläpitäjä saa päätellä. Lue taint-arvo sen sijaan, että päättelet sen moduuliluettelosta.
Nollasta poikkeava taint ei ole syytös eikä tee raportista arvotonta. Se kertoo lukijalle, mitkä komponentit olivat ladattuina vian sattuessa, ja jotkin liput johtavat siihen, että raportin prioriteettia lasketaan politiikan eikä arvion perusteella. Kirjaa arvo, moduulien nimet ja se, onko sama laitteisto ja työkuorma koskaan ajanut kerneliä ilman niitä. Juuri tämä viimeinen vertailu erottaa uuden regression pitkäaikaisesta viasta.
Erota laukaisin viasta
Tunnelin käynnistäminen harjoittaa yleensä polkua, joka oli jo olemassa: verkkoajuri, jonokuri, offload-ominaisuus tai virrantila. Laukaisin selittää, milloin vika ilmaantuu, ei sitä, mikä koodi on väärin, ja laukaisimen pitäminen syynä johtaa sarjaan kokoonpanomuutoksia, jotka eivät korjaa mitään.
Toimiva aiempi levykuva on todiste, ei todistus. Vaihda vertaillessa yksi komponentti käynnistystä kohden ja pidä tulokset jossakin, mikä säilyy koneen jälkeen.
Tarkista, mitä ylläpitäjä voi todella käyttää
Lue raportti kuin vieras lukisi sen ennen lähettämistä. Jos kokoonpano, tarkka järjestys ja koonnoksen identiteetti ovat läsnä ja tunnistetiedot on poistettu, raportti on käyttökelpoinen. Jos se on kuvakaappaus pinon jäljestä, se palaa pyynnöllä samoista tiedoista. Kernel-vikojen etsintäopas kuvaa, miltä hyödyllinen jälki ja vastaavat symbolit näyttävät.
uname -r
cat /proc/sys/kernel/tainted
journalctl -k -b -1 --no-pager | sed -n '/BUG:/,/Call Trace/p'
dmesg -T | grep -A 40 'RIP:'
Jokainen yllä oleva komento vain lukee tilaa, ja kaksi ensimmäistä pitäisi ajaa ennen seuraavaa uudelleenkäynnistystä, jos kone pystyy vielä vastaamaan niihin. Kun loki ei säily, juuri ne kaksi ovat ainoat, jotka koskaan toimivat uudelleen.
Poista avaimet, salasanat ja asiaankuulumaton liikenne, mutta säilytä funktioiden nimet ja siirtymät, joita joku tarvitsee jäljen lukemiseen. Lähetä aineisto raportointipolkua, joka koskee jakelua tai kerneliä, ei julkista liittämistä, johon on liitetty isäntänimi. Odota sitten kysymystä sen sijaan, että keräisit lisää kaatumisia, koska paikannettu vika vastaavaa koonnosta vastaan on ainoa tulos, joka vie raporttia eteenpäin. Jos mitään ei tule takaisin, varasuunnitelma on hallittu toisto varalaitteistolla, ei koskaan koneella, josta muut ihmiset ovat riippuvaisia.