Каракатица: снимок и восстановление

В Android 15 рассказывается, как сделать снимок и восстановить снимок виртуального устройства «Каракатица». Снимок устройства «Каракатица» позволяет сохранить состояние устройства в виде изображения на диске. Затем вы можете восстановить снимок, чтобы вернуть устройство «Каракатица» в ранее сохраненное состояние.

Вы можете использовать снимки в различных автоматизированных или ручных рабочих процессах. При выполнении процедуры изменения устройства вы можете сделать снимок устройства, чтобы гарантировать возможность восстановления устройства обратно в указанное состояние. Например, при запуске наборов тестов, которые изменяют состояние устройства и потенциально могут вызвать проблемы или нестабильность в следующих тестах, вы можете сделать снимок, чтобы восстановить устройство в сохраненное состояние после теста, гарантируя выполнение последующих тестов. чисто.

Другой пример рабочего процесса, в котором снимки полезны, — это тестирование поведения приложения. При тестировании поведения приложения на основе набора действий вы можете сделать снимок между действиями во время работы приложения, чтобы можно было восстановить этот снимок без необходимости перезапускать его с самого начала. Например, если запуск игры требует длительного времени загрузки, вы можете сделать снимок после входа в главное меню, чтобы восстановить устройство в это состояние, пропустив время запуска.

Сделайте снимок устройства «Каракатица»

При создании снимка устройства устройство «Каракатица» должно быть приостановлено, чтобы убедиться, что устройство «Каракатица» находится в стабильном состоянии. Когда устройство приостановлено, все виртуальные ЦП и устройства останавливаются, а все буферы передают свое состояние виртуальной машине. Затем снимок сохраняет состояние виртуального ЦП, память и состояние устройства на диск в указанной папке назначения.

VirtiosFS не поддерживается и должен быть отключен при создании снимка. Чтобы отключить VirtioFS, передайте аргумент --enable_virtiofs=false при запуске cvd create или cvd start .

Для снимков поддерживается только режим графического процессора SwiftShader ( guest_swiftshader ). Другие ускоренные графические режимы не поддерживаются.

Следующие шаги описывают процесс запуска устройства Cuttlefish и создания снимка.

  1. Запустите устройство, отключив VirtioFS. (После этого вы сможете использовать устройство.)

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
    
  2. Сделайте снимок, запустив cvd snapshot_take со следующими флагами:

    • --force : если папка существует по указанному пути к снимку, этот флаг гарантирует, что существующая папка будет удалена, а по пути к снимку будет создана новая папка, содержащая снимок.

    • --auto_suspend : приостанавливает работу устройства перед созданием снимка и возобновляет работу устройства после создания снимка.

    • --snapshot_path : указанный путь, по которому создается новая папка со снимком.

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

Восстановить устройство Каракатицы

При восстановлении снимка устройства Cuttlefish экземпляр Cuttlefish, для которого был сделан снимок, должен быть остановлен. Если экземпляр уже остановлен, никаких дальнейших действий не требуется, и снимок можно восстановить.

Чтобы восстановить снимок устройства Cuttlefish, запустите устройство с помощью cvd create и укажите путь к снимку. Если базовый номер экземпляра устройства Cuttlefish, на котором был сделан снимок, отличается от базового номера экземпляра текущего экземпляра Cuttlefish, передайте этот базовый номер экземпляра с помощью флага --base_instance_num .

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

Приостановить устройство «Каракатица»

Вы можете приостановить работу устройства Cuttlefish без создания моментального снимка (для сохранения состояния не используется дисковое пространство). Чтобы приостановить работу устройства Cuttlefish, запустите:

cvd suspend

Возобновить работу устройства «Каракатица»

Чтобы возобновить работу приостановленного устройства Cuttlefish, запустите:

cvd resume

Проверьте функцию моментального снимка/восстановления.

Функцию моментального снимка/восстановления можно проверить, выполнив следующий тест:

atest SnapshotTest