Wielodostępność Cuttlefish umożliwia uruchamianie na komputerze hosta wielu wirtualnych urządzeń gości za pomocą jednego wywołania.
Te maszyny wirtualne Cuttlefish mogą współdzielić niektóre zasoby dysku hosta, co pozwala oszczędzać miejsce na dysku. Każda maszyna wirtualna otrzymuje odrębną nakładkę dysku obejmującą partycje Androida (np. super
, userdata
, boot
). Wszelkie modyfikacje dysku gościa są umieszczane w nakładce dysku specyficznej dla gościa, co zapewnia każdej maszynie wirtualnej Cuttlefish widok partycji dysku typu „kopiuj przy zapisie”. W miarę jak każde urządzenie wirtualne zapisuje więcej danych na dysku, pliki nakładki na dysku hosta zwiększają swój rozmiar, ponieważ rejestrują różnicę między stanem pierwotnym a obecnym.
Pliki nakładki można zresetować, aby przywrócić dysk Cuttlefish do pierwotnego stanu. Ten proces jest nazywany przywracaniem ustawień fabrycznych.
Numery instancji
Urządzenia Cuttlefish tworzą i wykorzystują 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 Cuttlefish o numerze instancji 1
.
Po uruchomieniu 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.
Zmienianie maksymalnej liczby obsługiwanych instancji
Zasoby po stronie hosta, takie jak urządzenia sieciowe TAP, muszą być wstępnie przydzielone do maszyn wirtualnych Cuttlefish. Domyślnie pakiet Debiana cuttlefish-base udostępnia zasoby dla instancji o numerach od 1
do 10
.
Możesz to zmienić, modyfikując num_cvd_accounts
w /etc/default/cuttlefish-host-resources
i ponownie uruchamiając usługę cuttlefish-host-resources
za pomocą tego polecenia:
sudo systemctl restart cuttlefish-host-resources
Konfiguracje kanoniczne
Konfiguracje kanoniczne to konfiguracje urządzeń Cuttlefish w formacie JSON. Możesz tworzyć kanoniczne pliki JSON konfiguracji, aby opisywać konfigurację wielu urządzeń Cuttlefish w scenariuszu obejmującym wielu najemców.
Poniżej opisujemy format używany w kanonicznych plikach konfiguracji JSON (zastąp symbole zastępcze konfiguracjami urządzeń).
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
Poniżej znajdziesz przykładowy plik konfiguracji z 2 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_only_phone-userdebug"
}
},
{
"@import": "wearable",
"vm": {
"memory_mb": 8192,
"setupwizard_mode": "REQUIRED",
"cpus": 4
},
"disk": {
"default_build": "/home/username/devices/cf_gwear_x86-userdebug"
}
}
]
}
W tej tabeli opisano elementy użyte w przykładowej konfiguracji z 2 urządzeniami:
Żywioły | Typ | Opis |
---|---|---|
instances |
Tablica | Tablica obiektów JSON, z których każdy opisuje jedno urządzenie w grupie urządzeń z wieloma najemcami, które mają zostać uruchomione. |
@import |
Ciąg znaków | Wskazuje typ urządzenia i ustawia wartości domyślne 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 specyficznego dla instancji urządzenia. |
memory_mb |
Liczba | Ilość pamięci do przydzielenia konkretnej maszynie wirtualnej w megabajtach. |
setupwizard_mode |
Ciąg znaków | Określa, czy przy pierwszym uruchomieniu urządzenia ma być uruchamiany kreator konfiguracji urządzenia. Obsługiwane opcje trybu kreatora konfiguracji to DISABLED , OPTIONAL i REQUIRED . |
cpus |
Liczba | Liczba procesorów wirtualnych 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 |
Ciąg znaków | Ścieżka do folderu w lokalnym systemie plików zawierającego obraz wirtualnego urządzenia Cuttlefish. |
Więcej przykładów plików konfiguracyjnych rozpowszechnianych z cvd
znajdziesz w folderze cvd_test_configs
w drzewie kodu Cuttlefish.
Kontrolowanie instancji wielu najemców
W tej sekcji opisujemy, jak tworzyć i usuwać urządzenia w scenariuszu z wieloma najemcami. Możesz uruchomić kilka urządzeń Cuttlefish, korzystając z tych opcji:
- Konfiguracja kanoniczna: uruchamiaj dostosowane konfiguracje na każdym urządzeniu za pomocą pliku konfiguracji JSON opisującego listę instancji do uruchomienia.
- Pojedynczy obraz gościa: uruchamiaj wiele urządzeń z pojedynczego obrazu gościa.
Uruchamianie wielu maszyn wirtualnych z konfiguracji kanonicznej
Aby utworzyć wiele maszyn wirtualnych przy użyciu konfiguracji kanonicznej opisującej scenariusz wielodostępności, wywołaj polecenie cvd create
z prefiksem flagi --config_file=
w ten sposób:
cvd create --config_file=CONFIG_FILE
Poniżej znajdziesz przykład wywołania odwołującego się do kanonicznego pliku konfiguracyjnego o nazwie /etc/phone.json
.
cvd create --config_file=/etc/phone.json
Uruchamianie wielu maszyn wirtualnych na podstawie jednego obrazu gościa
Aby uruchomić wiele urządzeń Cuttlefish 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ą się od numeru instancji 1
.
cvd create --num_instances=N
Aby zmienić początkowy numer instancji, wykonaj jedną z tych czynności:
Dodaj flagę
--base_instance_num=N
z N jako pierwszym numerem instancji.cvd create --base_instance_num=N
Uruchom Cuttlefish z kontem użytkownika pasującym do
vsoc-NN
, gdzie NN to numer instancji podstawowej w formie dwucyfrowej. Aby na przykład uruchomić Cuttlefish z kontem użytkownikavsoc-01
, wpisz:cvd create --base_instance_num=1
Jak zatrzymać urządzenia
Aby zatrzymać wszystkie urządzenia uruchomione przez ostatnie wywołanie cvd create
, uruchom:
cvd stop
Aby ponownie uruchomić zatrzymane urządzenia, wpisz:
cvd start
Aby całkowicie usunąć urządzenie z systemu:
cvd remove