Aktiivne taastamine: kas avariitaaste saab toimuda kiiremini? Palju kiiremini?

Oluliste andmete varundamine on hea. Aga kui tööd on vaja kohe jätkata ja iga minut loeb? Otsustasime Acronises kontrollida, kuidas on võimalik süsteemi käivitamise probleem võimalikult kiiresti lahendada. Ja see on Active Restore sarja esimene postitus, milles räägin teile, kuidas me koos Innopolise ülikooliga projektiga alustasime, millise lahenduse leidsime ja millega täna tegeleme. Üksikasjad on lõike all.

Aktiivne taastamine: kas avariitaaste saab toimuda kiiremini? Palju kiiremini?

Tere! Minu nimi on Daulet Tumbajev ja täna tahaksin teiega jagada oma kogemusi avariitaastet kiirendava süsteemi väljatöötamisel. Et rääkida kogu projekti arenguteest, alustame veidi kaugemalt. Hetkel töötan Acronis, kuid olen ka lõpetanud Innopolise ülikooli, kus läbisin tarkvaraarenduse juhtimise magistriõppe (tuntud kui MSIT-SE). Innopolis on noor ülikool ja õppekava on veelgi noorem. Kuid see on üles ehitatud Carnegie Melloni ülikooli õppekavale, mille töö hõlmab sellist teemat nagu tööstusprojektid.

Tööstusprojekti eesmärk on sukelduda õppija reaalsesse arengusse ja omandatud teadmisi praktikas kinnistada. Selleks teeb ülikool koostööd ettevõtetega nagu Yandex, Acronis, MTC ja kümnete teistega (kokku oli ülikoolil 2018. aasta seisuga 144 partnerit). Koostöö käigus pakuvad ettevõtted ülikoolile oma töövaldkondi ning tudengid valivad projektidest ühe, mis on nende huvidele ja koolitustasemele lähedasem. Sõna otseses mõttes kaks aastat tagasi olin veel "teisel pool barrikaade" ja töötasin õpilasena teise Acronise projekti juures. Kuid seekord sai minust ettevõtte poolel tudengite tehniline konsultant ja pakkusin Innopolisele välja Active Restore projekti. Active Restore’i idee sõnastas Acronise Kerneli meeskond, kuid lahenduse väljatöötamine algas koos Innopolise ülikooliga.

Aktiivne taastamine – miks seda vaja on?

Traditsiooniliselt toimib avariitaaste standardskeemi järgi. Pärast probleeme arvutiga lähete mõne varundussüsteemi, näiteks Acronis True Image, veebiliidese ja klõpsate suurt "taastamise" nuppu. Järgmisena peate ootama N minutit ja alles pärast seda saate tööd jätkata.

Aktiivne taastamine: kas avariitaaste saab toimuda kiiremini? Palju kiiremini?

Probleem on selles, et see arv N, mida tuntakse ka kui RTO (recovery time objektiiv), lubatud taastumisaeg, võib olla üsna muljetavaldav, mis sõltub ühenduse kiirusest (kui taastamine toimub pilvest), teie masina kõvaketta suurusest. ja mitmed muud tegurid. Kas seda on võimalik vähendada? Jah, saab, sest töö jätkamiseks pole alati vaja täisarvuti ketast. Samad fotod ja videod ei mõjuta kuidagi seadme funktsionaalsust ning neid saab hiljem taustal üles tõmmata.

Vajalik juht...

Operatsioonisüsteem eeldab käivitamist, kui ketas on täielikult valmis. Seetõttu viib Windows läbi rea kontrolle, et kontrollida ketta terviklikkust. Süsteem ei luba tavalist käivitamist, kui mõned failid, mille leidmist operatsioonisüsteem eeldab, puuduvad või on kahjustatud. Selle probleemi lahendamiseks otsustati paigutada kettale meie loodud nn ümbersuunamisfailid, mis asendavad puuduvad või kahjustatud failid, kuid on tegelikult mannekeenid. Selliste ümbersuunajate loomine ei võta kaua aega, kuna neil pole tegelikult sisu.

Edasine taastamine toimub järgmiselt. Taustprotsessi käigus, paralleelselt operatsioonisüsteemi tööga, täidetakse “mannekeenid” andmetega. Tausta taastamise protsess võtab arvesse ketta koormust ja ei ületa määratud limiiti. Kuid kasutaja või operatsioonisüsteem ise võib ootamatult nõuda faili, mida veel pole. Siin tuleb mängu teine ​​taasterežiim. Taotletud faili prioriteet tõstetakse maksimumini ja taasteprotsess laadib faili kiiresti kettale. Operatsioonisüsteem saab vajaliku faili, kuigi väikese viivitusega.

Selline näeb välja ideaalne pilt. Reaalses maailmas on aga tohutult palju lõkse ja potentsiaalseid ummikseisu. Otsustasime koos Innopolise magistrantidega uurida seda taastumisstsenaariumit, hinnata RTO kasu ja mõista, kas selline lähenemine on teostatav? Selliseid lahendusi ju tol ajal turul lihtsalt polnud.

Ja kui ma otsustasin teenuskomponendi Innopolise kuttidele välja anda, algas Acronises töö minifilter failisüsteemi draiveri järgi. Seda tegi Windows Kerneli meeskond. Plaan oli selline:

  • Käivitage draiver OS-i käivitamise varases staadiumis,
  • Töö ajal, millal kasutaja ruumi on täielikult valmis, laadige teenus alla
  • Teenus töötleb juhi taotlusi ja koordineerib edasist tööd.

Aktiivne taastamine: kas avariitaaste saab toimuda kiiremini? Palju kiiremini?

Juhitehnika peensused

Kui kolleegid räägivad teenusest mõnes teises postituses, siis selles tekstis paljastame autojuhtide arendamise keerukused. Juba välja töötatud minifiltri draiveril on kaks töörežiimi – kui süsteem käivitub tavarežiimis ja kui süsteemis on just tekkinud rike ja seda taastatakse. Enne kasutajateekide ja rakenduste ning seega ka meie teenuse laadimist käitub draiver samamoodi. Ta ei tea, millises seisus süsteem praegu on. Selle tulemusena logitakse iga loomine, lugemine ja kirjutamine ning kõik metaandmed salvestatakse. Ja kui teenus on võrgus, edastab juht selle teabe teenusele.

Aktiivne taastamine: kas avariitaaste saab toimuda kiiremini? Palju kiiremini?
Tavalise käivituse korral saadab teenus juhile signaali “Lõõgastu”, et see “lõdvestuks” ja lõpetaks kõigi andmete hoolika logimise. Sel juhul lülitub draiver üle ainult kettal tehtud muudatuste logimisele ja teatab neist teenusele, mis teisi Acronise tööriistu kasutades hoiab ketta varukoopiat kasutaja määratud andmekandjal kõige ajakohasemas olekus. See võib olla pilve-, kaug-, järkjärguline või igaöine varundamine.

Aktiivne taastamine: kas avariitaaste saab toimuda kiiremini? Palju kiiremini?
Kui taasterežiim on lubatud, teatab teenus draiverile, et see peab töötama režiimis "Taaste". Süsteem on äsja krahhist taastunud ja niipea, kui see esitab taotluse kettale faili avamiseks, peab minifilter selle toimingu katkestama, ise selle päringu tegema, kontrollima, kas selline fail on kettal olemas ja kas seda saab avada.

Kui fail puudub, edastab minifilter selle teabe teenusele, mis suurendab faili taastamise prioriteetsust (kogu selle aja toimub taastamine taustal). Selgub, et see fail lihtsalt hüppab järjekorra algusesse. Pärast seda taastab teenus ise (või muud Acronise vahendid) selle faili ja teatab draiverile, et kõik on korras, nüüd pääseb operatsioonisüsteem sellele juurde ja draiver "vabastab" algse päringu süsteemist kettale.

Kui taastamine on võimatu, teatab teenus draiverile, et faili pole varukoopias. Meie minifiltri draiver edastab süsteemipäringu lihtsalt edasi ja algne taotleja (OS ise või rakendus) saab veateate „Faili ei leitud”. See on aga täiesti normaalne, kui faili tõesti ei olnud kettal ja varukoopias.

Aktiivne taastamine: kas avariitaaste saab toimuda kiiremini? Palju kiiremini?

Muidugi töötab operatsioonisüsteem palju aeglasemalt, kuna mis tahes faili või teegi lugemine toimub mitmes etapis, võib-olla koos juurdepääsuga kaugressurssidele. Kuid kasutaja saab taastumise ajal võimalikult kiiresti tööle naasta.

Vaja madalamat, veelgi madalamat...

Prototüüp on oma funktsionaalsust tõestanud. Kuid leidsime ka vajaduse edasi liikuda, sest mõnel juhul on endiselt ummikuid. Näiteks võib operatsioonisüsteem taotleda mitmesuguseid teeke mitmes lõimes, mis viib meie teenuse tagasilülitamiseni.

Probleem, millega praegu tegelen, on Active Restore'i kiiruse suurendamine ja süsteemi turvalisuse taseme tõstmine. Oletame, et süsteem ei vaja kogu faili, vaid ainult osa sellest. Sel eesmärgil töötati välja teine ​​draiver - kettafiltri draiver. See ei tööta enam faili tasemel, vaid ploki tasemel. Tööpõhimõte on sarnane: tavalises töörežiimis logib draiver lihtsalt kettale muudetud plokid ja taasterežiimis proovib plokki ise lugeda ja kui see ebaõnnestub, palub see teenusel prioriteedi tõsta. Kõik muud süsteemi osad jäävad aga samaks. Näiteks OS-i tasemel teenus isegi ei kahtlusta, et tal palutakse suhelda mõne teise draiveriga, sest põhiülesanne on varustada OS-iga täpselt need andmed, mis on tööks vajalikud. See valdkond nõuab olulisi täiustusi, kasvõi seetõttu, et teenus ei oska veel ploki tasemel mõelda.

Järgmise sammuna otsustasin käivitada draiveri sügavamalt ja varem, laskudes teenuse asemel UEFI draiverite ja Windowsi algrakenduste tasemele. Sel eesmärgil töötati see välja UEFI alglaadimisdraiver (või DXE draiver), mis käivitub ja sureb isegi enne OS-i käivitumist. Kuid me vaatame järgmises postituses UEFI draiverite "ajalugu", kokkupaneku ja installimise üksikasju ning Windows Native'i rakenduste spetsiifikat. Nii et tellige meie ajaveebi ja seniks koostan loo järgmise tööetapi kohta. Mul on hea meel näha teie kommentaare ja nõuandeid.

Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Kas teil on kunagi olnud olukordi, kus taastumine võttis piinavalt kaua aega:

  • 65.1%jah 28

  • 23.2%Ei 10

  • 11.6%Ei mõelnud sellele5

43 kasutajat hääletas. 3 kasutajat jäi erapooletuks.

Allikas: www.habr.com

Lisa kommentaar