Cuttlefish: 스냅샷 및 복원

Android 15에서는 Cuttlefish 가상 기기의 스냅샷을 찍고 스냅샷을 복원하는 방법을 소개합니다. Cuttlefish 기기의 스냅샷을 만들면 기기의 상태를 디스크의 이미지에 저장할 수 있습니다. 그런 다음 스냅샷을 복원하여 Cuttlefish 기기를 이전에 저장된 상태로 가져올 수 있습니다.

스냅샷은 다양한 자동화 또는 수동 워크플로에서 사용할 수 있습니다. 기기를 수정하는 절차를 실행할 때 기기의 스냅샷을 촬영하여 기기를 지정된 상태로 다시 복원할 수 있습니다. 예를 들어 기기의 상태를 수정하고 다음 테스트에서 잠재적으로 문제나 불안정을 일으킬 수 있는 테스트 모음을 실행하는 경우 스냅샷을 사용하면 테스트 후 기기를 저장된 상태로 복원하여 후속 테스트가 깔끔하게 실행되도록 할 수 있습니다.

스냅샷이 유용한 또 다른 워크플로 예는 앱 동작을 테스트하는 경우입니다. 작업 세트를 기반으로 앱 동작을 테스트하는 경우 앱이 실행되는 동안 작업 간에 스냅샷을 만들면 처음부터 다시 시작할 필요 없이 해당 스냅샷으로 복원할 수 있습니다. 예를 들어 게임을 시작할 때 불러오는 시간이 길다면 기본 메뉴에 도달한 후 스냅샷을 촬영하여 불러오기 시간을 건너뛰고 기기를 해당 상태로 복원할 수 있습니다.

Cuttlefish 기기의 스냅샷 촬영

기기의 스냅샷을 찍을 때는 Cuttlefish 기기가 안정적인 상태인지 확인하기 위해 Cuttlefish 기기를 일시중지해야 합니다. 기기가 정지되면 모든 vCPU 및 기기가 중지되고 모든 버퍼가 상태를 VM에 푸시합니다. 그러면 스냅샷은 vCPU 상태, 메모리, 기기 상태를 지정된 대상 폴더의 디스크에 저장합니다

VirtiosFS는 지원되지 않으므로 스냅샷을 만들 때 사용 중지해야 합니다. VirtioFS를 사용 중지하려면 cvd create 또는 cvd start를 실행할 때 인수 --enable_virtiofs=false를 전달합니다.

스냅샷에는 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