Seiche: créer des instantanés et restaurer des données

Android 15 explique comment prendre et restaurer un instantané d'un appareil virtuel Cuttlefish. Prendre un instantané d'un appareil Cuttlefish vous permet d'enregistrer l'état de l'appareil dans une image sur le disque. Vous pouvez ensuite restaurer l'instantané pour rétablir l'état précédemment enregistré d'un appareil Cuttlefish.

Vous pouvez utiliser des instantanés dans divers workflows automatisés ou manuels. Lorsque vous effectuez une procédure qui modifie l'appareil, vous pouvez prendre un instantané de l'appareil pour vous assurer de pouvoir le restaurer à un état spécifié. Par exemple, lorsque vous exécutez des suites de tests qui modifient l'état de l'appareil et peuvent potentiellement causer des problèmes ou des instabilités dans les tests suivants, vous pouvez prendre une capture d'écran afin de restaurer l'appareil dans un état enregistré après un test, ce qui garantit que les tests suivants s'exécutent correctement.

Un autre exemple de workflow dans lequel les instantanés sont utiles est le test du comportement d'une application. Lorsque vous testez le comportement d'une application basée sur un ensemble d'actions, vous pouvez prendre un instantané entre les actions lorsque l'application est en cours d'exécution pour vous permettre de restaurer cet instantané sans avoir à redémarrer depuis le début. Par exemple, si le lancement d'un jeu prend beaucoup de temps, vous pouvez prendre un instantané après avoir atteint le menu principal afin de restaurer l'état de l'appareil à cet état, en ignorant le temps de mise en service.

Prendre un instantané d'un appareil Cuttlefish

Lorsque vous prenez un instantané d'un appareil, celui-ci doit être suspendu pour garantir qu'il est stable. Lorsque l'appareil est suspendu, tous les vCPU et appareils sont arrêtés, et tous les tampons transfèrent leur état à la VM. L'instantané enregistre ensuite l'état du processeur virtuel, la mémoire et l'état de l'appareil sur le disque dans un dossier de destination spécifié.

VirtiosFS n'est pas compatible et doit être désactivé lors de la création d'un instantané. Pour désactiver VirtioFS, transmettez l'argument --enable_virtiofs=false lors de l'exécution de cvd create ou cvd start.

Seul le mode GPU SwiftShader (guest_swiftshader) est compatible avec les instantanés. Les autres modes graphiques accélérés ne sont pas compatibles.

Les étapes suivantes décrivent le processus de lancement d'un appareil Cuttlefish et de création d'un instantané.

  1. Lancez un appareil tout en désactivant VirtioFS. Vous pouvez ensuite utiliser l'appareil.

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. Prenez un instantané en exécutant cvd snapshot_take avec les options suivantes:

    • --force : si un dossier existe au chemin d'accès à l'instantané spécifié, cet indicateur garantit que le dossier existant est supprimé et qu'un nouveau dossier est créé au chemin d'accès à l'instantané contenant l'instantané.

    • --auto_suspend : suspend l'appareil avant la prise de l'instantané et le redémarre une fois l'instantané pris.

    • --snapshot_path : chemin d'accès spécifié dans lequel un dossier est créé avec l'instantané.

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

Restaurer un appareil de seiche

Lors de la restauration d'un instantané d'appareil Cuttlefish, l'instance Cuttlefish pour laquelle l'instantané a été pris doit être arrêtée. Si l'instance est déjà arrêtée, aucune autre action n'est requise et l'instantané peut être restauré.

Pour restaurer un instantané d'un appareil Cuttlefish, lancez un appareil avec cvd create et incluez le chemin d'accès à l'instantané. Si le numéro d'instance de base de l'appareil Cuttlefish sur lequel l'instantané a été pris est différent du numéro d'instance de base de l'instance Cuttlefish actuelle, transmettez ce numéro d'instance de base à l'aide de l'indicateur --base_instance_num.

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

Suspendre un appareil seiche

Vous pouvez suspendre un appareil Cuttlefish sans prendre d'instantané (aucun espace disque n'est utilisé pour enregistrer l'état). Pour suspendre un appareil Cuttlefish, exécutez la commande suivante:

cvd suspend

Réactiver un appareil seiche

Pour réactiver un appareil Cuttlefish suspendu, exécutez la commande suivante :

cvd resume

Valider la fonctionnalité Instantané/Restauration

La fonctionnalité Instantané/Restauration peut être validée en exécutant le test suivant:

atest SnapshotTest