Cuttlefish 多租戶可讓您的主機透過一次啟動呼叫啟動多個虛擬來賓裝置。
這些多個 Cuttlefish 虛擬機器可以共享一些主機磁碟資源,從而允許您節省磁碟空間。每個虛擬機器都有一個覆蓋 Android 分割區的不同磁碟覆蓋(例如super
、 userdata
、 boot
)。對來賓磁碟的任何修改都會放置在特定於來賓的磁碟覆蓋中,從而為每個 Cuttlefish 虛擬機器提供其磁碟分割區的寫入時複製視圖。隨著每個虛擬設備將更多資料寫入其磁碟視圖,主機磁碟上的覆蓋檔案的大小會增加,因為它們會捕獲原始狀態和當前狀態之間的增量。
可以重置覆蓋檔案以使 Cuttlefish 磁碟返回其原始狀態。此過程稱為強力清洗。
實例編號
Cuttlefish 裝置在與其實例編號相關的主機上建立並消耗資源。例如, adb
連線透過實例號碼1
的 Cuttlefish 設備的連接埠6520
處的 TCP 伺服器套接字公開。啟動多個實例時,它會在連接埠6520
為第一個設備建立 TCP 伺服器套接字,為第二個設備在連接埠6521
建立 TCP 伺服器套接字,並為每個附加設備增加連接埠號碼。
修改最大支援實例數
必須為 Cuttlefish 虛擬機器預先分配主機端資源,例如 TAP 網路設備。預設情況下,基於 cuttlefish 的Debian 軟體包為實例編號1
到10
提供資源。
這可以透過修改/etc/default/cuttlefish-host-resources
中的num_cvd_accounts
並透過執行以下命令重新啟動cuttlefish-host-resources
服務來更改:
sudo systemctl restart cuttlefish-host-resources
規範配置
規範配置表示 JSON 格式的 Cuttlefish 設備的配置。您可以建立規範的配置 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 | 細繩 | 指示設備類型並設定設備配置的預設值。支援的設備類型為phone 和wearable 。 |
vm | 目的 | 指定適用於特定於設備實例的 VM 環境的屬性。 |
memory_mb | 數位 | 為特定虛擬機器分配的記憶體量(以兆位元組為單位)。 |
setupwizard_mode | 細繩 | 指定是否在使用者首次運作設備時執行設備設定精靈。設定精靈模式支援的選項有DISABLED 、 OPTIONAL 和REQUIRED 。 |
cpus | 數位 | 分配給VM 的虛擬CPU 數量。 |
disk | 目的 | 指定與定位用於執行單一 VM 實例的檔案系統項目相關的屬性。 |
default_build | 細繩 | 包含 Cuttlefish 虛擬設備映像的資料夾的本機檔案系統路徑。 |
有關使用cvd
分發的設定檔的更多範例,請參閱 Cuttlefish 程式碼樹中的cvd_test_configs
資料夾。
控制多租用戶實例
本節介紹如何在多租戶場景下啟動和停止設備。您可以使用以下選項啟動多個 Cuttlefish 裝置:
從規範配置啟動多個虛擬機
若要使用描述多租戶場景的規範配置啟動多個虛擬機,請使用--config_file=
標誌前綴呼叫cvd start
命令,如下所示:
cvd start --config_file=CONFIG_FILE
以下是引用名為/etc/phone.json
的規範設定檔的範例呼叫。
cvd start --config_file=/etc/phone.json
從單一來賓映像啟動多個虛擬機
若要使用單一來賓映像啟動多個 Cuttlefish 設備,請使用--num_instances= N
標誌,其中N是要啟動的設備數量。預設情況下,設備從實例編號1
開始。
cvd start --num_instances=N
若要變更起始實例編號,請執行下列其中一項操作:
新增
--base_instance_num= N
標誌,其中N作為第一個實例編號。cvd start --base_instance_num=N
使用與
vsoc- NN
相符的使用者帳戶啟動 Cuttlefish,其中NN是兩位數形式的基本實例編號。例如,要使用使用者帳戶vsoc- 01
啟動 Cuttlefish,請執行:cvd start --base_instance_num=1
如何停止設備
若要停止上次cvd start
呼叫啟動的所有設備,請執行:
cvd stop