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

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 makineye, Android bölümlerini (super, userdata, boot gibi) kapsayan ayrı bir disk yer paylaşımı verilir. Misafir diskte yapılan tüm değişiklikler, misafire özel bir disk yer paylaşımına yerleştirilir. Böylece her Cuttlefish sanal makinesi, disk bölümlerinin yazma sırasında kopyasını görebilir. 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.

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

Örnek numaraları

Mürekkepbalığı cihazları, ana makinede örnek numaralarına bağlı kaynaklar oluşturur ve tüketir. Örneğin, 1 örnek numaralı Mürekkep Balığı cihazı için 6520 bağlantı noktasındaki bir TCP sunucu soketi aracılığıyla bir adb bağlantısı gösterilir. 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ştirme

TAP ağ cihazları gibi ana makine taraflı 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, /etc/default/cuttlefish-host-resources dosyasında num_cvd_accounts değiştirilerek ve aşağıdaki komutu çalıştırarak cuttlefish-host-resources hizmeti yeniden başlatılarak 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 temsil eder. Çok kiracılı bir senaryoda birden fazla 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 cihazı ve giyilebilir cihaz olmak üzere iki cihazın 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_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 cihaz içeren ö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 nesnesi dizisi.
@import Dize Cihaz türünü belirtir ve cihaz yapılandırması için varsayılan değerleri ayarlar. 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ığında 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ğini çalıştırmak için kullanılan dosya sistemi yapılarını bulmayla 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:

  • Kurallı 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 konuk görüntüsü: Tek bir konuk görüntüsünden birden fazla cihaz başlatın.

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

Çok kiracılı senaryoyu açıklayan bir standart yapılandırma kullanarak birden fazla sanal makine oluşturmak için cvd create komutunu --config_file= işaret ön ekiyle 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 konuk resmi kullanarak birden fazla Cuttlefish cihazı başlatmak için --num_instances=N işaretçisini kullanın. Burada N, başlatılacak cihazların sayısıdır. 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:

  • İlk örnek numarası olarak N ile --base_instance_num=N işaretini 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 haneli biçimdeki temel örnek numarasıdır. Örneğin, Cuttlefish'i vsoc-01 kullanıcı hesabıyla başlatmak için:

    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

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

cvd start

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

cvd remove