Tryb wielu najemców w Cuttlefish umożliwia uruchomienie na komputerze hosta wielu wirtualnych urządzeń gościa przy jednym wywołaniu uruchomienia.
Te liczne 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 przeznaczonej dla gości, dzięki czemu każda maszyna wirtualna Cuttlefish ma widok „kopiowania i zapisywania” partycji dysku. W miarę jak każde urządzenie wirtualne zapisuje więcej danych w swoim widoku dysku, pliki nakładki na dysku hosta zwiększają swój rozmiar, ponieważ przechwytują różnicę między stanem oryginalnym a bieżącym.
Pliki nakładki można zresetować, aby przywrócić dysk Cuttlefish do pierwotnego stanu. Ten proces nazywa się czyszczeniem ciśnieniowym.
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
urządzenia Cuttlefish o numerze instancji 1
.
W przypadku uruchomienia wielu instancji tworzone jest gniazdo serwera TCP na porcie 6520
dla pierwszego urządzenia, 6521
dla drugiego i zwiększa numer portu dla każdego dodatkowego urządzenia.
Zmień maksymalną liczbę obsługiwanych instancji
Zasoby po stronie hosta, takie jak urządzenia sieciowe TAP, muszą być wstępnie przydzielone maszynom wirtualnym typu Cuttlefish. Domyślnie pakiet Debian cuttlefish-base zapewnia zasoby instancji o numerach od 1
do 10
.
Można to zmienić, modyfikując plik 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 reprezentują konfigurację urządzeń Cuttlefish w formacie JSON. Możesz utworzyć pliki JSON z konfiguracją kanoniczną, aby opisać konfigurację wielu urządzeń Cuttlefish w scenariuszu z wieloma najemcami.
Poniżej opisujemy format plików JSON z konfiguracją kanoniczną (zastąp obiekty zastępcze konfiguracjami urządzeń).
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
Oto przykładowy plik konfiguracji konfiguracji z 2 urządzeniami: telefonem i urządzeniem noszonego:
{
"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"
}
}
]
}
Ta tabela opisuje elementy używane w przykładowej konfiguracji z 2 urządzeniami:
Żywioły | Typ | Opis |
---|---|---|
instances |
Tablica | Tablica obiektów JSON opisujących pojedyncze urządzenie w grupie urządzeń, które mają zostać uruchomione, należące do wielu najemców. |
@import |
Ciąg znaków | Wskazuje typ urządzenia i ustala wartości domyślne konfiguracji urządzenia. Obsługiwane typy urządzeń to phone i wearable . |
vm |
Obiekt | Określa właściwości dotyczące środowiska maszyny wirtualnej specyficznej dla instancji urządzenia. |
memory_mb |
Liczba | Ilość pamięci do przydzielenia określonej maszynie wirtualnej w megabajtach. |
setupwizard_mode |
Ciąg znaków | Określa, czy kreator konfiguracji urządzenia ma być uruchomiony u użytkownika przy pierwszym uruchomieniu urządzenia. Obsługiwane opcje w trybie 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 istotne przy lokalizowaniu artefaktów systemu plików używanych do uruchamiania pojedynczej maszyny wirtualnej. |
default_build |
Ciąg znaków | Ścieżka lokalnego systemu plików do folderu zawierającego obraz urządzenia wirtualnego Cuttlefish. |
Więcej przykładów plików konfiguracji rozpowszechnianych za pomocą cvd
znajdziesz w folderze cvd_test_configs
w drzewie kodu Cuttlefish.
Zarządzanie instancjami dla wielu dzierżawców
W tej sekcji dowiesz się, jak tworzyć i niszczyć urządzenia w środowisku wielu najemców. Możesz uruchomić wiele urządzeń Cuttlefish, korzystając z tych opcji:
- Konfiguracja kanoniczna: uruchom niestandardowe konfiguracje dla każdego urządzenia za pomocą pliku konfiguracji JSON zawierającego opis listy instancji do uruchomienia.
- Pojedynczy obraz gościa: możesz uruchomić wiele urządzeń z jednego obrazu gościa.
Uruchamianie wielu maszyn wirtualnych z konfiguracji kanonicznej
Aby utworzyć wiele maszyn wirtualnych przy użyciu konfiguracji kanonicznej, która opisuje scenariusz z wieloma najemcami, wywołaj polecenie cvd create
z prefiksem flagi --config_file=
w następujący 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 z 1 obrazu gościa
Aby uruchomić kilka urządzeń Cuttlefish za pomocą 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 wartością 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 podstawowy numer instancji w postaci dwucyfrowej. Aby na przykład uruchomić Cuttlefish na koncie użytkownikavsoc-01
, wykonaj tę komendę: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, wykonaj:
cvd start
Aby całkowicie usunąć urządzenie z systemu:
cvd remove