Mürekkep Balığı: Çok kiracılı yapı

Cuttlefish çoklu kiracı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 çoklu Cuttlefish sanal makineleri, ana makine diski kaynaklarının bir kısmını paylaşabilir ve böylece disk alanından tasarruf edebilirsiniz. Her sanal makine, Android bölümlerini (ör. super, userdata, boot) kapsayan ayrı bir disk katmanına sahiptir. Konuk diskinde yapılan tüm değişiklikler konuğa özel bir disk katmanına yerleştirilir. Böylece her Cuttlefish sanal makinesi, disk bölümlerinin kopyalama üzerine yazma görünümüne sahip olur. Her sanal cihaz, diskin görünümüne daha fazla veri yazdıkça ana makine diskindeki yer paylaşımı dosyalarının boyutu artar. Bunun nedeni, bu dosyaların orijinal durum ile mevcut durum arasındaki farkı yakalamasıdır.

Cuttlefish diskini orijinal durumuna döndürmek için yer paylaşımı dosyaları sıfırlanabilir. Bu işlem güç yıkama olarak bilinir.

Örnek numaraları

Cuttlefish cihazları, ana makinede örnek numaralarıyla ilişkili kaynaklar oluşturur ve kullanır. Örneğin, adb bağlantısı, 1 örnek numaralı Cuttlefish cihazı için 6520 bağlantı noktasındaki bir TCP sunucu soketi üzerinden kullanıma sunulur. Birden fazla örnek başlatıldığında, ilk cihaz için bağlantı noktası 6520, ikinci cihaz için 6521 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ştirme

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

Bu ayar, num_cvd_accounts değerini /etc/default/cuttlefish-host-resources içinde değiştirerek 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, Cuttlefish cihazlarının yapılandırmasını JSON biçiminde gösterir. Çok kiracılı bir senaryoda birden fazla Cuttlefish cihazının yapılandırmasını açıklamak için standart yapılandırma JSON dosyaları oluşturabilirsiniz.

Aşağıda, kanonik 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, iki cihazın (telefon ve giyilebilir cihaz) bulunduğu 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_only_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 cihazla örnek yapılandırmada kullanılan öğeler açıklanmaktadır:

Element Tür Açıklama
instances Dizi Her biri başlatılacak çok kiracılı cihaz grubundaki tek bir cihazı açıklayan JSON nesneleri dizisi.
@import Dize Cihaz türünü belirtir ve cihaz yapılandırması için varsayılan değerleri ayarlar. Desteklenen cihaz türleri phone ve wearable'dir.
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 kurulum sihirbazının, cihazın ilk çalıştırılmasında kullanıcı için çalıştırılıp çalıştırılmayacağını belirtir. Kurulum sihirbazı modunda desteklenen seçenekler şunlardır: DISABLED, OPTIONAL ve REQUIRED.
cpus Sayı Sanal makineye ayrılan sanal CPU sayısı.
disk Nesne Tek bir sanal makine örneğini çalıştırmak için kullanılan dosya sistemi yapıtlarını bulmayla ilgili özellikleri belirtir.
default_build Dize Cuttlefish sanal cihaz görüntüsü içeren bir klasörün yerel dosya sistemi yolu.

cvd ile dağıtılan yapılandırma dosyaları hakkında 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ı senaryoda cihazların nasıl oluşturulacağı ve yok edileceği açıklanmaktadır. Aşağıdaki seçenekleri kullanarak birden fazla Cuttlefish cihazı başlatabilirsiniz:

  • Canonical 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 resminden birden fazla cihaz başlatın.

Canonical yapılandırmasından birden fazla sanal makine başlatma

Çok kiracılı senaryoyu açıklayan kanonik 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ı bir kanonik yapılandırma dosyasına referans veren örnek bir çağırma işlemi verilmiştir.

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

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

Tek bir konuk resmi kullanarak birden fazla Cuttlefish cihazı başlatmak için --num_instances=N işaretini kullanın. Burada N, başlatılacak cihazların sayısıdır. Varsayılan olarak cihazlar, örnek numarası 1 ile başlar.

cvd create --num_instances=N

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

  • --base_instance_num=N işaretini N ile birlikte 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 bir kullanıcı hesabıyla vsoc-01 başlatmak için şunu çalıştırın:

    cvd create --base_instance_num=1
    

Cihazları durdurma

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

cvd stop

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

cvd start

Bir cihazı sistemden tamamen kaldırmak için şu komutu çalıştırın:

cvd remove