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

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

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

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

Сделайте снимок устройства Cuttlefish

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

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

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

Далее описывается процесс запуска устройства 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, для которого был сделан снимок. Если экземпляр уже остановлен, никаких дополнительных действий не требуется, и снимок можно восстановить.

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

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

Приостановить работу устройства Cuttlefish

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

cvd suspend

Возобновить работу устройства Cuttlefish

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

cvd resume

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

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

atest SnapshotTest