Seppia: snapshot e ripristino

Android 15 illustra come acquisire e recuperare uno snapshot di un dispositivo virtuale Cuttlefish. 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 un'istantanea del dispositivo per assicurarti di poterlo ripristinare a uno 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 il lancio di un gioco richiede molto tempo, puoi acquisire uno snapshot dopo aver raggiunto il menu principale in modo da ripristinare lo stato del dispositivo, saltando il tempo di lancio.

Acquisire un'istantanea di un dispositivo Cuttlefish

Quando scatti uno snapshot di un dispositivo, il dispositivo Cuttlefish deve essere sospeso per assicurarti che sia in uno stato stabile. Quando il dispositivo è sospeso, tutte le vCPU e i dispositivi vengono arrestati e tutti i buffer inviano il loro 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 disattivato quando viene acquisito 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à di grafica accelerata 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 ne venga creata una nuova nel percorso dello snapshot contenente lo snapshot

    • --auto_suspend: sospende il dispositivo prima che venga acquisito lo snapshot e lo riprende al termine dell'acquisizione.

    • --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 arrestata. Se l'istanza è già stata interrotta, 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 corrente, passa questo numero di istanza utilizzando il flag --base_instance_num.

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

Sospendere un dispositivo Cuttlefish

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

cvd suspend

Riprendere un dispositivo Cuttlefish

Per riprendere un dispositivo Cuttlefish sospeso, esegui:

cvd resume

Convalida la funzionalità di snapshot/ripristino

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

atest SnapshotTest