Izrada sigurnosnih копija važnih podataka je dobra stvar. No, što ako treba odmah nastaviti s radom, a svaka minuta je važna? U Acronisu smo odlučili provjeriti koliko je moguće brzo pokrenuti sustav. Ovo je prvi post iz serije Active Restore, u kojem ću objasniti kako smo započeli projekt s Univerzitetom Innopolis, koje rješenje smo pronašli i na čemu trenutno radimo. Detalji su u nastavku.

Pozdrav! Moje ime je Daulat Tumbaev i danas želim podijeliti svoje iskustvo u razvoju sustava koji ubrzava oporavak nakon havarije. Kako bih ispričao čitav put razvoja projekta, krenut ćemo malo unatrag. Trenutno radim u Acronisu, ali također sam alumnus Univerziteta Innopolis, koji sam završio na master programu "Upravljanje razvojem softvera" (poznatom kao MSIT-SE). Innopolis je mladi univerzitet, a nastavne programe su još mlađi. Međutim, temelje se na nastavnim planovima Univerziteta Carnegie Mellon, čije su istraživačke teme uključivale industrijske projekte.
Cilj industrijskog projekta je uroniti studenta u pravu razvojnu situaciju i učvrstiti stečeno znanje u praksi. U tu svrhu univerzitet surađuje s tvrtkama kao što su Yandex, Acronis, MTC i mnogim drugima (do 2018. godine, institucija je imala 144 partnera). Tijekom suradnje, tvrtke nude univerzitetu svoje radne projekte, a studenti biraju jedan od projekata koji ih najviše zanima i koji odgovara njihovoj razini pripremljenosti. Prije samo dvije godine, bio sam "s druge strane barikada" i radio kao student na drugom Acronis projektu. Međutim, ovaj put postao sam tehnički savjetnik studentima sa strane tvrtke i predložio sam projekt Active Restore. Sama ideja Active Restore formulirana je od strane Kernel tima u Acronisu, ali razvoj rješenja započeo je u suradnji s Univerzitetom Innopolis.
Active Restore – zašto je to potrebno?
Tradicionalni oporavak nakon havarije funkcionira prema standardnoj shemi. Nakon neugodnosti s računalom, ulazite u web sučelje nekog sustava za izradu sigurnosnih kopija, na primjer, Acronis True Image, i pritisnete veliki gumb "opraviti". Zatim treba pričekati N minuta, i tek nakon toga moći ćete nastaviti s radom.

Problem je u tome što je to broj N, poznat i kao RTO (ciljno vrijeme oporavka), dozvoljeno vrijeme oporavka, koje može biti prilično impresivno i ovisi o brzini povezivanja (ako se oporavlja iz oblaka), o kapacitetu tvrdog diska vašeg računala i nizu drugih faktora. Mogu li ga smanjiti? Da, mogu, jer za nastavak rada nije uvijek neophodan cjelokupni disk računala. Isto tako, fotografije i videa ne utječu na funkcionalnost uređaja i mogu se preuzeti kasnije u pozadini.
Potreban vozač…
Operacijski sustav se oslanja na pokretanje s potpuno spremnim diskom. Stoga Windows provodi niz provjera integriteta diska. Sustav neće dopustiti normalno pokretanje u slučaju nedostatka ili oštećenja nekih datoteka koje OS očekuje pronaći. Za rješavanje ovog problema odlučeno je da se na disk postave tzv. datoteke-usmjerivači koje zamjenjuju nedostajuće ili oštećene datoteke, ali zapravo su prazne. Izraditi takve usmjerivače nije dugotrajno, jer zapravo nemaju nikakvog sadržaja.
Nakon toga oporavak se odvija na sljedeći način. U pozadinskom procesu, paralelno s radom operacijskog sustava, "praznine" se ispunjavaju podacima. Proces pozadinskog oporavka uzima u obzir opterećenje diska i ne premašuje postavljeni limit. Međutim, korisnik ili sam operacijski sustav mogu iznenada zatražiti datoteku koja još nije dostupna. Tu u igru ulazi drugi režim oporavka. Prioritet zatražene datoteke se povećava na maksimalni, a proces oporavka hitno učitava datoteku na disk. Operacijski sustav dobiva potrebnu datoteku, iako s malim kašnjenjem.
Tako izgleda idealna slika. Međutim, u stvarnom svijetu, postoji ogroman broj skrivenih zamki i potencijalnih mrtvih točaka. Zajedno sa studentima iz Innopolisa odlučili smo istražiti ovaj scenarij oporavka, procijeniti dobitak u RTO-u i razumjeti je li takav pristup izvediv? Jer slična rješenja na tržištu jednostavno nisu postojala u to vrijeme.
I dok sam servisni dio odlučio prepustiti dečkima iz Innopolisa, unutar Acronisa je započeo rad na . Ovime se bavi tim Windows Kernel. Plan je bio sljedeći:
- Pokrenuti drajver u ranoj fazi pokretanja OS-a,
- Tokom rada, kada budе potpuno spreman, učitati servis
- Servis obrađuje zahteve drajvera i koordinira njegov dalji rad.

Suptilnosti izrade drajvera
Ako će o servisu moji kolege govoriti u drugom postu, u ovom tekstu ćemo razjasniti suptilnosti razvoja drajvera. Već razvijeni mini-filter drajver ima dva režima rada – kada je sistem pokrenut u normalnom režimu i kada je sistem upravo pretrpeo kvar i trenutno se obnavlja. Pre nego što počne učitavanje korisničkih biblioteka i aplikacija, a samim tim i našeg servisa, drajver se ponaša isto. Ne zna u kojem se stanju trenutno nalazi sistem. Kao rezultat toga, svaki create, read i write se protokoliraju, svi metapodaci se beleže. A kada servis bude online, drajver pruža te informacije servisu.

U slučaju običnog pokretanja, servis šalje drajveru signal “Relax”, kako bi se “opustio” i prestao pomno protokolirati sve podatke. U ovom slučaju drajver prelazi na protokolisanje samo promena na disku i obaveštava servis, koji sa drugim Acronis alatima održava bekap diska u maksimalno aktuelnom stanju na mediju koji je korisnik odredio. To može biti oblačno, udaljeno, postepeno ili noćno rezervno kopiranje.

Ako se aktivira režim oporavka, servis obaveštava drajver da je potrebno raditi u režimu “Recovery”. Sistem se upravo oporavio od kvara, i čim da zahtev za otvaranje datoteke na disku, mini-filter mora da presretne ovu operaciju, sam da izvrši taj zahtev, proveri da li takva datoteka postoji na disku i može li se otvoriti.
U slučaju nedostatka datoteke, mini-filter prenosi ovu informaciju servisu, koji povećava prioritet vraćanja datoteke (sve to vreme u pozadini se vrši vraćanje). Tako da ova datoteka jednostavno skače na početak reda čekanja. Nakon toga, servis sam (ili drugim sredstvima Acronis) vraća ovu datoteku i obaveštava drajver da je sve u redu, sada operativni sistem može da joj pristupa i drajver 'pusti' originalni zahtev, od sistema ka disku.
Ako obnova nije moguća, servis obaveštava drajver da datoteka nije ni u rezervnoj kopiji. Naš mini-filter drajver jednostavno propušta sistemski zahtev dalje, tako da originalni zahtevač (sam OS ili aplikacija) dobija grešku 'datoteka nije pronađena'. Ipak, to je sasvim normalno, ako datoteka zaista nije postojala na disku i u rezervnoj kopiji.

Naravno, operativni sistem će raditi mnogo sporije, jer čitanje bilo koje datoteke ili biblioteke prolazi kroz više faza, što možda uključuje pristup udaljenim resursima. Ali korisnik može da započne rad u najkraćem roku, dok se obnova još uvek vrši.
Treba niže, još niže…
Prototip je potvrdio svoju funkcionalnost. Ali smo takođe otkrili potrebu da idemo dalje, jer se u nekim slučajevima i dalje javljaju mrtve petlje. Na primer, operativni sistem može tražiti različite biblioteke u više struja, što dovodi do zaključavanja našeg servisa na samog sebe.
Problem koji trenutno istražujem je poboljšanje brzine Active Restore-a i povećanje razine sigurnosti sustava. Pretpostavimo da sustavu nije potreban cijeli datoteka, već samo njezin dio. Zbog toga je razvijen još jedan drajver - filter-drajver diska. On ne radi na razini datoteka, već na razini blokova. Način rada je sličan: u normalnom načinu rada drajver jednostavno protokolira promijenjene blokove na disku, a u načinu oporavka pokušava sam pročitati blok, a u slučaju neuspjeha zatraži od servisa povećanje prioriteta. Pri tome sve ostale dijelove sustava ostaju nepromijenjeni. Na primjer, servis razine OS čak niti ne sumnja da mu se nudi komunikacija s drugim drajverom, jer je glavna zadaća pružiti OS-u upravo one podatke koji su potrebni za funkcioniranje. Ova oblast zahtijeva značajne dorade, barem zbog toga što servis još ne zna razmišljati na razini blokova.
Sljedeći korak bio je odlučiti pokrenuti drajver dublje i ranije, prelazeći na razinu UEFI drajvera i Native Windows aplikacija umjesto servisa. Za to je razvijen (ili DXE drajver), koji se pokreće i umire još prije pokretanja OS-a. No, 'priču' o UEFI drajverima, detalje o izradi i instalaciji, kao i specifičnosti Windows Native aplikacija, razmotrit ćemo u sljedećem postu. Stoga se pretplatite na naš blog, a ja ću pripremiti priču o sljedećem etapu radova. Bit ću zahvalan za vaše komentare i savjete.
Samo registrirani korisnici mogu sudjelovati u anketi. , molimo.
Jeste li ikada imali situacije kada je oporavak trajao mučno dugo:
65.1%Da28
23.2%Ne10
11.6%Nisam razmišljao5
Glasalo je 43 korisnika. Suzdržalo se 3 korisnika.
Izvor: habr.com
