Sepien: Snapshot und Wiederherstellung

Mit Android 15 wird eingeführt, wie du einen Snapshot und eine Schnappschuss eines virtuellen Cuttlefish-Geräts wiederherstellen. Momentaufnahme eines Mit Sepia-Gerät können Sie den Status des Geräts in einem Image auf der Festplatte speichern. Sie können den Snapshot dann wiederherstellen, um ein Sepia-Gerät im Status gespeichert werden.

Snapshots lassen sich in verschiedenen automatisierten oder manuellen Workflows verwenden. Wann? oder einen Vorgang ausführen, bei dem das Gerät verändert wird, können Sie einen Schnappschuss von um sicherzustellen, dass das Gerät in einen bestimmten Zustand zurückversetzt werden kann. Zum Beispiel beim Ausführen von Testsuiten, die den Status des Geräts ändern und kann bei den folgenden Tests zu Problemen oder Instabilitäten führen: können Sie einen Snapshot erstellen, um den gespeicherten Zustand des Geräts um sicherzustellen, dass nachfolgende Tests sauber ausgeführt werden.

Ein weiterer Workflow, bei dem Snapshots nützlich sind, ist das Testen der einer App zu erkennen. Wenn Sie das Verhalten einer App anhand einer Reihe von Aktionen können Sie zwischen den Aktionen einen Snapshot erstellen, während die App ausgeführt wird. So können Sie diesen Snapshot wiederherstellen, ohne einen Neustart vom beginnen. Wenn beispielsweise die Einführung eines Spiels lange dauert, nach Erreichen des Hauptmenüs einen Snapshot erstellen, um den Gerät in diesen Zustand versetzt, sodass die Einrichtungszeit übersprungen wird.

Schnappschuss von einem Sepia-Gerät aufnehmen

Wenn ein Schnappschuss von einem Gerät aufgenommen wird, muss das Sepia-Gerät gesperrt sein um sicherzustellen, dass sich das Sepia-Gerät in einem stabilen Zustand befindet. Wenn das Gerät gesperrt, alle vCPUs und Geräte angehalten und alle Zwischenspeicher werden ihren Status an die VM. Der Snapshot speichert den vCPU-Status, den Arbeitsspeicher und Gerätestatus in einem bestimmten Zielordner auf das Laufwerk übertragen.

VirtiosFS wird nicht unterstützt und muss beim Erstellen eines Snapshots deaktiviert werden. Bis VirtioFS deaktivieren, das Argument übergeben --enable_virtiofs=false beim Ausführen von cvd start.

Nur der GPU-Modus SwiftShader (guest_swiftshader) wird unterstützt für Snapshots. Andere beschleunigte Grafikmodi werden nicht unterstützt.

In den folgenden Schritten wird beschrieben, wie ein Sepia-Gerät gestartet wird. und eine Momentaufnahme machen.

  1. Ein Gerät starten und dabei VirtioFS deaktivieren (Sie können das Gerät dann verwenden.)

    cvd start --enable_virtiofs=false --gpu_mode=guest_swiftshader
    
  2. Erstellen Sie einen Snapshot, indem Sie cvd snapshot_take mit den folgenden Flags ausführen:

    • --force: Wenn unter dem angegebenen Snapshot-Pfad ein Ordner vorhanden ist, Das Flag stellt sicher, dass der vorhandene Ordner gelöscht wird, und ein neuer Ordner wird in dem Snapshot-Pfad erstellt, der den Snapshot enthält.

    • --auto_suspend: Sperrt das Gerät, bevor ein Snapshot erstellt wird, und setzt das Gerät nach dem Erstellen des Snapshots fort.

    • --snapshot_path: der angegebene Pfad, unter dem ein neuer Ordner erstellt wird mit dem Snapshot.

    cvd snapshot_take --force --auto_suspend \
    --snapshot_path=PATH
    

Sepia-Gerät wiederherstellen

Beim Wiederherstellen eines Cuttlefish-Geräte-Snapshots wird die Cuttlefish-Instanz für für die der Snapshot erstellt wurde, beendet werden. Wenn die Instanz bereits angehalten, es sind keine weiteren Maßnahmen erforderlich und der Snapshot kann wiederhergestellt werden.

Wenn du einen Snapshot eines Sepia-Geräts wiederherstellen möchtest, starte ein Gerät mit cvd start und fügen Sie den Snapshot-Pfad hinzu. Wenn die Basisinstanznummer des Sepiens Gerät, auf dem der Snapshot erstellt wurde, sich von der Basisinstanz unterscheidet Nummer der aktuellen Cuttlefish-Instanz, übergeben Sie diese Basisinstanz Nummer mit dem Flag --base_instance_num.

cvd start --snapshot_path=PATH \
--base_instance_num=ID

Sepiengerät sperren

Sie können ein Sepia-Gerät sperren, ohne einen Snapshot zu erstellen (kein Speicherplatz). wird zum Speichern des Status verwendet). Führen Sie folgenden Befehl aus, um ein Sepia-Gerät anzuhalten:

cvd suspend

Sepien-Gerät fortsetzen

Führen Sie folgenden Befehl aus, um ein gesperrtes Cuttlefish-Gerät fortzusetzen:

cvd resume

Snapshot-/Wiederherstellungsfunktion validieren

Die Snapshot-/Wiederherstellungsfunktion kann mit dem folgenden Test validiert werden:

atest SnapshotTest