Wielodostępność mątwy umożliwia maszynie hosta uruchamianie wielu wirtualnych urządzeń gościnnych za pomocą jednego wywołania.
Te wiele maszyn wirtualnych mątwy może współdzielić część zasobów dysku hosta, co pozwala zaoszczędzić miejsce na dysku. Każda maszyna wirtualna otrzymuje odrębną nakładkę na dysk obejmującą partycje Androida (takie jak super
, userdata
, boot
). Wszelkie modyfikacje na dysku gościa są umieszczane w nakładki dysku specyficznej dla gościa, dzięki czemu każda maszyna wirtualna Mątwy ma widok partycji dysku z możliwością kopiowania przy zapisie. W miarę jak każde urządzenie wirtualne zapisuje więcej danych na swoim widoku dysku, pliki nakładek na dysku hosta powiększają się, ponieważ przechwytują różnicę między stanem oryginalnym a stanem bieżącym.
Pliki nakładki można zresetować, aby przywrócić dysk mątwy do pierwotnego stanu. Proces ten nazywany jest praniem mocy .
Numery instancji
Urządzenia mątwy tworzą i zużywają zasoby na hoście powiązane z ich numerem instancji . Na przykład połączenie adb
jest udostępniane przez gniazdo serwera TCP na porcie 6520
dla urządzenia mątwy o numerze instancji 1
. W przypadku uruchomienia wielu instancji tworzy gniazdo serwera TCP na porcie 6520
dla pierwszego urządzenia, 6521
dla drugiego urządzenia i zwiększa numer portu dla każdego dodatkowego urządzenia.
Zmodyfikuj maksymalną liczbę obsługiwanych instancji
Zasoby po stronie hosta, takie jak urządzenia sieciowe TAP, muszą być wstępnie przydzielone dla maszyn wirtualnych Mątwy. Domyślnie pakiet Debiana oparty na mątwie udostępnia zasoby, na przykład numery od 1
do 10
.
Można to zmienić, modyfikując num_cvd_accounts
w /etc/default/cuttlefish-host-resources
i ponownie uruchamiając usługę cuttlefish-host-resources
, uruchamiając następującą komendę:
sudo systemctl restart cuttlefish-host-resources
Konfiguracje kanoniczne
Konfiguracje kanoniczne reprezentują konfigurację urządzeń mątwy w formacie JSON. Można utworzyć pliki JSON konfiguracji kanonicznej, aby opisać konfigurację wielu urządzeń mątwy w scenariuszu z wieloma dzierżawcami.
Poniżej opisano format używany w plikach JSON konfiguracji kanonicznej (zastąp symbole zastępcze konfiguracjami urządzeń).
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
Poniżej znajduje się przykładowy plik konfiguracyjny konfiguracji z dwoma urządzeniami, telefonem i urządzeniem do noszenia:
{
"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"
}
}
]
}
W poniższej tabeli opisano elementy użyte w przykładowej konfiguracji z dwoma urządzeniami:
Element | Typ | Opis |
---|---|---|
instances | Szyk | Tablica obiektów JSON, z których każdy opisuje pojedyncze urządzenie w grupie urządzeń obsługujących wielu dzierżawców, które mają zostać uruchomione. |
@import | Strunowy | Wskazuje typ urządzenia i ustawia domyślne wartości konfiguracji urządzenia. Obsługiwane typy urządzeń to phone i wearable . |
vm | Obiekt | Określa właściwości, które mają zastosowanie do środowiska maszyny wirtualnej specyficznej dla instancji urządzenia. |
memory_mb | Numer | Ilość pamięci do przydzielenia dla określonej maszyny wirtualnej w megabajtach. |
setupwizard_mode | Strunowy | Określa, czy kreator konfiguracji urządzenia jest uruchamiany dla użytkownika przy pierwszym uruchomieniu urządzenia. Obsługiwane opcje trybu kreatora konfiguracji to DISABLED , OPTIONAL i REQUIRED . |
cpus | Numer | Liczba wirtualnych procesorów przydzielonych do maszyny wirtualnej. |
disk | Obiekt | Określa właściwości związane z lokalizowaniem artefaktów systemu plików używanych do uruchamiania pojedynczej instancji maszyny wirtualnej. |
default_build | Strunowy | Ścieżka lokalnego systemu plików do folderu zawierającego obraz urządzenia wirtualnego mątwy. |
Więcej przykładów plików konfiguracyjnych dystrybuowanych z cvd
można znaleźć w folderze cvd_test_configs
w drzewie kodów mątwy.
Kontroluj instancje z wieloma dzierżawcami
W tej sekcji opisano sposób uruchamiania i zatrzymywania urządzeń w scenariuszu z wieloma dzierżawcami. Możesz uruchomić wiele urządzeń mątwy, korzystając z następujących opcji:
- Konfiguracja kanoniczna : uruchamiaj niestandardowe konfiguracje dla każdego urządzenia przy użyciu pliku konfiguracyjnego JSON opisującego listę instancji do uruchomienia.
- Pojedynczy obraz gościa : uruchamiaj wiele urządzeń z jednego obrazu gościa.
Uruchom wiele maszyn wirtualnych z konfiguracji kanonicznej
Aby uruchomić wiele maszyn wirtualnych przy użyciu konfiguracji kanonicznej opisującej scenariusz z wieloma dzierżawcami, wywołaj komendę cvd start
z przedrostkiem flagi --config_file=
w następujący sposób:
cvd start --config_file=CONFIG_FILE
Poniżej znajduje się przykładowe wywołanie odwołujące się do kanonicznego pliku konfiguracyjnego o nazwie /etc/phone.json
.
cvd start --config_file=/etc/phone.json
Uruchom wiele maszyn wirtualnych z pojedynczego obrazu gościa
Aby uruchomić wiele urządzeń mątwy przy użyciu jednego obrazu gościa, użyj flagi --num_instances= N
, gdzie N to liczba urządzeń do uruchomienia. Domyślnie urządzenia zaczynają od instancji numer 1
.
cvd start --num_instances=N
Aby zmienić początkowy numer instancji, wykonaj jedną z następujących czynności:
Dodaj flagę
--base_instance_num= N
z N jako numerem pierwszej instancji.cvd start --base_instance_num=N
Uruchom Cuttlefish z kontem użytkownika pasującym do
vsoc- NN
, gdzie NN to podstawowy numer instancji w postaci dwucyfrowej. Na przykład, aby uruchomić Cuttlefish z kontem użytkownikavsoc- 01
, uruchom:cvd start --base_instance_num=1
Jak zatrzymać urządzenia
Aby zatrzymać wszystkie urządzenia uruchomione przez ostatnie wywołanie cvd start
, uruchom:
cvd stop