Cuttlefish:多租戶架構

Cuttlefish 多用戶群可讓您在主機機器上 有單次啟動叫用的訪客裝置。

這些多部 Cuttlefish 虛擬機器 可以共用部分主機磁碟 讓您節省磁碟空間。每個虛擬機器 重疊的磁碟重疊,涵蓋 Android 分區 (例如 superuserdataboot)。對訪客磁碟所做的任何修改都會放在 訪客專屬的磁碟重疊,為每個 Cuttlefish 虛擬機器 磁碟分區的寫入時複製檢視。隨著虛擬裝置寫入的次數增加 將硬碟上的重疊檔案向上提升 因為您可藉此擷取原始狀態與 目前狀態

您可以重設重疊影像檔案,將 Cuttlefish 磁碟傳回 原始狀態這項程序稱為 執行 Powerwash

執行個體編號

Cuttlefish 裝置會在與其相連結的主機上建立及耗用資源 執行個體編號。舉例來說,adb 連線是透過 TCP 公開 執行個體號碼為 1 的 Cuttlefish 裝置的通訊端,位於通訊埠 6520。 啟動多個執行個體時,會在通訊埠建立 TCP 伺服器通訊端 第 1 部裝置為 6520,第二部裝置為 6521,並遞增 通訊埠號碼。

修改支援的執行個體數量上限

主機端資源 (例如 TAP 網路裝置) 必須預先分配至 Cuttlefish 虛擬機器。根據預設, cuttlefish-base Debian 套件 透過 10 佈建執行個體編號 1 的資源。

你可以透過在以下位置修改 num_cvd_accounts: 請/etc/default/cuttlefish-host-resources,並重新啟動 來下載 cuttlefish-host-resources 服務:

sudo systemctl restart cuttlefish-host-resources

標準設定

標準化配置代表 Cuttlefish 裝置的設定 匯出成 JSON 格式的檔案您可以建立標準設定 JSON 檔案 說明多用戶群中多個 Cuttlefish 裝置的設定 情境。

以下說明標準設定 JSON 檔案使用的格式 (將預留位置替換為裝置設定)。

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

以下是包含兩部裝置的設定設定檔範例: 使用手機和穿戴式裝置:

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

此表格將說明範例設定中使用的元素,其中包含兩個 裝置:

元素 類型 說明
instances 陣列 JSON 物件陣列,每個物件都說明 要啟動的多用戶群裝置群組。
@import 字串 指出裝置類型,並設定裝置的預設值 此外還會從 0 自動調整資源配置 您完全不必調整資源調度設定支援的裝置類型為 《phone》和《wearable》。
vm 物件 指定適用於以下 Pod 特定 VM 環境的屬性: 裝置執行個體。
memory_mb 數字 為特定 VM 分配的記憶體量 (以 MB 為單位)。
setupwizard_mode 字串 指定首次為使用者執行裝置設定精靈 裝置本身的運作設定精靈模式支援的選項如下 DISABLEDOPTIONALREQUIRED
cpus 數字 分配給 VM 的虛擬 CPU 數量。
disk 物件 指定與尋找所用檔案系統成果相關的屬性 可用於執行單一 VM 執行個體
default_build 字串 本機檔案系統路徑,指向包含 Cuttlefish 虛擬裝置的資料夾 圖片。

如需更多使用 cvd 發布設定檔的範例,請參閱 cvd_test_configs 位於 Cuttlefish 程式碼樹的資料夾中

控管多用戶群執行個體

本節說明如何在多用戶群的情況下啟動及停止裝置。 您可以使用下列選項啟動多個 Cuttlefish 裝置:

  • 「Canonical config」(標準設定):啟動自訂項目 JSON 設定檔 以便列出要啟動的執行個體
  • 單一訪客圖片:啟動多個 以及單一訪客映像檔

從標準設定啟動多個 VM

如要使用用於啟動多個 VM 的標準設定 多用戶群情境,請透過 --config_file= 叫用 cvd start 指令 標記前置字串,如下所示:

cvd start --config_file=CONFIG_FILE

以下是參照標準設定檔的叫用範例 /etc/phone.json

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

透過單一訪客映像檔啟動多個 VM

如要使用單一訪客圖片啟動多台 Cuttlefish 裝置,請使用 --num_instances=N 標記,其中 N 是數字 才能啟動應用程式根據預設,裝置會從執行個體編號 1 開始。

cvd start --num_instances=N

如要變更啟動執行個體的編號,請執行下列其中一項操作:

  • 使用下列指令新增 --base_instance_num=N 標記: N 做為第一個執行個體編號。

    cvd start --base_instance_num=N
    
  • 透過使用者帳戶比對功能啟動 Cuttlefish vsoc-NN,其中 NN 是基礎執行個體 以兩位數表示。例如透過使用者啟動 Cuttlefish 帳戶 vsoc-01,執行:

    cvd start --base_instance_num=1
    

如何停止裝置

如要停止上次 cvd start 叫用啟動的所有裝置,請執行:

cvd stop