Active Restore: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?

Die Sicherung wichtiger Daten ist gut. Aber was ist, wenn die Arbeit sofort fortgesetzt werden muss und jede Minute zĂ€hlt? Wir bei Acronis haben uns entschieden zu prĂŒfen, wie die Aufgabe einer möglichst schnellen Systemwiederherstellung gelöst werden kann. Dies ist der erste Beitrag der Serie Active Restore, in dem ich erklĂ€ren werde, wie wir zusammen mit der UniversitĂ€t Innopolis an diesem Projekt gearbeitet haben, welche Lösung wir gefunden haben und an was wir heute arbeiten. Details finden Sie unten.

Active Restore: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?

Hallo! Mein Name ist Daulet Tumbaev und heute möchte ich meine Erfahrungen bei der Entwicklung eines Systems teilen, das die Notfallwiederherstellung beschleunigt. Um den gesamten Entwicklungsprozess des Projekts zu erlĂ€utern, fangen wir ein wenig weiter zurĂŒck an. Ich arbeite jetzt bei Acronis, bin aber auch Absolvent der UniversitĂ€t Innopolis, die ich im Masterprogramm "Software Development Management" (auch bekannt als MSIT-SE) abgeschlossen habe. Innopolis ist eine junge UniversitĂ€t, und das Studienprogramm ist noch jĂŒnger. Aber es basiert auf den LehrplĂ€nen der Carnegie Mellon University, die Themen wie industrielle Projekte behandelt.

Ziel des Industrieprojekts ist es, den Studierenden Erfahrung in der realen Entwicklung zu bieten und das erlernte Wissen praktisch anzuwenden. Zu diesem Zweck arbeitet die UniversitĂ€t mit Unternehmen wie Yandex, Acronis, MTC und Dutzenden anderer Unternehmen zusammen (insgesamt hatte die UniversitĂ€t im Jahr 2018 144 Partner). Im Rahmen der Zusammenarbeit bieten Unternehmen der UniversitĂ€t ihre Arbeitsbereiche an, aus denen die Studierenden ein Projekt auswĂ€hlen, das ihren Interessen und ihrem Kenntnisstand am nĂ€chsten kommt. Noch vor zwei Jahren war ich auf der "anderen Seite der Barrikade" und arbeitete als Student an einem anderen Projekt von Acronis. Diesmal wurde ich jedoch als technischer Berater fĂŒr die Studierenden von der Unternehmensseite tĂ€tig und schlug der UniversitĂ€t Innopolis das Projekt Active Restore vor. Die Idee von Active Restore wurde vom Kernel-Team bei Acronis formuliert, aber die Entwicklung der Lösung begann zusammen mit der UniversitĂ€t Innopolis.

Active Restore – warum ist das nötig?

Traditionell funktioniert die Notfallwiederherstellung nach einem Standardmuster. Nach Problemen mit dem Computer loggen Sie sich in das Web-Interface eines Backup-Systems ein, zum Beispiel Acronis True Image, und klicken auf den großen Button „Wiederherstellen“. Danach mĂŒssen Sie N Minuten warten, und erst dann können Sie Ihre Arbeit fortsetzen.

Active Restore: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?

Das Problem ist, dass die Zahl N, auch als RTO (Recovery Time Objective), die zulĂ€ssige Wiederherstellungszeit bekannt, recht beeindruckend sein kann, abhĂ€ngig von der Geschwindigkeit der Verbindung (wenn die Wiederherstellung aus der Cloud erfolgt), vom Umfang der Festplatte Ihres GerĂ€ts und einer Reihe anderer Faktoren. Kann man sie reduzieren? Ja, das kann man, denn zur Wiederaufnahme der Arbeit muss nicht immer die gesamte Festplatte des Computers verfĂŒgbar sein. Fotos und Videos beeinflussen die FunktionalitĂ€t des GerĂ€ts nicht und können spĂ€ter im Hintergrund geladen werden.

Treiber benötigt


Das Betriebssystem geht davon aus, dass es mit einer vollstĂ€ndig funktionierenden Festplatte gestartet werden kann. Daher fĂŒhrt Windows eine Reihe von IntegritĂ€tsprĂŒfungen der Festplatte durch. Das System lĂ€sst keinen normalen Start zu, wenn einige Dateien, die das Betriebssystem erwartet zu finden, fehlen oder beschĂ€digt sind. Um dieses Problem zu lösen, haben wir beschlossen, sogenannte Redirector-Dateien auf die Festplatte zu legen, die fehlende oder beschĂ€digte Dateien ersetzen, aber in Wirklichkeit Leerdateien sind. Solche Redirectoren zu erstellen ist gar nicht langwierig, da sie tatsĂ€chlich keinen Inhalt haben.

Die Wiederherstellung erfolgt dann folgendermaßen. Im Hintergrundprozess werden parallel zur Arbeit des Betriebssystems die „Leerdateien“ mit Daten gefĂŒllt. Der Hintergrundwiederherstellungsprozess berĂŒcksichtigt die Auslastung der Festplatte und ĂŒberschreitet nicht das festgelegte Limit. Allerdings kann der Benutzer oder das Betriebssystem selbst plötzlich eine Datei anfordern, die noch nicht vorhanden ist. Hier tritt der zweite Wiederherstellungsmodus in Kraft. Die PrioritĂ€t der angeforderten Datei wird auf das Maximum erhöht, und der Wiederherstellungsprozess lĂ€dt die Datei dringend auf die Festplatte. Das Betriebssystem erhĂ€lt die benötigte Datei, auch wenn mit einer kurzen Verzögerung.

So sieht das ideale Bild aus. Doch in der realen Welt gibt es eine enorme Anzahl von Stolpersteinen und potenziellen Deadlocks. Gemeinsam mit den Masterstudenten von Innopolis haben wir beschlossen, dieses Szenario der Wiederherstellung zu untersuchen, den Gewinn in RTO zu bewerten und zu verstehen, ob ein solcher Ansatz umsetzbar ist. Solche Lösungen waren zu diesem Zeitpunkt einfach nicht auf dem Markt.

Und wenn ich die Servicekomponente den Kollegen aus Innopolis ĂŒberlassen habe, begann innerhalb von Acronis die Arbeit an einem Mini-Filtertreiber fĂŒr das Dateisystem. Damit beschĂ€ftigte sich das Windows Kernel-Team. Der Plan war folgender:

  • Den Treiber in einer frĂŒhen Phase des Bootvorgangs des Betriebssystems zu starten,
  • WĂ€hrend der Arbeit, wenn der User-Space vollstĂ€ndig bereit ist, den Service zu laden.
  • Der Service verarbeitet die Anfragen des Treibers und koordiniert seine weitere Arbeit.

Active Restore: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?

Die Feinheiten der Treiberentwicklung

Wenn meine Kollegen im anderen Beitrag ĂŒber den Service berichten, werden wir in diesem Text die Feinheiten der Treiberentwicklung darstellen. Der bereits entwickelte Mini-Filtertreiber hat zwei Betriebsmodi – wenn das System im Normalbetrieb gestartet wird und wenn das System gerade einen Ausfall erlebt hat und eine Wiederherstellung stattfindet. Bevor die Benutzerbibliotheken und Anwendungen geladen werden, und somit auch unser Service, verhĂ€lt sich der Treiber gleich. Er weiß nicht, in welchem Zustand sich das System derzeit befindet. Infolgedessen wird jeder create, read und write protokolliert, und alle Metadaten werden festgehalten. Sobald der Service online ist, stellt der Treiber diese Informationen dem Service zur VerfĂŒgung.

Active Restore: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?
Im Falle eines normalen Starts sendet der Service ein Signal "Relax" an den Treiber, damit er "entspannt" und aufhört, alle Daten genau zu protokollieren. In diesem Fall wechselt der Treiber zur Protokollierung nur der Änderungen auf der Festplatte und meldet diese dem Service, der mithilfe anderer Acronis-Tools das Backup der Festplatte so aktuell wie möglich auf dem Medium, das der Benutzer festgelegt hat, unterstĂŒtzt. Dies kann ein cloudbasiertes, remote, inkrementelles oder nĂ€chtliches Backup sein.

Active Restore: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?
Wenn der Wiederherstellungsmodus aktiviert wird, informiert der Dienst den Treiber darĂŒber, dass er im "Recovery"-Modus arbeiten muss. Das System hat sich gerade von einem Ausfall erholt, und sobald es eine Anfrage zum Öffnen einer Datei auf der Festplatte gibt, muss der Minifilter diese Operation abfangen, die Anfrage selbst stellen, ĂŒberprĂŒfen, ob eine solche Datei auf der Festplatte vorhanden ist und ob sie geöffnet werden kann.

Im Falle des Fehlens der Datei ĂŒbermittelt der Minifilter diese Information an den Dienst, der die PrioritĂ€t der Wiederherstellung der Datei erhöht (wĂ€hrenddessen lĂ€uft im Hintergrund die Wiederherstellung). Dadurch wird die Datei einfach an den Anfang der Warteschlange verschoben. Danach stellt der Dienst selbst (oder durch andere Acronis-Mittel) diese Datei wieder her und informiert den Treiber, dass alles in Ordnung ist, so dass das Betriebssystem jetzt darauf zugreifen kann und der Treiber die ursprĂŒngliche Anfrage vom System an die Festplatte "freigibt".

Wenn die Wiederherstellung nicht möglich ist, informiert der Dienst den Treiber, dass die Datei auch im Backup nicht vorhanden ist. Unser Minifilter-Treiber lĂ€sst die Systemanfrage einfach weiter und die ursprĂŒngliche Anfrage (das Betriebssystem oder die Anwendung) erhĂ€lt den Fehler "datei nicht gefunden". Das ist jedoch völlig normal, wenn die Datei tatsĂ€chlich weder auf der Festplatte noch im Backup vorhanden war.

Active Restore: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?

NatĂŒrlich wird das Betriebssystem viel langsamer arbeiten, da das Lesen jeder Datei oder Bibliothek in mehreren Schritten erfolgt, möglicherweise mit Zugriff auf entfernte Ressourcen. Aber der Benutzer kann mit der Arbeit in kĂŒrzester Zeit beginnen, wĂ€hrend die Wiederherstellung noch lĂ€uft.

Noch weiter nach unten


Der Prototyp hat seine FunktionsfĂ€higkeit bewiesen. Aber wir haben auch den Bedarf festgestellt, weiterzumachen, da in einigen FĂ€llen weiterhin Deadlocks auftreten. Zum Beispiel kann das Betriebssystem verschiedene Bibliotheken in mehreren Threads anfordern, was dazu fĂŒhrt, dass unser Dienst sich selbst blockiert.

Das Problem, an dem ich gerade arbeite, besteht darin, die Geschwindigkeit der Active Restore zu erhöhen und das Sicherheitsniveau des Systems zu verbessern. Angenommen, das System benötigt nicht die gesamte Datei, sondern nur einen Teil davon. Zu diesem Zweck wurde ein weiterer Treiber entwickelt — ein Festplattenfiltertreiber. Er arbeitet nicht auf Datei-, sondern auf Blockebene. Das Prinzip der Funktionsweise ist Ă€hnlich: Im normalen Betriebsmodus protokolliert der Treiber einfach die geĂ€nderten Blöcke auf der Festplatte, und im Wiederherstellungsmodus versucht er, den Block selbst zu lesen. Bei einem Fehlschlag fordert er den Dienst auf, die PrioritĂ€t zu erhöhen. Dabei bleiben alle anderen Teile des Systems unverĂ€ndert. Zum Beispiel ahnt der Betriebssystemdienst nicht einmal, dass er mit einem anderen Treiber kommunizieren soll, da die Hauptaufgabe darin besteht, dem Betriebssystem genau die Daten zur VerfĂŒgung zu stellen, die fĂŒr die Funktion benötigt werden. Dieses Thema erfordert erhebliche Nachbesserungen, allein schon deshalb, weil der Dienst noch nicht in der Lage ist, auf Blockebene zu denken.

Der nĂ€chste Schritt, den ich unternahm, war, den Treiber frĂŒher und tiefer zu starten, indem ich auf die Ebene der UEFI-Treiber und nativen Windows-Anwendungen anstelle des Dienstes wechselte. Zu diesem Zweck wurde ein UEFI-Boot-Treiber (oder DXE-Treiber), der vor dem Start des Betriebssystems startet und stoppt. Aber die "Geschichte" der UEFI-Treiber, Details zur Erstellung und Installation sowie die Besonderheiten der nativen Windows-Anwendungen werden wir im nĂ€chsten Beitrag behandeln. Abonnieren Sie also unseren Blog, wĂ€hrend ich die nĂ€chste Etappe der Arbeiten vorbereite. Ich freue mich auf Ihre Kommentare und RatschlĂ€ge.

Nur registrierte Benutzer können an der Umfrage teilnehmen. Bitte einloggen.

Hatten Sie schon einmal Situationen, in denen die Wiederherstellung quÀlend lange dauerte:

  • 65.1%Ja28

  • 23.2%Nein10

  • 11.6%Habe nicht darĂŒber nachgedacht5

Es haben 43 Benutzer abgestimmt. 3 Benutzer haben sich enthalten.

Quelle: habr.com

60GB SSD 8Gb DDR4