Aktive Wiederherstellung: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?

Wichtige Daten zu sichern ist eine gute Sache. Was aber, wenn die Arbeit sofort weitergehen muss und jede Minute zählt? Wir von Acronis haben beschlossen, zu prüfen, wie das Problem des Systemstarts so schnell wie möglich gelöst werden kann. Und dies ist der erste Beitrag in der Active Restore-Reihe, in dem ich Ihnen erzählen werde, wie wir das Projekt gemeinsam mit der Innopolis University gestartet haben, welche Lösung wir gefunden haben und woran wir heute arbeiten. Details finden Sie unter dem Schnitt.

Aktive Wiederherstellung: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?

Hallo! Mein Name ist Daulet Tumbayev und heute möchte ich meine Erfahrungen bei der Entwicklung eines Systems zur Beschleunigung der Notfallwiederherstellung mit Ihnen teilen. Um über den gesamten Entwicklungspfad des Projekts zu sprechen, beginnen wir etwas aus der Ferne. Ich arbeite derzeit bei Acronis, bin aber auch Absolvent der Innopolis University, wo ich den Masterstudiengang in Software Development Management (bekannt als MSIT-SE) abgeschlossen habe. Innopolis ist eine junge Universität und der Lehrplan ist noch jünger. Es basiert jedoch auf dem Lehrplan der Carnegie Mellon University, deren Arbeit Themen wie Industrieprojekte umfasst.

Ziel des Industrieprojekts ist es, den Studierenden in die reale Entwicklung einzutauchen und das erworbene Wissen in der Praxis zu festigen. Zu diesem Zweck kooperiert die Universität mit Unternehmen wie Yandex, Acronis, MTC und Dutzenden anderen (insgesamt hatte die Universität im Jahr 2018 144 Partner). Im Rahmen der Kooperation bieten Unternehmen der Hochschule ihre Arbeitsbereiche an und Studierende wählen eines der Projekte aus, das ihren Interessen und Ausbildungsstand näher kommt. Vor buchstäblich zwei Jahren befand ich mich noch „auf der anderen Seite der Barrikaden“ und arbeitete als Student an einem anderen Acronis-Projekt. Aber dieses Mal wurde ich technischer Berater für Studenten auf Seiten des Unternehmens und schlug Innopolis das Active Restore-Projekt vor. Die eigentliche Idee von Active Restore wurde vom Kernel-Team von Acronis formuliert, die Entwicklung der Lösung begann jedoch gemeinsam mit der Innopolis University.

Active Restore – warum wird es benötigt?

Traditionell funktioniert die Notfallwiederherstellung nach einem Standardschema. Nach Problemen mit Ihrem Computer gehen Sie zur Weboberfläche eines Backup-Systems, zum Beispiel Acronis True Image, und klicken auf die große Schaltfläche „Wiederherstellen“. Als nächstes müssen Sie N Minuten warten und erst danach können Sie mit der Arbeit fortfahren.

Aktive Wiederherstellung: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?

Das Problem besteht darin, dass diese Zahl N, auch bekannt als RTO (Recovery Time Objective), die zulässige Wiederherstellungszeit, ziemlich beeindruckend sein kann, was von der Verbindungsgeschwindigkeit (wenn die Wiederherstellung aus der Cloud erfolgt) und der Größe der Festplatte Ihres Computers abhängt und eine Reihe anderer Faktoren. Ist es möglich, es zu reduzieren? Ja, das können Sie, denn um die Arbeit fortzusetzen, benötigen Sie nicht immer eine volle Computerfestplatte. Dieselben Fotos und Videos beeinträchtigen die Funktionalität des Geräts in keiner Weise und können später im Hintergrund abgerufen werden.

Fahrer benötigt...

Das Betriebssystem geht davon aus, dass die Festplatte vollständig bereit ist. Daher führt Windows eine Reihe von Prüfungen durch, um die Integrität der Festplatte zu überprüfen. Das System lässt keinen normalen Start zu, wenn einige vom Betriebssystem erwartete Dateien fehlen oder beschädigt sind. Um dieses Problem zu lösen, wurde beschlossen, die von uns erstellten sogenannten Redirector-Dateien auf der Festplatte zu platzieren, die fehlende oder beschädigte Dateien ersetzen, in Wirklichkeit aber Dummies sind. Es dauert nicht lange, solche Weiterleitungen zu erstellen, da sie eigentlich keinen Inhalt haben.

Die weitere Wiederherstellung erfolgt wie folgt. Durch einen Hintergrundprozess werden parallel zum Betrieb des Betriebssystems „Dummies“ mit Daten gefüllt. Der Hintergrundwiederherstellungsprozess berücksichtigt die Festplattenlast und überschreitet nicht den angegebenen Grenzwert. Allerdings kann es sein, dass der Benutzer oder das Betriebssystem selbst plötzlich eine Datei benötigt, die noch nicht existiert. Hier kommt der zweite Wiederherstellungsmodus ins Spiel. 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 empfängt die benötigte Datei, allerdings mit einer leichten Verzögerung.

So sieht ein ideales Bild aus. In der realen Welt gibt es jedoch eine Vielzahl von Fallstricken und potenziellen Blockaden. Gemeinsam mit den Masterstudenten von Innopolis haben wir beschlossen, dieses Wiederherstellungsszenario zu untersuchen, die RTO-Gewinne zu bewerten und zu verstehen, ob ein solcher Ansatz machbar ist. Schließlich gab es damals einfach keine derartigen Lösungen auf dem Markt.

Und wenn ich beschloss, die Servicekomponente an die Leute von Innopolis auszulagern, dann begann die Arbeit bei Acronis weiter Minifilter nach Dateisystemtreiber. Dies wurde vom Windows-Kernel-Team durchgeführt. Der Plan war so:

  • Starten Sie den Treiber in einem frühen Stadium des Betriebssystemstarts.
  • Während der Arbeit, wann Benutzerraum wird vollständig fertig sein, laden Sie den Dienst herunter
  • Der Dienst bearbeitet Fahreranfragen und koordiniert seine weitere Arbeit.

Aktive Wiederherstellung: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?

Feinheiten der Treibertechnik

Wenn meine Kollegen in einem anderen Beitrag über den Dienst sprechen, werden wir in diesem Text die Feinheiten der Treiberentwicklung enthüllen. Der bereits entwickelte Minifilter-Treiber verfügt über zwei Betriebsmodi – wenn das System im Normalmodus gestartet ist und wenn das System gerade einen Fehler erlebt hat und wiederhergestellt wird. Vor dem Laden von Benutzerbibliotheken und Anwendungen und damit unseres Dienstes verhält sich der Treiber gleich. Er weiß nicht, in welchem ​​Zustand sich das System gerade befindet. Dadurch wird jedes Erstellen, Lesen und Schreiben protokolliert und alle Metadaten werden aufgezeichnet. Und wenn der Dienst online ist, stellt der Fahrer diese Informationen dem Dienst zur Verfügung.

Aktive Wiederherstellung: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?
Bei einem normalen Start sendet der Dienst ein „Relax“-Signal an den Fahrer, damit dieser sich „entspannt“ und mit der peinlichen Protokollierung aller Daten aufhört. In diesem Fall wechselt der Treiber dazu, nur Änderungen auf der Festplatte zu protokollieren und diese an den Dienst zu melden, der mithilfe anderer Acronis-Tools das Festplatten-Backup auf dem vom Benutzer angegebenen Medium im aktuellsten Zustand hält. Dies kann eine Cloud-, Remote-, schrittweise oder nächtliche Sicherung sein.

Aktive Wiederherstellung: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?
Wenn der Wiederherstellungsmodus aktiviert ist, teilt der Dienst dem Treiber mit, dass er im „Wiederherstellungsmodus“ arbeiten muss. Das System hat sich gerade von einem Absturz erholt, und sobald es eine Anfrage zum Öffnen einer Datei auf der Festplatte stellt, muss der Minifilter diesen Vorgang abfangen, diese Anfrage selbst stellen, prüfen, ob eine solche Datei auf der Festplatte vorhanden ist und ob es kann geöffnet werden.

Wenn eine Datei fehlt, übermittelt der Minifilter diese Information an den Dienst, was die Priorität der Dateiwiederherstellung erhöht (die Wiederherstellung läuft die ganze Zeit über im Hintergrund). Es stellt sich heraus, dass diese Datei einfach an den Anfang der Warteschlange springt. Danach stellt der Dienst selbst (oder andere Mittel von Acronis) diese Datei wieder her und teilt dem Treiber mit, dass alles in Ordnung ist, das Betriebssystem nun darauf zugreifen kann und der Treiber die ursprüngliche Anforderung vom System auf die Festplatte „freigibt“.

Wenn eine Wiederherstellung nicht möglich ist, informiert der Dienst den Treiber darüber, dass sich die Datei nicht im Backup befindet. Unser Minifilter-Treiber leitet die Systemanforderung einfach weiter und der ursprüngliche Anforderer (das Betriebssystem selbst oder die Anwendung) erhält die Fehlermeldung „Datei nicht gefunden“. Dies ist jedoch ganz normal, wenn die Datei wirklich nicht auf der Festplatte und im Backup war.

Aktive Wiederherstellung: Kann die Notfallwiederherstellung schneller erfolgen? Viel schneller?

Natürlich arbeitet das Betriebssystem viel langsamer, da das Lesen einer Datei oder Bibliothek in mehreren Schritten erfolgt, möglicherweise mit Zugriff auf Remote-Ressourcen. Der Benutzer kann jedoch so schnell wie möglich wieder an die Arbeit gehen, während die Wiederherstellung noch läuft.

Brauche niedriger, noch niedriger...

Der Prototyp hat seine Funktionalität bewiesen. Aber wir haben auch festgestellt, dass es notwendig ist, weiterzumachen, weil es in manchen Fällen immer noch Stillstände gibt. Beispielsweise kann das Betriebssystem in mehreren Threads verschiedene Bibliotheken anfordern, was dazu führt, dass unser Dienst auf sich selbst zurückschleift.

Das Problem, an dem ich derzeit arbeite, besteht darin, die Geschwindigkeit von Active Restore zu erhöhen und die Systemsicherheit zu erhöhen. Nehmen wir an, das System benötigt nicht die gesamte Datei, sondern nur einen Teil davon. Zu diesem Zweck wurde ein weiterer Treiber entwickelt – der Disk-Filter-Treiber. Es funktioniert nicht mehr auf Dateiebene, sondern auf Blockebene. Das Funktionsprinzip ist ähnlich: Im normalen Betriebsmodus protokolliert der Treiber lediglich geänderte Blöcke auf der Festplatte, im Wiederherstellungsmodus versucht er, den Block selbst zu lesen, und fordert bei Erfolglosigkeit den Dienst auf, die Priorität zu erhöhen. Alle anderen Teile des Systems bleiben jedoch gleich. Beispielsweise ahnt ein Dienst auf Betriebssystemebene nicht einmal, dass er zur Kommunikation mit einem anderen Treiber aufgefordert wird, da die Hauptaufgabe darin besteht, dem Betriebssystem genau die Daten zur Verfügung zu stellen, die für den Betrieb erforderlich sind. Dieser Bereich erfordert erhebliche Verbesserungen, schon allein deshalb, weil der Dienst noch nicht weiß, wie er auf Blockebene denken soll.

Im nächsten Schritt beschloss ich, den Treiber tiefer und früher zu starten und statt des Dienstes auf die Ebene der UEFI-Treiber und nativen Windows-Anwendungen abzusteigen. Zu diesem Zweck wurde es entwickelt UEFI-Boot-Treiber (oder DXE-Treiber), der startet und stirbt, noch bevor das Betriebssystem startet. Aber wir werden uns im nächsten Beitrag mit der „Geschichte“ der UEFI-Treiber, Details zur Montage und Installation sowie den Besonderheiten von Windows Native-Anwendungen befassen. Abonnieren Sie also unseren Blog, und in der Zwischenzeit bereite ich eine Geschichte über den nächsten Arbeitsschritt vor. Ich freue mich über Ihre Kommentare und Ratschläge.

An der Umfrage können nur registrierte Benutzer teilnehmen. Einloggenbitte.

Hatten Sie schon einmal Situationen, in denen die Genesung quälend lange gedauert hat:

  • 65.1%Ja28

  • 23.2%Nr. 10

  • 11.6%Ich habe nicht darüber nachgedacht5

43 Benutzer haben abgestimmt. 3 Benutzer enthielten sich der Stimme.

Source: habr.com

Kommentar hinzufügen