Multi-tenancy Cuttlefish memungkinkan mesin host Anda meluncurkan beberapa perangkat tamu virtual dengan satu pemanggilan peluncuran.
Beberapa mesin virtual Cuttlefish ini dapat berbagi beberapa resource disk host, sehingga Anda dapat menghemat ruang disk. Setiap mesin virtual mendapatkan overlay disk yang berbeda yang mencakup partisi Android (seperti super, userdata, boot). Setiap modifikasi pada disk tamu ditempatkan dalam overlay disk khusus tamu, sehingga setiap mesin virtual Cuttlefish memiliki tampilan salin-saat-tulis partisi disknya. Saat setiap perangkat virtual menulis lebih banyak data ke tampilan disknya, ukuran file overlay pada disk host akan bertambah karena file tersebut menangkap delta antara status asli dan status saat ini.
File overlay dapat direset untuk mengembalikan disk Cuttlefish ke status aslinya. Proses ini dikenal sebagai powerwash.
Nomor instance
Perangkat Cuttlefish membuat dan menggunakan resource di host yang terikat dengan nomor instance. Misalnya, koneksi adb diekspos melalui soket server TCP di port 6520 untuk perangkat Cuttlefish dengan nomor instance 1.
Saat beberapa instance diluncurkan, soket server TCP akan dibuat di port 6520 untuk perangkat pertama, 6521 untuk perangkat kedua, dan nomor port akan bertambah untuk setiap perangkat tambahan.
Mengubah jumlah maksimum instance yang didukung
Resource sisi host, seperti perangkat jaringan TAP, harus dialokasikan terlebih dahulu untuk mesin virtual Cuttlefish. Secara default, paket Debian
cuttlefish-base
menyediakan resource untuk nomor instance 1 hingga 10.
Hal ini dapat diubah dengan mengubah num_cvd_accounts di
/etc/default/cuttlefish-host-resources dan memulai ulang layanan
cuttlefish-host-resources dengan menjalankan perintah berikut:
sudo systemctl restart cuttlefish-host-resources
Konfigurasi kanonis
Konfigurasi kanonis mewakili konfigurasi untuk perangkat Cuttlefish dalam format JSON. Anda dapat membuat file JSON konfigurasi kanonis untuk mendeskripsikan konfigurasi beberapa perangkat Cuttlefish dalam skenario multi-tenant.
Berikut ini deskripsi format yang digunakan untuk file JSON konfigurasi kanonis (ganti placeholder dengan konfigurasi perangkat).
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
Berikut ini contoh file konfigurasi penyiapan dengan dua perangkat, perangkat ponsel dan perangkat wearable:
{
"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"
}
}
]
}
Tabel ini menjelaskan elemen yang digunakan dalam contoh konfigurasi dengan dua perangkat:
| Elemen | Jenis | Deskripsi |
|---|---|---|
instances |
Array | Array objek JSON, yang masing-masing mendeskripsikan satu perangkat dalam grup perangkat multi-tenant yang akan diluncurkan. |
@import |
String | Menunjukkan jenis perangkat dan menetapkan nilai default untuk konfigurasi perangkat. Jenis perangkat yang didukung adalah
phone dan wearable. |
vm |
Objek | Menentukan properti yang berlaku untuk lingkungan VM yang khusus untuk instance perangkat. |
memory_mb |
Angka | Jumlah memori yang akan dialokasikan untuk VM tertentu dalam megabyte. |
setupwizard_mode |
String | Menentukan apakah wizard penyiapan perangkat dijalankan untuk pengguna saat perangkat pertama kali
dijalankan. Opsi yang didukung untuk mode wizard penyiapan adalah
DISABLED, OPTIONAL, dan
REQUIRED. |
cpus |
Angka | Jumlah CPU virtual yang dialokasikan ke VM. |
disk |
Objek | Menentukan properti yang relevan untuk menemukan artefak sistem file yang digunakan untuk menjalankan satu instance VM. |
default_build |
String | Jalur sistem file lokal ke folder yang berisi image perangkat virtual Cuttlefish. |
Untuk contoh file konfigurasi lainnya yang didistribusikan dengan cvd, lihat folder di pohon kode Cuttlefish.cvd_test_configs
Mengontrol instance multi-tenant
Bagian ini menjelaskan cara membuat dan menghancurkan perangkat dalam skenario multi-tenant. Anda dapat meluncurkan beberapa perangkat Cuttlefish menggunakan opsi berikut:
- Konfigurasi kanonis: Luncurkan konfigurasi yang disesuaikan untuk setiap perangkat menggunakan file konfigurasi JSON yang mendeskripsikan daftar instance yang akan diluncurkan.
- Image tamu tunggal: Luncurkan beberapa perangkat dari satu image tamu.
Memulai beberapa VM dari konfigurasi kanonis
Untuk membuat beberapa VM menggunakan konfigurasi kanonis yang mendeskripsikan skenario multi-tenant, panggil perintah cvd create dengan awalan flag --config_file= sebagai berikut:
cvd create --config_file=CONFIG_FILE
Berikut ini contoh pemanggilan yang mereferensikan file konfigurasi kanonis bernama /etc/phone.json.
cvd create --config_file=/etc/phone.json
Memulai beberapa VM dari satu image tamu
Untuk meluncurkan beberapa perangkat Cuttlefish menggunakan satu image tamu, gunakan flag
--num_instances=N, dengan N adalah jumlah
perangkat yang akan diluncurkan. Secara default, perangkat dimulai dari nomor instance 1.
cvd create --num_instances=N
Untuk mengubah nomor instance awal, lakukan salah satu hal berikut:
Tambahkan flag
--base_instance_num=Ndengan N sebagai nomor instance pertama.cvd create --base_instance_num=N
Luncurkan Cuttlefish dengan akun pengguna yang cocok dengan
vsoc-NN, dengan NN adalah nomor instance dasar dalam bentuk dua digit. Misalnya, untuk meluncurkan Cuttlefish dengan akun penggunavsoc-01, jalankan:cvd create --base_instance_num=1
Cara menghentikan perangkat
Untuk menghentikan semua perangkat yang diluncurkan oleh pemanggilan cvd create terakhir, jalankan:
cvd stop
Untuk memulai ulang perangkat yang telah dihentikan, jalankan:
cvd start
Untuk menghapus perangkat sepenuhnya dari sistem, jalankan:
cvd remove