Mürekkep balığı: Çok kiracılı

Ahtapot çok kiralılık özelliği, ana makinenizin tek bir başlatma çağrısıyla birden fazla sanal konuk cihaz başlatmasına olanak tanır.

Bu birden fazla Cuttlefish sanal makinesi, ana makine disk kaynaklarının bir kısmını paylaşarak disk alanından tasarruf etmenizi sağlar. Her sanal makine, Android bölümlerini (ör. super, userdata, boot) kapsayan ayrı bir disk yer paylaşımı alır. Konuk diskinde yapılan değişiklikler, konuklara özel bir disk yer paylaşımına yerleştirilir. Böylece her Cuttlefish sanal makinesi, disk bölümlerinin yazma sırasında kopyalanıp kopyalanmasını sağlar. Her sanal cihaz, disk görünümüne daha fazla veri yazdıkça ana makine diskindeki yer paylaşımı dosyaları, orijinal durum ile mevcut durum arasındaki farkı yakaladıkları için boyut olarak büyür.

Bindirme dosyaları, Cuttlefish diskini orijinal durumuna döndürmek için sıfırlanabilir. Bu işleme güçlü temizleme denir.

Örnek numaraları

Mürekkep balığı cihazları, ana makinede örnek numaralarına bağlı kaynaklar oluşturur ve bunları tüketir. Örneğin, Cuttlefish cihazı için 6520 bağlantı noktasındaki 1 örnek numarasındaki bir TCP sunucu soketi aracılığıyla bir adb bağlantısı açığa çıkarılmıştır. Birden fazla örnek başlatıldığında, ilk cihaz için 6520, ikinci cihaz için 6521 numaralı bağlantı noktasında bir TCP sunucu soketi oluşturur ve her ek cihaz için bağlantı noktası numarasını artırır.

Desteklenen maksimum örnek sayısını değiştirin

TAP ağ cihazları gibi ana makine tarafı kaynaklar, Cuttlefish sanal makineleri için önceden tahsis edilmelidir. Varsayılan olarak cuttlefish-base Debian paketi, 1 ile 10 arasındaki örnek numaraları için kaynak sağlar.

Bu, /etc/default/cuttlefish-host-resources içinde num_cvd_accounts değiştirilerek ve aşağıdaki komutu çalıştırarak cuttlefish-host-resources hizmetini yeniden başlatarak değiştirilebilir:

sudo systemctl restart cuttlefish-host-resources

Standart yapılandırmalar

Standart yapılandırmalar, Mürekkep balığı cihazlarının yapılandırmasını JSON biçiminde gösterir. Çok kiracılı bir senaryoda birden çok Cuttlefish cihazının yapılandırmasını tanımlamak için standart yapılandırma JSON dosyaları oluşturabilirsiniz.

Aşağıda, standart yapılandırma JSON dosyaları için kullanılan biçim açıklanmaktadır (yer tutucuları cihaz yapılandırmalarıyla değiştirin).

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

Aşağıda, bir telefon ve giyilebilir cihaz olmak üzere iki cihazın kullanıldığı bir kurulumun örnek yapılandırma dosyası verilmiştir:

{
  "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"
      }
    }
  ]
}

Bu tabloda, iki cihazda örnek yapılandırmada kullanılan öğeler açıklanmaktadır:

Element Tür Açıklama
instances Dizi Her biri, kullanıma sunulacak çok kiracılı cihaz grubundaki tek bir cihazı tanımlayan JSON nesneleri dizisi.
@import Dize Cihaz türünü belirtir ve cihaz yapılandırması için varsayılan değerleri belirler. Desteklenen cihaz türleri şunlardır: phone ve wearable.
vm Nesne Cihaz örneğine özgü sanal makine ortamı için geçerli olan özellikleri belirtir.
memory_mb Sayı Belirli bir sanal makine için ayrılacak bellek miktarı (megabayt cinsinden).
setupwizard_mode Dize Cihazın ilk çalıştırıldığı sırada cihaz kurulum sihirbazının kullanıcı için çalıştırılıp çalıştırılmayacağını belirtir. Kurulum sihirbazı modu için desteklenen seçenekler: DISABLED, OPTIONAL ve REQUIRED.
cpus Sayı Sanal makineye ayrılan sanal CPU sayısı.
disk Nesne Tek bir sanal makine örneği çalıştırmak için kullanılan dosya sistemi yapılarının bulunmasıyla ilgili özellikleri belirtir.
default_build Dize Cuttlefish sanal cihaz resmi içeren bir klasörün yerel dosya sistemi yolu.

cvd ile dağıtılan yapılandırma dosyalarına dair daha fazla örnek için Cuttlefish kod ağacındaki cvd_test_configs klasörüne bakın.

Çok kiracılı örnekleri kontrol etme

Bu bölümde, çok kiracılı bir senaryoda cihazların nasıl oluşturulacağı ve kaldırılacağı açıklanmaktadır. Aşağıdaki seçenekleri kullanarak birden fazla Cuttlefish cihazı başlatabilirsiniz:

  • Standart yapılandırma: Başlatılacak örneklerin listesini açıklayan bir JSON yapılandırma dosyası kullanarak her cihaz için özelleştirilmiş yapılandırmaları başlatın.
  • Tek misafir resmi: Tek bir misafir görüntüsünden birden fazla cihazı başlatabilirsiniz.

Standart yapılandırmadan birden fazla sanal makine başlatma

Çok kiracılı senaryoyu açıklayan standart bir yapılandırma kullanarak birden fazla sanal makine oluşturmak için cvd create komutunu --config_file= işaret önekiyle aşağıdaki gibi çağırın:

cvd create --config_file=CONFIG_FILE

Aşağıda, /etc/phone.json adlı standart bir yapılandırma dosyasına atıfta bulunan örnek bir çağrı gösterilmektedir.

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

Tek bir konuk görüntüsünden birden fazla sanal makine başlatma

Tek bir misafir resmi kullanarak birden çok Mürekkep balığı cihazını başlatmak için --num_instances=N işaretini kullanın. Burada N, başlatılacak cihaz sayısını ifade eder. Cihazlar varsayılan olarak 1 örnek numarasından başlar.

cvd create --num_instances=N

Başlangıç örneği numarasını değiştirmek için aşağıdakilerden birini yapın:

  • N ile --base_instance_num=N işaretini ilk örnek numarası olarak ekleyin.

    cvd create --base_instance_num=N
    
  • Cuttlefish'i vsoc-NN ile eşleşen bir kullanıcı hesabıyla başlatın. Burada NN iki basamaklı temel örnek numarasıdır. Örneğin, Cuttlefish'i vsoc-01 kullanıcı hesabıyla başlatmak için şu komutu çalıştırın:

    cvd create --base_instance_num=1
    

Cihazları durdurma

Son cvd create çağrısı tarafından başlatılan tüm cihazları durdurmak için şu komutu çalıştırın:

cvd stop

Durdurulmuş cihazları yeniden başlatmak için şu komutu çalıştırın:

cvd start

Bir cihazı sistemden tamamen kaldırmak için:

cvd remove