Seppia: istantanea e ripristino

Android 15 spiega come acquisire e ripristinare uno snapshot di un dispositivo virtuale Seppia. L'acquisizione di uno snapshot di un dispositivo Cuttlefish ti consente di salvare lo stato del dispositivo in un'immagine su disco. Puoi quindi ripristinare lo snapshot per ripristinare lo stato precedentemente salvato di un dispositivo Cuttlefish.

Puoi utilizzare gli snapshot in vari flussi di lavoro automatici o manuali. Quando esegui una procedura che modifica il dispositivo, puoi acquisire uno snapshot del dispositivo per assicurarti di poterlo ripristinare allo stato specificato. Ad esempio, quando esegui suite di test che modificano lo stato del dispositivo e possono potenzialmente causare problemi o instabilità nei test successivi, puoi acquisire uno snapshot in modo da ripristinare il dispositivo a uno stato salvato dopo un test, assicurandoti che i test successivi vengano eseguiti correttamente.

Un altro esempio di flusso di lavoro in cui gli snapshot sono utili è durante il test del comportamento di un'app. Quando testi il comportamento di un'app in base a un insieme di azioni, puoi acquisire uno snapshot tra un'azione e l'altra mentre l'app è in esecuzione per consentirti di ripristinare lo snapshot senza dover riavviare dall'inizio. Ad esempio, se l'avvio di un gioco richiede un tempo di avvio lungo, puoi acquisire un'istantanea dopo aver raggiunto il menu principale in modo da poter ripristinare lo stato del dispositivo in questione, saltando il tempo di avvio.

Acquisire un'istantanea di un dispositivo Cuttlefish

Quando scatti una foto di un dispositivo, quest'ultimo deve essere sospeso per garantire che sia in uno stato stabile. Quando il dispositivo viene sospeso, tutte le vCPU e i dispositivi vengono arrestati e tutti i buffer inviano il proprio stato alla VM. Lo snapshot salva quindi lo stato della vCPU, della memoria e del dispositivo su disco in una cartella di destinazione specificata.

VirtiosFS non è supportato e deve essere disabilitato quando si acquisisce uno snapshot. Per disabilitare VirtioFS, passa l'argomento --enable_virtiofs=false quando esegui cvd create o cvd start.

Per gli snapshot è supportata solo la modalità GPU SwiftShader (guest_swiftshader). Altre modalità grafiche accelerate non sono supportate.

I passaggi riportati di seguito descrivono la procedura per avviare un dispositivo Cuttlefish e acquisire uno snapshot.

  1. Avvia un dispositivo disattivando VirtioFS. Dopodiché potrai utilizzare il dispositivo.

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. Acquisisci uno snapshot eseguendo cvd snapshot_take con i seguenti flag:

    • --force: se esiste una cartella nel percorso dello snapshot specificato, questo flag garantisce che la cartella esistente venga eliminata e che venga creata una nuova cartella nel percorso dello snapshot contenente lo snapshot

    • --auto_suspend: il dispositivo viene sospeso prima dell'acquisizione dello snapshot e il dispositivo viene riavviato dopo l'acquisizione dell'istantanea.

    • --snapshot_path: il percorso specificato in cui viene creata una nuova cartella con lo snapshot.

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

Ripristinare un dispositivo Cuttlefish

Quando ripristini uno snapshot del dispositivo Cuttlefish, l'istanza Cuttlefish per la quale è stato acquisito lo snapshot deve essere interrotta. Se l'istanza è già stata arrestata, non sono necessarie ulteriori azioni e lo snapshot può essere ripristinato.

Per ripristinare uno snapshot di un dispositivo Cuttlefish, avvia un dispositivo con cvd create e includi il percorso dello snapshot. Se il numero di istanza di base del dispositivo Cuttlefish su cui è stato acquisito lo snapshot è diverso dal numero di istanza di base dell'istanza Cuttlefish attuale, passa questo numero di istanza di base utilizzando il flag --base_instance_num.

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

Sospendere un dispositivo Seppia

Puoi sospendere un dispositivo Cuttlefish senza acquisire uno snapshot (non viene utilizzato spazio su disco per salvare lo stato). Per sospendere un dispositivo Seppia, esegui:

cvd suspend

Riprendere un dispositivo Cuttlefish

Per ripristinare un dispositivo Seppia sospeso, esegui:

cvd resume

Convalida la funzionalità di snapshot/ripristino

La funzionalità di snapshot/ripristino può essere convalidata eseguendo il seguente test:

atest SnapshotTest