Multi-tenancy Cuttlefish memungkinkan mesin host Anda meluncurkan beberapa perangkat tamu virtual dengan satu pemanggilan peluncuran.
Beberapa virtual machine Cuttlefish ini dapat berbagi sebagian resource disk
host, sehingga Anda dapat menghemat ruang disk. Setiap virtual machine mendapatkan
overlay disk yang berbeda yang mencakup partisi Android (seperti super
,
userdata
, boot
). Setiap modifikasi pada disk tamu ditempatkan di
overlay disk khusus tamu, sehingga setiap virtual machine 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 meningkat
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 powerwashing.
Nomor instance
Perangkat cumi-cumi membuat dan menggunakan resource pada host yang terkait dengan
nomor instance-nya. Misalnya, koneksi adb
diekspos melalui soket server TCP
di port 6520
untuk perangkat Cuttlefish dengan nomor instance 1
.
Jika beberapa instance diluncurkan, instance akan membuat soket server TCP di port
6520
untuk perangkat pertama, 6521
untuk perangkat kedua, dan menambahkan
nomor port untuk setiap perangkat tambahan.
Mengubah jumlah maksimum instance yang didukung
Resource sisi host, seperti perangkat jaringan TAP, harus dialokasikan sebelumnya untuk
virtual machine 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 penjelasan format yang digunakan untuk file JSON konfigurasi kanonis (menggantikan 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_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 (Arrays) | 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 bagi pengguna saat pertama kali perangkat dijalankan. Opsi yang didukung untuk mode wizard penyiapan adalah
DISABLED , OPTIONAL , dan
REQUIRED . |
cpus |
Angka | Jumlah CPU virtual yang dialokasikan untuk 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 hierarki kode Cuttlefish.
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: Meluncurkan konfigurasi yang disesuaikan untuk setiap perangkat menggunakan file konfigurasi JSON yang menjelaskan daftar instance yang akan diluncurkan.
- Gambar tamu tunggal: Meluncurkan beberapa perangkat dari satu image tamu.
Memulai 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 merujuk pada 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 gambar tamu, gunakan
tanda --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 langkah berikut:
Tambahkan flag
--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 sepenuhnya menghapus perangkat dari sistem run:
cvd remove