Multi-tenancy Cuttlefish memungkinkan mesin host Anda meluncurkan beberapa perangkat tamu virtual dengan satu pemanggilan peluncuran.
Beberapa virtual machine 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 mendapatkan tampilan copy-on-write dari partisi disknya. Saat setiap perangkat virtual menulis lebih banyak
data ke tampilan disknya, ukuran file overlay di disk host akan bertambah
karena file tersebut merekam delta antara status asli dan status
saat ini.
File overlay dapat direset untuk mengembalikan disk Cuttlefish ke kondisi semula. Proses ini dikenal sebagai pembersihan.
Nomor instance
Perangkat Cuttlefish membuat dan menggunakan resource di host yang terikat dengan
nomor instance-nya. Misalnya, koneksi adb
diekspos melalui soket server TCP di port 6520
untuk perangkat Cuttlefish dengan nomor instance 1
.
Saat beberapa instance diluncurkan, instance akan membuat soket server TCP di port
6520
untuk perangkat pertama, 6521
untuk perangkat kedua, dan menaikkan
nomor port untuk setiap perangkat tambahan.
Mengubah jumlah maksimum instance yang didukung
Resource sisi host, seperti perangkat jaringan TAP, harus dialokasikan sebelumnya untuk
mesin virtual Cuttlefish. Secara default, paket Debian
cuttlefish-base
menyediakan resource untuk nomor instance 1
hingga 10
.
Hal ini dapat diubah dengan memodifikasi 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 merepresentasikan 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 menjelaskan 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 adalah 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 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 dijalankan pertama kali. 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
cvd_test_configs
di struktur kode Cuttlefish.
Mengontrol instance multi-tenant
Bagian ini menjelaskan cara membuat dan menghapus 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 menjelaskan daftar instance yang akan diluncurkan.
- Image tamu tunggal: Luncurkan beberapa perangkat dari satu image tamu.
Mulai beberapa VM dari konfigurasi kanonis
Untuk membuat beberapa VM menggunakan konfigurasi kanonis yang menjelaskan skenario multi-tenant, panggil perintah cvd create
dengan awalan flag --config_file=
sebagai berikut:
cvd create --config_file=CONFIG_FILE
Berikut adalah 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 tanda
--base_instance_num=N
dengan 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