Cuttlefish: création d'instantanés et restauration

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 ramener un appareil Cuttlefish à l'état précédemment enregistré.

Vous pouvez utiliser des instantanés dans différents 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 dans un état spécifié. Par exemple, lorsque vous exécutez des suites de tests qui modifient l'état de l'appareil et peuvent potentiellement entraîner des problèmes ou des instabilités dans les tests suivants, vous pouvez prendre un instantané afin de pouvoir restaurer l'appareil dans un état enregistré après un test, en vous assurant que les tests suivants s'exécutent correctement.

Un autre exemple de workflow où les instantanés sont utiles est celui du test du comportement d'une application. Lorsque vous testez le comportement d'une application en fonction d'un ensemble d'actions, vous pouvez prendre un instantané entre les actions pendant l'exécution de l'application pour pouvoir 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 pouvoir restaurer l'appareil à cet état, en évitant le temps de lancement.

Prendre un instantané d'un appareil Cuttlefish

Lorsque vous prenez un instantané d'un appareil, l'appareil Cuttlefish doit être suspendu pour s'assurer qu'il est dans un état stable. Lorsque l'appareil est suspendu, tous les processeurs virtuels et appareils sont arrêtés, et tous les tampons transmettent leur état à la VM. L'instantané enregistre ensuite l'état du processeur virtuel, de la mémoire et 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 lorsque vous exécutez 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 prise 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 de 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 de l'instantané contenant l'instantané.

    • --auto_suspend : suspend l'appareil avant la prise de l'instantané et le réactive après.

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

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

Restaurer un appareil Cuttlefish

Lorsque vous restaurez 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 Cuttlefish

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 Cuttlefish

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

cvd resume

Valider la fonctionnalité d'instantané/de restauration

Vous pouvez valider la fonctionnalité Snapshot/Restore en exécutant le test suivant :

atest SnapshotTest