Mit der Mehrmandantenfähigkeit von Cuttlefish kann Ihr Hostcomputer mehrere virtuelle Gastgeräte mit einem einzigen Startaufruf.
Diese verschiedenen virtuellen Cuttlefish-Maschinen können einen Teil des Hostlaufwerks gemeinsam nutzen.
um Speicherplatz zu sparen. Jede virtuelle Maschine erhält eine
unterschiedliches Laufwerk-Overlay, das die Android-Partitionen abdeckt (z. B. super
,
userdata
, boot
). Jede Änderung am Gastlaufwerk wird in einem
gastspezifisches Laufwerk-Overlay, das jeder virtuellen Cuttlefish-Maschine einen
Copy-on-Write-Ansicht
ihrer Laufwerkspartitionen. Je mehr virtuelle Geräte Daten schreiben,
und die Overlay-Dateien auf dem Hostlaufwerk
da sie das Delta zwischen dem Originalzustand und der
Aktueller Status.
Die Overlay-Dateien können zurückgesetzt werden, um den Cuttlefish-Datenträger wiederherzustellen. Originalzustand. Dieser Prozess wird als Powerwashing
Instanznummern
Sepia-Geräte erstellen und verbrauchen Ressourcen auf dem Host, der mit ihrem
Instanznummer. Beispiel: Eine adb
-Verbindung wird über ein TCP bereitgestellt.
Server-Socket an Port 6520
für das Cuttlefish-Gerät mit der Instanznummer 1
.
Wenn mehrere Instanzen gestartet werden, wird ein TCP-Server-Socket am Port erstellt.
6520
für das erste Gerät und 6521
für das zweite Gerät und inkrementiert den
Port-Nummer für jedes zusätzliche Gerät.
Maximale Anzahl unterstützter Instanzen ändern
Hostseitige Ressourcen wie TAP-Netzwerkgeräte müssen vorab für
Virtuelle Sepia-Maschinen Standardmäßig enthält der Parameter
cuttlefish-base Debian-Paket
stellt Ressourcen für die Instanznummern 1
bis 10
bereit.
Dies kann geändert werden, indem Sie num_cvd_accounts
in
/etc/default/cuttlefish-host-resources
und starten Sie den
cuttlefish-host-resources
durch Ausführen des folgenden Befehls:
sudo systemctl restart cuttlefish-host-resources
Kanonische Konfigurationen
Kanonische Konfigurationen stellen die Konfiguration für Sepia-Geräte dar im JSON-Format. Sie können kanonische JSON-Konfigurationsdateien erstellen zum Beschreiben der Konfiguration mehrerer Cuttlefish-Geräte in einem mandantenfähigen Gerät Szenario.
Im Folgenden wird das Format beschrieben, das für kanonische JSON-Konfigurationsdateien verwendet wird. Ersetzen Sie die Platzhalter durch die Gerätekonfigurationen.
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
Das folgende Beispiel zeigt eine Konfigurationsdatei mit zwei Geräten. einem Smartphone und einem Wearable:
{
"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"
}
}
]
}
In dieser Tabelle werden die in der Beispielkonfiguration verwendeten Elemente mit zwei Geräte:
Element | Typ | Beschreibung |
---|---|---|
instances |
Matrix | Array von JSON-Objekten, die jeweils ein einzelnes Gerät im mehrmandantenfähige Gerätegruppe, die gestartet werden soll. |
@import |
String | Gibt den Gerätetyp an und legt Standardwerte für das Gerät fest
Konfiguration. Folgende Gerätetypen werden unterstützt:
phone und wearable . |
vm |
Objekt | Gibt Attribute an, die für die VM-Umgebung gelten, die für den Geräteinstanz. |
memory_mb |
Zahl | Die Größe des Arbeitsspeichers, der einer bestimmten VM in Megabyte zugewiesen werden soll. |
setupwizard_mode |
String | Gibt an, ob der Assistent für die Geräteeinrichtung zuerst für den Nutzer ausgeführt wird
die Ausführung des Geräts. Folgende Optionen werden für den Modus des Einrichtungsassistenten unterstützt:
DISABLED , OPTIONAL und
REQUIRED |
cpus |
Zahl | Die Anzahl der virtuellen CPUs, die der VM zugewiesen sind. |
disk |
Objekt | Gibt Attribute an, die für die Suche nach verwendeten Dateisystemartefakten relevant sind zum Ausführen einer einzelnen VM-Instanz. |
default_build |
String | Pfad des lokalen Dateisystems zu einem Ordner, der ein virtuelles Cuttlefish-Gerät enthält Bild. |
Weitere Beispiele für Konfigurationsdateien, die mit cvd
verteilt werden, finden Sie in der
cvd_test_configs
im Cuttlefish-Codebaum.
Mehrmandantenfähige Instanzen steuern
In diesem Abschnitt wird beschrieben, wie Geräte in einem mandantenfähigen Szenario gestartet und beendet werden. Mit den folgenden Optionen können Sie mehrere Sepia-Geräte starten:
- Kanonische Konfiguration: Benutzerdefinierte Konfiguration starten Konfigurationen für jedes Gerät mithilfe einer JSON-Konfigurationsdatei, Liste der zu startenden Instanzen.
- Einzelnes Gastbild: Mehrere Gastprofile starten von einem einzelnen Gast-Image zu verwalten.
Mehrere VMs aus kanonischer Konfiguration starten
Um mehrere VMs mit einer kanonischen Konfiguration zu starten, die die
Multi-Tenant-Szenario mit dem Befehl cvd start
und --config_file=
Flags so:
cvd start --config_file=CONFIG_FILE
Der folgende Beispielaufruf verweist auf eine kanonische Konfigurationsdatei namens
/etc/phone.json
cvd start --config_file=/etc/phone.json
Mehrere VMs über ein einzelnes Gast-Image starten
Um mehrere Sepia-Geräte mit einem einzigen Gastbild zu starten, verwenden Sie die
Flag --num_instances=N
, wobei N die Zahl ist
Geräte auf den Markt zu bringen. Standardmäßig beginnen Geräte bei der Instanznummer 1
.
cvd start --num_instances=N
Führen Sie einen der folgenden Schritte aus, um die Ausgangsinstanznummer zu ändern:
Fügen Sie das Flag
--base_instance_num=N
hinzu mit N als erste Instanznummer.cvd start --base_instance_num=N
Cuttlefish mit übereinstimmendem Nutzerkonto starten
vsoc-NN
, wobei NN die Basisinstanz ist als Zahl in zweistelliger Form. Um beispielsweise Sepia mit einem Nutzer zu starten, Kontovsoc-01
, ausführen:cvd start --base_instance_num=1
Geräte anhalten
Führen Sie folgenden Befehl aus, um alle Geräte zu beenden, die beim letzten cvd start
-Aufruf gestartet wurden:
cvd stop