
JĂ€tkame meie sukeldumist pĂ”nevasse maailma logide tĂ”rkeotsingust. Oleme kokku leppinud pĂ”hiterminite tĂ€henduses ja heitnud kiire pilgu Veeami kui ĂŒhe rakenduse ĂŒldstruktuurile. KĂ€esolev ĂŒlesanne on mĂ”ista, kuidas logifailid vormitakse, millist teavet need sisaldavad ja miks need vĂ€lja nĂ€evad just nii, nagu nad nĂ€evad.
Kuidas te arvate, mis need «logid» tegelikult on? Enamik arvab, et iga rakenduse logidele on mÀÀratud roll, nagu kĂ”ikvĂ”imas olend, kes veedab suurema osa ajast kusagil varjatud, kuid Ă”igel hetkel ilmub vĂ€lja sĂ€ravates raudsuitsides ja pÀÀstab kĂ”ik. See tĂ€hendab, et seal peaks olema kĂ”ik, alates vĂ€ikestest vigadest igas komponendis kuni eraldi andmebaasi tehinguteni. Ja pĂ€rast viga peaks kohe olema kirjas, kuidas seda parandada. Ja see kĂ”ik peaks mahtuma paarimegabaiti, mitte rohkem. See on ju lihtsalt tekst! Tekstifailid ei saa ju kaaluda kĂŒmneid gigabaite, olen kuskil sellest kuulnud!
Nii et logid
Tegelikus maailmas on logid lihtsalt diagnoosimisteabe arhiiv. Ja mida seal talletada, kust teavet talletamiseks vĂ”tta ning kui detailne see peaks olema, otsustavad arendajad ise. MĂ”ned lĂ€hevad minimaliismi teed, talletades ainult sisse-/vĂ€ljalĂŒlituse tasemel mĂ€rkmeid, samas kui teised koguvad kĂ”ike, mis kĂ€eulatusse ulatub. On ka vahevariant, kus saad valida nn logimis taseme, kui ĂŒtled ise, kui detailsed andmed sa soovid talletada ja kui palju sul jĂ€rgmist paika on =) VBR-i puhul on neid tasemeid lausa kuus, muide. Ja uskuge, te ei taha nĂ€ha, mis toimub maksimaalse detailiga logimise korral, kui teie kettaruumi on vĂ€he.
Hea, me oleme umbes aru saanud, mida soovime salvestada, kuid kerkib seaduslik kĂŒsimus: kust seda teavet saada? Osa logimisĂŒritustest genereerime me ise oma sisemiste protsesside kaudu. Kuid mida teha, kui toimub suhtlemine vĂ€liskeskkonnaga? Et mitte langeda tĂ€iesti meeletusse virvarri ja abivahendite hulka, jĂ€rgib Veeam kalduvust mitte leiutuda, kui olemas on juba vĂ€lja mĂ”eldud lahendused. Iga kord, kui on olemas valmis API, sĂŒsteemi sisseehitatud funktsioon, teek jne, anname eelise valmis variantidele enne, kui hakkame vĂ€lja mĂ”tlema oma keerukaid lahendusi. Kuigi neid on kindlasti ka piisavalt. Seega, logide analĂŒĂŒsimisel on oluline mĂ”ista, et suur osa vigadest tuleneb kolmandate osapoolte API-delt, sĂŒsteemi kutsest ja muudest teekidest. Antud juhul on VBR-i roll nende vigade edasisaatmine logifailidesse nii nagu nad on. Peamine ĂŒlesanne kasutajal on Ă”ppida mĂ”istma, milline rida on kellelt ja mille eest see âkeegiâ vastutab. Seega, kui VBR-i logi veakood viib teid MSDN-i lehele, on see normaalne ja Ă”ige.
Nagu me varem kokku leppesime: Veeam on nn SQL-pĂ”hine rakendus. See tĂ€hendab, et kĂ”ik seaded, kogu teave ja tegelikult kĂ”ik, mis on vajalik normaalseks toimimiseks â kĂ”ik on talletatud selle andmebaasis. Sealt tuleb lihtne tĂ”de: seda, mida logides ei ole, on tĂ”enĂ€oliselt andmebaasis. Kuid see ei ole hĂ”bekuul: mĂ”ningaid asju ei leia ei Veeami komponentide kohalikest logidest ega ka selle andmebaasist. SeetĂ”ttu tuleb Ă”ppida uurima hosti logisid, kohaliku masina logisid ja kĂ”ike, mis osaleb varundamise ja taastamise protsessis. MĂ”nikord ei ole vajalikku teavet kuskil. TĂ”eline tee.Â
MÔned nÀited sellistest API-dest
See nimekiri ei pĂŒĂŒa olla tĂ€ielik, seega Ă€rge otsige sellest tĂ”de viimase instantsina. Selle ĂŒlesanne on nĂ€idata kĂ”ige sagedamini kasutatavaid kolmandate osapoolte API-sid ja tehnoloogiaid, mida meie toodetes kasutatakse.
Alustame VMware.Â
Esimene nimekirjas on vSphere API. Kasutatakse autentimiseks, hierarhia lugemiseks, lÔplikest ja kustutamisest sÀilikute loomiseks, masinate teabe pÀrimiseks ja paljuks (vÀga paljuks) muuks. Lahenduse funktsionaalsus on vÀga ulatuslik, seega soovitan kÔigil huvilistel tutvuda VMware vSphere API viidaga versioonile ja . Kaasaegsete versioonide leidmine on lihtne, lihtsalt otsige Google'ist.
VIX APIMustuse hĂŒperviisori must maagia, mille jaoks on eraldi . VMware API failide haldamiseks hostis ilma nendega vĂ”rgus ĂŒhendamata. Viimane vĂ”imalus, kui on vaja fail masinasse sokutada, millele pole paremate ĂŒhendusteede leidmine Ă”nnestunud. See on valu ja piin, kui fail on suur ja host on koormatud. Kuid siin kehtib reegel, et isegi 56,6 Kb/s on parem kui 0 Kb/s. Hyper-V puhul nimetatakse seda PowerShell Directiks. Kuid see oli nii ainult kuni
vSpehere Web Services API . Alates vSphere 6.0-st (umbes, kuna see API esitati esmakordselt versioonis 5.5) kasutatakse seda kĂŒlgmiste masinate juhtimiseks ja see on praktikas enamiku VIX-i vĂ€lja tĂ”rjunud. Sisuliselt on see veel ĂŒks API vSphere'i haldamiseks. Huvi korral soovitan uurida kĂ€si- vĂ”i Ă”petusraamatut.Â
VDDK Virtuaalse pöördkĂ€ppide arendamise komplekt. Raamatukogu, millest on osaliselt rÀÀgitud sel . Kasutatakse virtuaalsete ketaste lugemiseks. Aegade alguses oli see osa VIX-ist, kuid aja jooksul isolatsiooni all, kuid kasutab sama veakoodide sĂŒsteemi nagu VIX. Kuid mingil pĂ”hjusel pole SDK-s nende vigade kirjeldust. Seega on katsetamise teel leitud, et VDDK vead koos teiste koodidega on tegelikult ainulaadne tĂ”lgendus binaarsest kĂŒmnendsĂŒsteemi. Koosneb kahest osast â esimene pool annab dokumenteerimata konteksti ja teine osa on traditsioonilised VIX/VDDK vead. NĂ€iteks, kui nĂ€eme:
VDDK error: 21036749815809.Unknown error
Siis saame selle julgelt konverteerida heksades ja saame 132200000001. Silmapaistev algus 132200 visatakse lihtsalt kÔrvale ja jÀrelejÀÀnud on meie veakood (VDDK 1: Unknown error). Just hiljuti oli eraldi .
NĂŒĂŒd vaatame Windows.
. Siit saab kĂ”ige vajalikuma ja tĂ€htsama leida standardsetest SĂŒndmuste jĂ€lgijast. Kuid on ĂŒks probleem: vana traditsiooni kohaselt logib Windows mitte tĂ€ielikku veateksti, vaid ainult selle numbri. NĂ€iteks, viga 5 â on âJuhtimine keelatudâ, viga 1722 â on âRPC server pole saadavalâ ja 10060 â on âĂhenduse tĂ€htaeg on ĂŒletatudâ. Loomulikult on suurepĂ€rane, kui sa mĂ€letad kĂ”ige tuntumaid, kuid kuidas olla sellistega, mida pole kunagi varem nĂ€htud?Â
Ja et elu liiga meeldiv ei tunduks, salvestatakse vead ka kuusnurksetes, prefiksiga 0x8007. NĂ€iteks 0x8007000e tĂ€hendab tegelikult 14, mĂ€lu puudus. Miks ja kelle jaoks see tehti â jÀÀb arusaamatuks. KĂŒll aga saab tĂ€ispaketti veakirju tasuta ja ilma SMS-ita alla laadida. .
Muide, vahel vĂ”ivad esineda ka teised prefiksid, mitte ainult 0x8007. Sellises kurvas olukorras HRESULT-i (âtulemuse kĂ€epideâ) mĂ”istmiseks tuleb sĂŒgavamale sukelduda. arendajatele. Tavalises elus ei soovita ma seda teile teha, kuid kui oled nurgas kinni vĂ”i lihtsalt huvitub, nĂŒĂŒd tead, mida teha.
Kuid Microsofti tooted on meie ĂŒle armu saanud ja tutvustasid utiliiti . See on vĂ€ike tĂŒkk konsooli Ă”nne, mis suudab tĂ”lgendada veakoodid inimkeelde ilma Google'ita. See töötab umbes nii.
C:UsersrootDesktop>err.exe 0x54f
# hex 0x54f / decimal 1359
ERROR_INTERNAL_ERROR winerror.h
# Siseserveri tÔrge tekkis.
# HRESULT-ina: TÔsidus: EDU (0), KERGE_NULL (0x0), Kood 0x54f
# hex 0x54f / decimal 1359
ERROR_INTERNAL_ERROR winerror.h
# Siseserveri tÔrge tekkis.
# "0x54f" jaoks leiti 2 vasteid.KĂŒsimus on seaduslik: miks me ei kirjuta logidesse kohe tĂ”lgendusi, vaid jĂ€tame need salapĂ€rased koodid? Vastus on kolmandates rakendustes. Kui sa ise kutsud esile mĂ”ne WinAPI kĂ”ne, siis selle vastuse deĆĄifreerimine ei ole keeruline, kuna selleks on isegi oma spetsiaalne WinAPI kĂ”ne. Kuid nagu juba mainitud, jĂ”uab meie logidesse kĂ”ik, mis meile vastustes tuleb. Ja siin oleks juba deĆĄifreerimisel pidevalt jĂ€lgida seda teadlikkuse voogu, valida sealt vĂ€lja Windowsi vead, deĆĄifreerida neid ja tagasi sisestada. Ătleme ausalt, see ei ole kĂ”ige köitvam tegevus.
Windowsi file management API kasutatakse failidega töötamisel igasugusteks toiminguteks. Failide loomine, eemaldamine, kirjutamiseks avamine, atribuutidega töötamine ja muud sellised asjad.
Ălaltoodud PowerShell Direct on analoog VIX API-le Hyper-V maailmas. Kahjuks mitte nii paindlik: palju funktsionaalsuse piiranguid, ei tööta igas hosti versioonis ja kaugel mitte kĂ”ikide kĂŒlalistega.
RPC (Remote Procedure Call) Ma arvan, et ei ole ĂŒhtegi inimest, kes oleks töötanud Windowsiga ja ei oleks nĂ€inud RPC-ga seotud vigu. Vaatamata laialdaselt levinud ekslikule arusaamale, ei ole see ĂŒhtne protokoll, vaid igaĂŒht, mis vastab teatud kriteeriumitele kliendi-serveri protokoll. Kui meie logides on RPC viga, on 90% juhtudest tegemist Microsoft RPC veaga, mis on osa DCOM-st (Distributed Component Object Model). Internetis on sellele teemale tohutult dokumentatsiooni, kuid suurem osa on ĂŒsna vana. Kuid kui on suur huvi teema uurimise vastu, siis vĂ”in soovitada artikleid , ja pikk nimekiri .
Peamised pĂ”hjused, miks RPC vigu meie logides esineb, on nurjunud katsed suhelda VBR komponentidega (server > vaheline sĂŒsteem, nĂ€iteks) ja enamasti suhtluse probleemide tĂ”ttu.
KĂ”ige levinum viga on The RPC server is unavailable (1722). Lihtsalt öeldes, ei suutnud klient luua ĂŒhendust serveriga. Ăkski vastus selle miks ja kuidas ei ole ĂŒhtne, kuid tavaliselt on see autentimise vĂ”i vĂ”rguĂŒhenduse probleem sadamasse 135. Viimane on iseloomulik infrastruktuuridele, kus sadamate dĂŒnaamiline mÀÀramine toimub. Selle teema kohta on isegi . Ja Microsoftil on rikete leidmise kohta.
Teine populaarne viga: There are no more endpoints available from the endpoint mapper (1753). RPC klient vĂ”i server ei suutnud endale sadamat mÀÀrata. See juhtub tavaliselt, kui server (meie juhul virtuaalmachine) on seadistatud sadamate dĂŒnaamiliseks jaotamiseks kitsas vahemikus, mis on lĂ”ppenud. Kui vaadata kliendi poolt (meie juhul VBR-server), tĂ€hendab see, et meie VeeamVssAgent ei ole kas kĂ€ivitatud vĂ”i ei ole registreeritud RPC liidese jaoks. Selle teema kohta on samuti .
Ja lĂ”petades RPC kolme peamise vea hulga, tuletame meelde RPC function call failed (1726). See ilmneb, kui ĂŒhendus on loodud, kuid RPC pĂ€ringud ei toimi. NĂ€iteks kĂŒsime VSS staatuse kohta teavet (Ă€kki parasjagu luuakse ĆĄedou koopiat, samas kui meie ĂŒritame vahele minna), ja vastuseks on vaikus ja ignoreerimine.
Windows Tape Backup API on vajalik lintraamatukogudega vÔi draivega töötamiseks. Nagu mainisin alguses: oma draiverite kirjutamine ja hiljem iga seadme toe haldamine ei ole meile mingit rÔÔmu. SeetÔttu ei ole Veeamil oma draivereid. KÔik toimub lÀbi standardse API, mille toe rakendavad seadme tarnijad ise. On ju palju loogilisem, eks?
SMB\/CIFS KĂ”ik harjumusest kirjutavad neid kĂ”rvuti, kuigi kaugelki mitte kĂ”ik ei tea, et CIFS (Common Internet File System) on lihtsalt SMB (Server Message Block) eriversioon. Nii et ĂŒldistamisel ei ole midagi halba. Samba on seevastu Linuxi-Unixi rakendus ja seal on oma eripĂ€rad, aga kaldun teemast kĂ”rvale. Oluline on see, et kui Veeam palub midagi UNC tee kaudu (serverdirectory) kirjutada, siis server kasutab failisĂŒsteemi draiverite hierarhiat, sealhulgas mup ja mrxsmb, kirjutamiseks jagusse. Seega genereerivad vead ka need draiverid.
Ilma ei saa lÀbi Winsock API. Kui on vaja midagi vÔrgu kaudu teha, töötab VBR Windows Socket API kaudu, tuntud rahva seas kui Winsock. Nii et kui logis nÀeme IP:Port paari, siis see ongi see. Ametlikus dokumentatsioonis on hea nimekiri vÔimalike .
Ălaltoodud WMI (Windows Management Instrumentation) â see on ĂŒks kĂ”ikvĂ”imas API, mis haldab kĂ”ike ja kĂ”iki Windowsi maailmas. NĂ€iteks Hyper-V töö kĂ€igus toimub peaaegu kĂ”ik pĂ€ringud hostile just selle kaudu. ĂhesĂ”naga, asi on tĂ€iesti asendamatu ja vĂ€ga vĂ”imekas oma vĂ”imalustes. Probleemide tuvastamisel aitab palju sisseehitatud tööriist WBEMtest.exe.
Ja viimane nimekirjas, kuid mitte vĂ€hem tĂ€htis â VSS (Volume Shadow Storage). Teema on sama ammendamatu ja salapĂ€rane kui palju selle kohta on dokumentatsiooni kirjutatud. Shadow Copy on kĂ”ige lihtsam mĂ”ista kui eriline snĂ€pĆĄoti tĂŒĂŒp, millega ta oma olemuselt ongi. TĂ€nu sellele on VMware-s vĂ”imalik teha rakenduse konsistentseid varukoopiaid ja Hyper-V-s on see peaaegu, et kĂ”ik. Plaanin kirjutada eraldi artikli mingi kokkuvĂ”ttega VSS-ist, aga seni vĂ”ite proovida lugeda . Olge ettevaatlik, kuna VSS-i mĂ”istmine pinnapealselt vĂ”ib pĂ”hjustada peaprobleeme.
Selle peale vĂ”ibki peatuda. Peamine ĂŒlesanne kĂ”ige pĂ”hialuste selgitamine on tĂ€idetud, nii et jĂ€rgmisel peatĂŒkil vaatame juba logisid. Aga kui kĂŒsimusi on, siis Ă€rge kartke neid kommentaarides esitada.
Allikas: habr.com
