Sotong: Multi-penyewa

Multi-tenancy Sotong memungkinkan mesin host Anda meluncurkan beberapa perangkat tamu virtual dengan satu pemanggilan peluncuran.

Beberapa mesin virtual Sotong ini dapat berbagi beberapa sumber daya disk host, sehingga Anda dapat menghemat ruang disk. Setiap mesin virtual mendapat hamparan disk berbeda yang mencakup partisi Android (seperti super , userdata , boot ). Setiap modifikasi pada disk tamu ditempatkan di hamparan disk khusus tamu, memberikan setiap mesin virtual Cuttlefish tampilan copy-on-write dari partisi disknya. Saat setiap perangkat virtual menulis lebih banyak data ke tampilan disknya, ukuran file overlay pada disk host bertambah karena mereka menangkap delta antara keadaan asli dan keadaan saat ini.

File overlay dapat diatur ulang untuk mengembalikan disk Sotong ke keadaan semula. Proses ini dikenal sebagai powerwashing .

Nomor contoh

Perangkat sotong membuat dan menggunakan sumber daya pada host yang terkait dengan nomor instannya . Misalnya, koneksi adb diekspos melalui soket server TCP di port 6520 untuk perangkat Cuttlefish dengan nomor instans 1 . Ketika beberapa instans diluncurkan, ini akan membuat soket server TCP pada port 6520 untuk perangkat pertama, 6521 untuk perangkat kedua, dan menambah nomor port untuk setiap perangkat tambahan.

Ubah jumlah maksimum instans yang didukung

Sumber daya sisi host, seperti perangkat jaringan TAP, harus dialokasikan terlebih dahulu untuk mesin virtual Cuttlefish. Secara default, paket Debian berbasis sotong menyediakan sumber daya misalnya nomor 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 kanonik

Konfigurasi kanonik mewakili konfigurasi perangkat Cuttlefish dalam format JSON. Anda dapat membuat file JSON konfigurasi kanonik untuk menjelaskan konfigurasi beberapa perangkat Cuttlefish dalam skenario multi-penyewa.

Berikut ini penjelasan format yang digunakan untuk file JSON konfigurasi kanonik (ganti placeholder dengan konfigurasi perangkat).

{
  "common": {
    CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
  },
  "instances": [
    {
      FIRST_DEVICE_CONFIGURATION
    },
    {
      NTH_DEVICE_CONFIGURATION
    }
  ]
}

Berikut ini adalah contoh file konfigurasi pengaturan dengan dua perangkat, perangkat telepon 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 Keterangan
instances Himpunan Array objek JSON, masing-masing menjelaskan satu perangkat dalam kelompok perangkat multi-penyewa yang akan diluncurkan.
@import Rangkaian Menunjukkan jenis perangkat dan menetapkan nilai default untuk konfigurasi perangkat. Jenis perangkat yang didukung adalah phone dan wearable .
vm Obyek Menentukan properti yang berlaku untuk lingkungan VM khusus untuk instance perangkat.
memory_mb Nomor Jumlah memori yang dialokasikan untuk VM tertentu dalam megabita.
setupwizard_mode Rangkaian Menentukan apakah wizard pengaturan perangkat dijalankan untuk pengguna saat perangkat pertama kali dijalankan. Opsi yang didukung untuk mode wizard pengaturan adalah DISABLED , OPTIONAL , dan REQUIRED .
cpus Nomor Jumlah CPU virtual yang dialokasikan ke VM.
disk Obyek Menentukan properti yang relevan untuk menemukan artefak sistem file yang digunakan untuk menjalankan satu instance VM.
default_build Rangkaian Jalur sistem file lokal ke folder yang berisi gambar perangkat virtual Sotong.

Untuk contoh lebih lanjut tentang file konfigurasi yang didistribusikan dengan cvd , lihat folder cvd_test_configs di pohon kode Cuttlefish.

Kontrol instans multi-penyewa

Bagian ini menjelaskan cara memulai dan menghentikan perangkat dalam skenario multi-penyewa. Anda dapat meluncurkan beberapa perangkat Sotong menggunakan opsi berikut:

  • Konfigurasi kanonik : Luncurkan konfigurasi khusus untuk setiap perangkat menggunakan file konfigurasi JSON yang menjelaskan daftar instance yang akan diluncurkan.
  • Gambar tamu tunggal : Meluncurkan beberapa perangkat dari satu gambar tamu.

Mulai beberapa VM dari konfigurasi kanonik

Untuk memulai beberapa VM menggunakan konfigurasi kanonik yang menjelaskan skenario multi-penyewa, aktifkan perintah cvd start dengan awalan flag --config_file= sebagai berikut:

cvd start --config_file=CONFIG_FILE

Berikut ini adalah contoh pemanggilan yang merujuk pada file konfigurasi kanonik bernama /etc/phone.json .

cvd start --config_file=/etc/phone.json

Mulai beberapa VM dari satu gambar tamu

Untuk meluncurkan beberapa perangkat Sotong menggunakan satu gambar tamu, gunakan tanda --num_instances= N , dengan N adalah jumlah perangkat yang akan diluncurkan. Secara default, perangkat dimulai dari nomor instans 1 .

cvd start --num_instances=N

Untuk mengubah nomor instans awal, lakukan salah satu hal berikut:

  • Tambahkan tanda --base_instance_num= N dengan N sebagai nomor instance pertama.

    cvd start --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 Sotong dengan akun pengguna vsoc- 01 , jalankan:

    cvd start --base_instance_num=1
    

Cara menghentikan perangkat

Untuk menghentikan semua perangkat yang diluncurkan oleh pemanggilan cvd start terakhir, jalankan:

cvd stop