La multi-propriété de 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 disque de l'hôte, ce qui vous permet de conserver de l'espace disque. Chaque machine virtuelle reçoit une superposition de disque distincte couvrant les partitions Android (telles que super
, userdata
et boot
). Toute modification apportée au disque invité est placée dans une superposition de disque spécifique à l'invité, ce qui donne à chaque machine virtuelle Cuttlefish une vue en mode copie sur écriture de ses partitions de disque. À mesure que chaque appareil virtuel écrit davantage de données dans sa vue du disque, la taille des fichiers de superposition sur le disque hôte augmente, car ils capturent la différence entre l'état d'origine et leur état actuel.
Les fichiers de superposition peuvent être réinitialisés pour rétablir l'état d'origine du disque Cuttlefish. Ce processus est appelé nettoyage à haute pression.
Numéros d'instance
Les appareils Cuttlefish créent et consomment des ressources sur l'hôte associé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 l'appareil Cuttlefish avec le numéro d'instance 1
.
Lorsque plusieurs instances sont lancées, un socket de serveur TCP est créé sur le port 6520
pour le premier appareil, 6521
pour le deuxième appareil, et le numéro de port est incrémenté pour chaque appareil supplémentaire.
Modifier le nombre maximal d'instances compatibles
Les ressources côté hôte, telles que les périphériques réseau TAP, doivent être préalloquées pour les machines virtuelles Cuttlefish. Par défaut, le package Debian cuttlefish-base provisionne des ressources pour les numéros d'instance 1
à 10
.
Vous pouvez modifier cela 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 canoniques pour décrire la configuration de plusieurs appareils Cuttlefish dans un scénario multi-tenant.
Le format utilisé pour les fichiers JSON de configuration canoniques est décrit ci-dessous (remplacez les espaces réservés par les configurations de l'appareil).
{
"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 téléphone et un appareil connecté:
{
"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:
Element | Type | Description |
---|---|---|
instances |
Tableau | Tableau d'objets JSON, chacun décrivant un seul appareil du groupe multi-tenant d'appareils à lancer. |
@import |
Chaîne | Indique le type d'appareil et définit les valeurs par défaut pour la configuration de l'appareil. Les types d'appareils compatibles sont phone et wearable . |
vm |
Objet | Spécifie les propriétés qui s'appliquent à l'environnement de VM spécifique à l'instance de l'appareil. |
memory_mb |
Nombre | Quantité de mémoire à allouer à une VM spécifique, en mégaoctets. |
setupwizard_mode |
Chaîne | Indique si l'assistant de configuration de l'appareil est exécuté pour l'utilisateur lors de la première exécution de l'appareil. Les options compatibles pour le mode assistant de configuration sont DISABLED , OPTIONAL et REQUIRED . |
cpus |
Nombre | 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 d'accès au système de fichiers local vers un dossier contenant une image d'appareil virtuel Cuttlefish. |
Pour voir d'autres 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 explique comment créer et détruire 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ée unique: lancez plusieurs appareils à partir d'une seule image invitée.
Démarrer plusieurs VM à partir de la configuration canonique
Pour créer plusieurs VM à l'aide d'une configuration canonique qui décrit le scénario multi-tenant, appelez la commande cvd create
avec le préfixe d'option --config_file=
comme suit:
cvd create --config_file=CONFIG_FILE
Voici un exemple d'appel référençant un fichier de configuration canonique nommé /etc/phone.json
.
cvd create --config_file=/etc/phone.json
Démarrer plusieurs VM à partir d'une seule image invitée
Pour lancer plusieurs appareils Cuttlefish à l'aide d'une seule image invitée, utilisez l'indicateur --num_instances=N
, où N correspond au nombre d'appareils à lancer. Par défaut, les appareils commencent à partir du numéro d'instance 1
.
cvd create --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 create --base_instance_num=N
Lancez Cuttlefish avec un compte utilisateur correspondant à
vsoc-NN
, où NN est le numéro d'instance de base au format à deux chiffres. Par exemple, pour lancer Cuttlefish avec un compte utilisateurvsoc-01
, exécutez la commande suivante:cvd create --base_instance_num=1
Arrêter des appareils
Pour arrêter tous les appareils lancés par la dernière invocation cvd create
, exécutez:
cvd stop
Pour redémarrer des appareils qui ont été arrêtés, exécutez la commande suivante:
cvd start
Pour supprimer complètement un appareil du système, exécutez les commandes suivantes:
cvd remove