Wielodostępność w Cuttlefish umożliwia maszynie hosta uruchamianie wielu wirtualnych urządzeń gościa za pomocą jednego wywołania.
Te liczne maszyny wirtualne Cuttlefish mogą współdzielić niektóre zasoby dysku hosta, co pozwala oszczędzać miejsce na dysku. Każda maszyna wirtualna ma oddzielną nakładkę dysku, która obejmuje partycje Androida (np. super
, userdata
, boot
). Wszelkie modyfikacje dysku gościa są umieszczane w nakładce dysku specyficznej dla gościa, co daje każdej maszynie wirtualnej Cuttlefish widok z opcją kopiowania na zapisywanie swoich partycji dysku. W miarę jak każde urządzenie wirtualne zapisuje więcej danych na swoim widoku dysku, rozmiar plików nakładki na dysku hosta zwiększa się, ponieważ odzwierciedlają one różnicę między pierwotnym stanem a bieżącym stanem.
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 korzystają z zasobów na hoście powiązanym z ich numerem instancji. Na przykład połączenie adb
jest dostępne przez gniazdo serwera TCP na porcie 6520
na urządzeniu Cuttlefish o numerze instancji 1
.
Gdy uruchamiane są kolejne instancje, tworzy się gniazdo serwera TCP na porcie 6520
dla pierwszego urządzenia, 6521
dla drugiego urządzenia itd., a numer portu zwiększa się o jeden dla każdego kolejnego urządzenia.
Zmiana maksymalnej liczby obsługiwanych instancji
Zasoby po stronie hosta, takie jak urządzenia sieciowe TAP, muszą być wstępnie przydzielone maszynom wirtualnym Cutletfish. Domyślnie pakiet Debiana cuttlefish-base udostępnia zasoby dla instancji o numerach od 1
do 10
.
Można to zmienić, zmieniając wartość num_cvd_accounts
w pliku /etc/default/cuttlefish-host-resources
i uruchamiając ponownie usługę cuttlefish-host-resources
, wykonując to polecenie:
sudo systemctl restart cuttlefish-host-resources
Konfiguracje kanoniczne
Konfiguracje kanoniczne reprezentują konfigurację urządzeń Cuttlefish w formacie JSON. Możesz tworzyć pliki kanonicznej konfiguracji w formacie JSON, aby opisywać konfigurację wielu urządzeń Cuttlefish w sytuacji wielu dzierżawców.
Poniżej opisujemy format używany w pliku konfiguracji kanonicznej w formacie JSON (zastąp nawiasy kwadratowe konfiguracją urządzenia).
{
"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, z których każdy opisuje pojedyncze urządzenie w grupie urządzeń wielu dzierżawców, które ma zostać uruchomione. |
@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 środowiska maszyny wirtualnej dotyczące konkretnej 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 jest uruchamiany dla 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 przypisanych do maszyny wirtualnej. |
disk |
Obiekt | Określa właściwości istotne dla znajdowania 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 urządzenia wirtualnego Cuttlefish. |
Więcej przykładów plików konfiguracji rozpowszechnianych z cvd
znajdziesz w folderze cvd_test_configs
w drzewie kodu Cuttlefish.
Zarządzanie instancjami wielodzierżawnymi
W tej sekcji opisaliśmy, jak tworzyć i usuwać urządzenia w sytuacji wielu dzierżawców. Możesz uruchomić wiele urządzeń Cuttlefish, korzystając z tych opcji:
- Konfigurowanie kanoniczne: uruchamia niestandardowe konfiguracje dla każdego urządzenia za pomocą pliku konfiguracji JSON opisującego listę uruchamianych instancji.
- 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 opisującej scenariusz wielu dzierżawców, wywołaj polecenie cvd create
z prefiksem flagi --config_file=
w ten sposób:
cvd create --config_file=CONFIG_FILE
Poniżej znajduje się 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ć numer instancji początkowej, 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 odpowiadającym
vsoc-NN
, gdzie NN to dwucyfrowy numer instancji podstawowej. Aby na przykład uruchomić Cuttlefish z kontem 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