L'architettura multi-tenancy della seppia consente alla tua macchina host di avviare con una singola chiamata di avvio.
Queste diverse macchine virtuali Cuttlefish possono condividere parte del disco host
per risparmiare spazio su disco. Ogni macchina virtuale riceve
overlay del disco distinto che copre le partizioni Android (ad esempio super
,
userdata
e boot
). Qualsiasi modifica al disco guest viene
un overlay di disco specifico per gli ospiti, che offre a ogni macchina virtuale Cuttlefish un
copia alla scrittura delle partizioni dei dischi. Man mano che ogni dispositivo virtuale scrive di più
dati alla sua vista sul disco, i file overlay sul disco host aumentano
perché stanno acquisendo il delta tra lo stato originale e
lo stato attuale.
I file di overlay possono essere reimpostati per riportare il disco Cuttlefish al suo stato originale. Questo processo è noto come powerwashing
Numeri di istanza
I dispositivi seppia creano e consumano risorse nell'host collegato al proprio
numero di istanza. Ad esempio, una connessione adb
è esposta tramite una porta TCP
socket del server alla porta 6520
per il dispositivo Cuttlefish con numero di istanza 1
.
Quando vengono avviate più istanze, viene creato un socket del server TCP sulla porta
6520
per il primo dispositivo, 6521
per il secondo e incrementa il valore
di porta di ogni dispositivo aggiuntivo.
Modifica il numero massimo di istanze supportate
Le risorse lato host, ad esempio i dispositivi di rete TAP, devono essere preallocate per
Macchine virtuali Seppia. Per impostazione predefinita,
Pacchetto Debian cuttlefish-base
esegue il provisioning delle risorse per le istanze numeri da 1
a 10
.
Questo valore può essere modificato modificando num_cvd_accounts
in
/etc/default/cuttlefish-host-resources
e riavvio di
cuttlefish-host-resources
eseguendo il comando seguente:
sudo systemctl restart cuttlefish-host-resources
Configurazioni canoniche
Le configurazioni canoniche rappresentano la configurazione dei dispositivi Cuttlefish in formato JSON. Puoi creare file JSON di configurazione canonici per descrivere la configurazione di più dispositivi Cuttlefish in un ambiente multi-tenant in questo scenario.
Di seguito viene descritto il formato utilizzato per i file JSON di configurazione canonici (sostituisci i segnaposto con le configurazioni dei dispositivi).
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
Di seguito è riportato un esempio di file di configurazione di una configurazione con due dispositivi. Uno smartphone e un dispositivo indossabile:
{
"instances": [
{
"@import": "phone",
"vm": {
"memory_mb": 8192,
"setupwizard_mode": "OPTIONAL",
"cpus": 4
},
"disk": {
"default_build": "/home/username/devices/cf_x86_64_phone-userdebug"
}
},
{
"@import": "wearable",
"vm": {
"memory_mb": 8192,
"setupwizard_mode": "REQUIRED",
"cpus": 4
},
"disk": {
"default_build": "/home/username/devices/cf_gwear_x86-userdebug"
}
}
]
}
Questa tabella descrive gli elementi utilizzati nella configurazione di esempio con due dispositivi:
Elemento | Tipo | Descrizione |
---|---|---|
instances |
Array | array di oggetti JSON, ognuno dei quali descrive un singolo dispositivo in gruppo di dispositivi multi-tenant da avviare. |
@import |
Stringa | Indica il tipo di dispositivo e imposta i relativi valori predefiniti
configurazione. I tipi di dispositivi supportati sono
phone e wearable . |
vm |
Oggetto | Specifica le proprietà che si applicano all'ambiente VM specifico per un'istanza del dispositivo. |
memory_mb |
Numero | La quantità di memoria da allocare per una VM specifica, espressa in megabyte. |
setupwizard_mode |
Stringa | Specifica se la configurazione guidata del dispositivo viene eseguita o meno per l'utente
corsa del dispositivo. Le opzioni supportate per la modalità di configurazione guidata sono
DISABLED , OPTIONAL e
REQUIRED . |
cpus |
Numero | Il numero di CPU virtuali allocate alla VM. |
disk |
Oggetto | Specifica le proprietà pertinenti alla localizzazione degli artefatti del file system utilizzati per l'esecuzione di una singola istanza VM. |
default_build |
Stringa | Percorso del file system locale di una cartella contenente un dispositivo virtuale Cuttlefish dell'immagine. |
Per altri esempi di file di configurazione distribuiti con cvd
, consulta la
cvd_test_configs
nell'albero del codice di Cuttlefish.
Controlla le istanze multi-tenant
Questa sezione descrive come avviare e arrestare i dispositivi in uno scenario multi-tenant. Puoi avviare più dispositivi Seppia utilizzando le seguenti opzioni:
- Configurazione canonica: avvia personalizzata configurazioni per ciascun dispositivo mediante un file di configurazione JSON che descrive l'elenco delle istanze da avviare.
- Immagine ospite singola: avvia più immagini dispositivi da una singola immagine ospite.
Avvia più VM dalla configurazione canonica
Per avviare più VM utilizzando una configurazione canonica che descriva
scenario multi-tenant, richiama il comando cvd start
con --config_file=
come segue:
cvd start --config_file=CONFIG_FILE
Di seguito è riportato un esempio di chiamata che fa riferimento a un file di configurazione canonico denominato
/etc/phone.json
.
cvd start --config_file=/etc/phone.json
Avvia più VM da una singola immagine guest
Per avviare più dispositivi Seppia utilizzando una singola immagine ospite, utilizza la
Flag --num_instances=N
, dove N è il numero
di dispositivi da lanciare. Per impostazione predefinita, i dispositivi vengono avviati dal numero di istanza 1
.
cvd start --num_instances=N
Per modificare il numero di istanza iniziale, esegui una delle seguenti operazioni:
Aggiungi il flag
--base_instance_num=N
con N come primo numero di istanza.cvd start --base_instance_num=N
Lancia seppia con una corrispondenza tra account utente
vsoc-NN
, dove NN è l'istanza di base numero in formato a due cifre. Ad esempio, per avviare Seppia con un utente accountvsoc-01
, esegui:cvd start --base_instance_num=1
Come interrompere i dispositivi
Per interrompere tutti i dispositivi avviati dall'ultima chiamata cvd start
, esegui:
cvd stop