Önemli verileri yedeklemek iyi bir şeydir. Peki ya işin hemen devam etmesi gerekiyorsa ve her dakika önemliyse? Biz Acronis olarak sistemi başlatma problemini olabildiğince çabuk çözmenin ne kadar mümkün olduğunu kontrol etmeye karar verdik. Bu da Active Restore serisinin ilk yazısı, Innopolis Üniversitesi ile birlikte projeye nasıl başladığımızı, nasıl bir çözüm bulduğumuzu ve bugün ne üzerinde çalıştığımızı anlatacağım. Ayrıntılar kesim altındadır.

Merhaba! Adım Daulet Tumbayev ve bugün sizlerle felaket kurtarmayı hızlandıran bir sistem geliştirme konusundaki deneyimimi paylaşmak istiyorum. Projenin tüm gelişim yolundan bahsetmek için biraz uzaktan başlayalım. Şu anda Acronis'te çalışıyorum ama aynı zamanda Innopolis Üniversitesi'nden de mezunum ve burada Yazılım Geliştirme Yönetimi (MSIT-SE olarak bilinir) Yüksek Lisans programını tamamladım. Innopolis genç bir üniversitedir ve müfredatı daha da gençtir. Ancak çalışmaları endüstriyel projeler gibi bir konuyu içeren Carnegie Mellon Üniversitesi'nin müfredatı üzerine inşa edilmiştir.
Endüstriyel projenin amacı öğrenciyi gerçek gelişime kaptırmak ve edinilen bilgiyi pratikte pekiştirmektir. Bunu yapmak için üniversite, Yandex, Acronis, MTC ve onlarca başka şirketle işbirliği yapıyor (2018 itibarıyla üniversitenin toplam 144 ortağı vardı). İşbirliği kapsamında firmalar çalışma alanlarını üniversiteye sunuyor ve öğrenciler ilgi alanlarına ve eğitim seviyelerine daha yakın olan projelerden birini seçiyor. Kelimenin tam anlamıyla iki yıl önce hâlâ "barikatların diğer tarafındaydım" ve başka bir Acronis projesinde öğrenci olarak çalışıyordum. Ancak bu sefer şirket tarafında öğrencilere teknik danışman oldum ve Innopolis'e Active Restore projesini önerdim. Active Restore fikri Acronis'teki Kernel ekibi tarafından formüle edildi ancak çözümün geliştirilmesi Innopolis Üniversitesi ile birlikte başladı.
Aktif Geri Yükleme – neden gerekli?
Felaket kurtarma geleneksel olarak standart bir şemaya göre çalışır. Bilgisayarınızda sorun yaşandığında Acronis True Image gibi bir yedekleme sisteminin web arayüzüne gidersiniz ve büyük “geri yükleme” düğmesine tıklarsınız. Daha sonra N dakika beklemeniz gerekir ve ancak bundan sonra çalışmaya devam edebilirsiniz.

Sorun şu ki, RTO (kurtarma süresi hedefi) olarak da bilinen bu N sayısı, izin verilen kurtarma süresi oldukça etkileyici olabilir; bu, bağlantı hızına (kurtarma buluttan yapılıyorsa), makinenizin sabit sürücüsünün boyutuna bağlıdır. ve bir dizi başka faktör. Bunu azaltmak mümkün mü? Evet, yapabilirsiniz, çünkü çalışmaya devam etmek için her zaman dolu bir bilgisayar diskine ihtiyacınız yoktur. Aynı fotoğraf ve videolar cihazın işlevselliğini hiçbir şekilde etkilemez ve daha sonra arka planda açılabilir.
Sürücü gerekli...
İşletim sistemi, tamamen hazırlanmış bir diskle başlamayı bekler. Bu nedenle Windows Bir dizi disk bütünlüğü kontrolü gerçekleştirir. İşletim sisteminin bulmayı beklediği bazı dosyalar eksik veya hasarlıysa, sistem normal başlatmaya izin vermez. Bu sorunu çözmek için, diske yönlendirici dosyalar yerleştirmeye karar verdik. Bu dosyalar eksik veya hasarlı dosyaların yerini alır, ancak esasen sahte dosyalardır. Bu yönlendiricileri oluşturmak çok kolaydır, çünkü aslında herhangi bir içerik içermezler.
Daha fazla restorasyon aşağıdaki gibi gerçekleşir. Arka plandaki bir işlemle, işletim sisteminin işleyişine paralel olarak “kuklalar” verilerle doldurulur. Arka plan kurtarma işlemi disk yükünü dikkate alır ve belirlenen sınırı aşmaz. Ancak kullanıcı veya işletim sisteminin kendisi aniden henüz var olmayan bir dosyaya ihtiyaç duyabilir. İkinci kurtarma modunun devreye girdiği yer burasıdır. İstenen dosyanın önceliği maksimuma çıkarılır ve kurtarma işlemi dosyayı acilen diske yükler. İşletim sistemi gerekli dosyayı hafif bir gecikmeyle de olsa alır.
İdeal bir resim böyle görünür. Ancak gerçek dünyada çok sayıda tuzak ve potansiyel çıkmaz vardır. Innopolis yüksek lisans öğrencileriyle birlikte bu iyileşme senaryosunu araştırmaya, RTO'daki kazanımları değerlendirmeye ve böyle bir yaklaşımın uygulanabilir olup olmadığını anlamaya karar verdik. Sonuçta o zamanlar piyasada böyle bir çözüm yoktu.
Ve eğer hizmet bileşenini Innopolis'teki adamlara dağıtmaya karar verirsem, o zaman Acronis'te çalışmalar başladı. Ekip bu işi halletti. Windows Çekirdek. Plan şuydu:
- Sürücüyü işletim sistemi başlatmanın erken bir aşamasında başlatın,
- Çalışma sırasında ne zaman tamamen hazır olacak, hizmeti indirin
- Hizmet, sürücü isteklerini işler ve sonraki çalışmalarını koordine eder.

Sürücü mühendisliğinin incelikleri
Meslektaşlarım başka bir yazıda hizmetten bahsedecek olursa, bu metinde sürücü geliştirmenin inceliklerini ortaya çıkaracağız. Halihazırda geliştirilen mini filtre sürücüsünün iki çalışma modu vardır - sistem normal modda başlatıldığında ve sistem henüz bir arıza yaşadığında ve geri yüklendiğinde. Kullanıcı kitaplıklarını ve uygulamalarını ve dolayısıyla hizmetimizi yüklemeden önce sürücü aynı şekilde davranır. Sistemin şu anda hangi durumda olduğunu bilmiyor. Sonuç olarak, her oluşturma, okuma ve yazma günlüğe kaydedilir ve tüm meta veriler kaydedilir. Hizmet çevrimiçi olduğunda sürücü bu bilgiyi hizmete sağlar.

Normal bir başlatma durumunda hizmet, sürücüye bir "Rahatla" sinyali göndererek sürücünün "rahatlamasını" sağlar ve tüm verileri titizlikle kaydetmeyi bırakır. Bu durumda, sürücü yalnızca diskteki değişiklikleri günlüğe kaydetmeye geçer ve bunları, diğer Acronis araçlarını kullanarak, kullanıcı tarafından belirtilen ortamda disk yedeklemesini en güncel durumda tutan hizmete bildirir. Bu bulut, uzak, kademeli veya gecelik yedekleme olabilir.

Kurtarma modu etkinleştirilirse hizmet, sürücüye "Kurtarma" modunda çalışması gerektiğini bildirir. Sistem bir çökmeden yeni kurtuldu ve diskteki bir dosyayı açma talebinde bulunduğu anda mini filtre bu işlemi durdurmalı, bu isteği kendisi yapmalı, diskte böyle bir dosyanın var olup olmadığını ve olup olmadığını kontrol etmelidir. açılabilir.
Bir dosya eksikse, mini filtre bu bilgiyi hizmete iletir ve bu da dosya kurtarmanın önceliğini artırır (tüm bu süre boyunca kurtarma arka planda devam eder). Bu dosyanın kuyruğun başına atladığı ortaya çıktı. Bundan sonra, hizmetin kendisi (veya diğer Acronis araçları) bu dosyayı geri yükler ve sürücüye her şeyin yolunda olduğunu, artık işletim sisteminin ona erişebileceğini ve sürücünün sistemden diske orijinal isteği "serbest bıraktığını" söyler.
Kurtarma mümkün değilse hizmet, sürücüye dosyanın yedeklemede bulunmadığını bildirir. Mini filtre sürücümüz sistem isteğini iletir ve orijinal istekte bulunan kişi (işletim sisteminin kendisi veya uygulama) bir "dosya bulunamadı" hatası alır. Ancak dosya gerçekten diskte ve yedeklemede değilse bu oldukça normaldir.

Elbette işletim sistemi çok daha yavaş çalışacaktır çünkü herhangi bir dosya veya kitaplığın okunması, muhtemelen uzak kaynaklara erişimle birlikte birkaç aşamada gerçekleşir. Ancak kullanıcı, kurtarma devam ederken mümkün olan en kısa sürede işine geri dönebilir.
Daha aşağıya, hatta daha aşağıya ihtiyaç var...
Prototip işlevselliğini kanıtladı. Ancak bazı durumlarda hala çıkmazlar olduğu için devam etmemiz gerektiğini de gördük. Örneğin, işletim sistemi çeşitli iş parçacıklarında çeşitli kitaplıklar talep edebilir, bu da hizmetimizin kendi kendine geri dönmesine yol açar.
Şu anda üzerinde çalıştığım sorun, Aktif Geri Yükleme hızını arttırmak ve sistem güvenliği seviyesini arttırmaktır. Diyelim ki sistem dosyanın tamamına değil, yalnızca bir kısmına ihtiyaç duyuyor. Bu amaçla başka bir sürücü geliştirildi - disk filtre sürücüsü. Artık dosya düzeyinde değil, blok düzeyinde çalışıyor. Çalışma prensibi benzerdir: normal çalışma modunda, sürücü değiştirilen blokları diske kaydeder ve kurtarma modunda bloğu kendi başına okumaya çalışır ve başarısız olursa hizmetten önceliği artırmasını ister. Ancak sistemin diğer tüm parçaları aynı kalır. Örneğin, işletim sistemi düzeyindeki bir hizmet, kendisinden başka bir sürücüyle iletişim kurmasının istendiğinden şüphelenmez bile çünkü asıl görev, işletim sistemine tam olarak işlem için gerekli olan verileri sağlamaktır. Bu alan, hizmetin henüz blok düzeyinde nasıl düşüneceğini bilmediği için de olsa önemli iyileştirmeler gerektiriyor.
Sonraki adımda, sürücüyü daha derine ve daha erken bir seviyeye, UEFI sürücüsüne ve Native seviyesine kadar indirerek çalıştırdım. Windows Bir hizmet yerine uygulamalar. Bu amaçla geliştirildi. (veya DXE sürücüsü), işletim sistemi başlamadan önce bile başlayıp duran bir sürücüdür. Ancak UEFI sürücülerinin "geçmişi", derleme ve kurulum detayları ve özellikleri... Windows Bir sonraki yazımızda yerel uygulamaları ele alacağız. Bu nedenle, çalışmalarımızın bir sonraki aşaması hakkında bir yazı hazırlarken blogumuza abone olun. Yorumlarınızı ve önerilerinizi duymak isterim.
Ankete sadece kayıtlı kullanıcılar katılabilir. Lütfen.
İyileşmenin dayanılmaz derecede uzun sürdüğü durumlarla hiç karşılaştınız mı:
65.1%Evet28
23.2%hayır10
11.6%Bunu düşünmedim5
43 kullanıcı oy kullandı. 3 kişi çekimser kaldı.
Kaynak: habr.com
