Sepia: Mehrinstanzenfähigkeit

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, Konto vsoc-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