La multilocation Cuttlefish permet à votre machine hôte de lancer plusieurs appareils invités virtuels avec une seule invocation de lancement.
Ces multiples machines virtuelles Cuttlefish peuvent partager certaines des ressources du disque hôte, vous permettant ainsi d'économiser de l'espace disque. Chaque machine virtuelle reçoit une superposition de disque distincte couvrant les partitions Android (telles que super
, userdata
, boot
). Toute modification apportée au disque invité est placée dans une superposition de disque spécifique à l'invité, donnant à chaque machine virtuelle Cuttlefish une vue en copie sur écriture de ses partitions de disque. À mesure que chaque périphérique virtuel écrit davantage de données sur sa vue du disque, la taille des fichiers de superposition sur le disque hôte augmente car ils capturent le delta entre l'état d'origine et leur état actuel.
Les fichiers de superposition peuvent être réinitialisés pour ramener le disque Cuttlefish à son état d'origine. Ce processus est connu sous le nom de powerwashing .
Numéros d'instance
Les appareils Cuttlefish créent et consomment des ressources sur l'hôte liées à leur numéro d'instance . Par exemple, une connexion adb
est exposée via un socket de serveur TCP sur le port 6520
pour le périphérique Cuttlefish avec le numéro d'instance 1
. Lorsque plusieurs instances sont lancées, il crée un socket de serveur TCP sur le port 6520
pour le premier périphérique, 6521
pour le deuxième périphérique, et incrémente le numéro de port pour chaque périphérique supplémentaire.
Modifier le nombre maximum d'instances prises en charge
Les ressources côté hôte, telles que les périphériques réseau TAP, doivent être pré-allouées pour les machines virtuelles Cuttlefish. Par défaut, le paquet Debian basé sur la seiche provisionne les ressources pour les instances numérotées 1
à 10
.
Cela peut être modifié en modifiant num_cvd_accounts
dans /etc/default/cuttlefish-host-resources
et en redémarrant le service cuttlefish-host-resources
en exécutant la commande suivante :
sudo systemctl restart cuttlefish-host-resources
Configurations canoniques
Les configurations canoniques représentent la configuration des appareils Cuttlefish au format JSON. Vous pouvez créer des fichiers JSON de configuration canonique pour décrire la configuration de plusieurs appareils Cuttlefish dans un scénario multi-tenant.
Ce qui suit décrit le format utilisé pour les fichiers JSON de configuration canonique (remplacez les espaces réservés par les configurations de périphérique).
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
Voici un exemple de fichier de configuration d'une configuration avec deux appareils, un appareil téléphonique et un appareil portable :
{
"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"
}
}
]
}
Ce tableau décrit les éléments utilisés dans l'exemple de configuration avec deux appareils :
Élément | Taper | Description |
---|---|---|
instances | Tableau | Tableau d'objets JSON, chacun décrivant un seul appareil dans le groupe d'appareils multi-locataires à lancer. |
@import | Chaîne | Indique le type de périphérique et définit les valeurs par défaut pour la configuration du périphérique. Les types d'appareils pris en charge sont phone et wearable . |
vm | Objet | Spécifie les propriétés qui s'appliquent à l'environnement de VM spécifique à l'instance de périphérique. |
memory_mb | Nombre | Quantité de mémoire à allouer à une machine virtuelle spécifique en mégaoctets. |
setupwizard_mode | Chaîne | Spécifie si l'assistant de configuration du périphérique est exécuté pour l'utilisateur lors de la première exécution du périphérique. Les options prises en charge pour le mode assistant de configuration sont DISABLED , OPTIONAL et REQUIRED . |
cpus | Nombre | Le nombre de processeurs virtuels alloués à la VM. |
disk | Objet | Spécifie les propriétés pertinentes pour localiser les artefacts du système de fichiers utilisés pour exécuter une seule instance de VM. |
default_build | Chaîne | Chemin du système de fichiers local vers un dossier contenant une image de périphérique virtuel Cuttlefish. |
Pour plus d'exemples de fichiers de configuration distribués avec cvd
, consultez le dossier cvd_test_configs
dans l'arborescence de code de Cuttlefish.
Contrôler les instances multi-locataires
Cette section décrit comment démarrer et arrêter des appareils dans un scénario multi-tenant. Vous pouvez lancer plusieurs appareils Cuttlefish à l'aide des options suivantes :
- Configuration canonique : Lancez des configurations personnalisées pour chaque appareil à l'aide d'un fichier de configuration JSON décrivant la liste des instances à lancer.
- Image invité unique : lancez plusieurs appareils à partir d’une seule image invité.
Démarrer plusieurs VM à partir de la configuration canonique
Pour démarrer plusieurs VM à l'aide d'une configuration canonique décrivant le scénario multi-tenant, appelez la commande cvd start
avec le préfixe d'indicateur --config_file=
comme suit :
cvd start --config_file=CONFIG_FILE
Ce qui suit est un exemple d'appel faisant référence à un fichier de configuration canonique nommé /etc/phone.json
.
cvd start --config_file=/etc/phone.json
Démarrer plusieurs VM à partir d'une seule image d'invité
Pour lancer plusieurs appareils Cuttlefish à l'aide d'une seule image invitée, utilisez l'indicateur --num_instances= N
, où N est le nombre d'appareils à lancer. Par défaut, les appareils démarrent à partir du numéro d'instance 1
.
cvd start --num_instances=N
Pour modifier le numéro d'instance de départ, effectuez l'une des opérations suivantes :
Ajoutez l'indicateur
--base_instance_num= N
avec N comme premier numéro d'instance.cvd start --base_instance_num=N
Lancez Cuttlefish avec un compte utilisateur correspondant à
vsoc- NN
, où NN est le numéro d'instance de base sous forme à deux chiffres. Par exemple, pour lancer Cuttlefish avec un compte utilisateurvsoc- 01
, exécutez :cvd start --base_instance_num=1
Comment arrêter les appareils
Pour arrêter tous les périphériques lancés par la dernière invocation cvd start
, exécutez :
cvd stop