Cuttlefish 多租戶功能可讓主機透過單一啟動呼叫,啟動多個虛擬來賓裝置。
這些多個 Cuttlefish 虛擬機器可共用部分主機磁碟資源,讓您節省磁碟空間。每部虛擬機器都會取得獨特的磁碟疊加層,涵蓋 Android 分區 (例如 super
、userdata
、boot
)。對來賓磁碟的任何修改都會放入特定來賓的磁碟疊加層,讓每部 Cuttlefish 虛擬機器都能看到其磁碟分區的「寫入時複製」檢視畫面。隨著每個虛擬裝置將更多資料寫入其磁碟檢視畫面,主機磁碟上的覆蓋檔案大小也會增加,因為這些檔案會擷取原始狀態和目前狀態之間的差異。
重設覆蓋檔案可將 Cuttlefish 磁碟還原至原始狀態。這項程序稱為重置。
執行個體編號
Cuttlefish 裝置會在與執行個體編號相關聯的主機上建立及使用資源。舉例來說,對於具有執行個體編號 1
的 Cuttlefish 裝置,adb
連線會透過位於連接埠 6520
的 TCP 伺服器 Socket 公開。啟動多個執行個體時,會為第一部裝置在埠 6520
建立 TCP 伺服器 Socket,為第二部裝置建立 6521
,並為每個額外裝置遞增埠號碼。
修改支援的執行個體數量上限
主機端資源 (例如 TAP 網路裝置) 必須預先分配給 Cuttlefish 虛擬機器。根據預設,cuttlefish-base 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 |
數字 | 要為特定 VM 分配的記憶體量 (以 MB 為單位)。 |
setupwizard_mode |
字串 | 指定系統是否會在使用者首次執行裝置時,為使用者執行裝置設定精靈。設定精靈模式支援的選項為 DISABLED 、OPTIONAL 和 REQUIRED 。 |
cpus |
數字 | 分配給 VM 的虛擬 CPU 數量。 |
disk |
物件 | 指定與定位用於執行單一 VM 執行個體的檔案系統構件相關的屬性。 |
default_build |
字串 | 包含 Cuttlefish 虛擬裝置映像檔的資料夾本機檔案系統路徑。 |
如需更多 cvd
隨附設定檔的範例,請參閱 Cuttlefish 程式碼樹狀結構中的 cvd_test_configs
資料夾。
控制多租戶執行個體
本節說明如何在多租戶情境中建立及銷毀裝置。您可以使用下列選項啟動多部 Cuttlefish 裝置:
從標準設定啟動多個 VM
如要使用描述多租戶情境的標準設定建立多個 VM,請使用 --config_file=
標記前置詞叫用 cvd create
指令,如下所示:
cvd create --config_file=CONFIG_FILE
以下是參照名為 /etc/phone.json
的標準設定檔的叫用範例。
cvd create --config_file=/etc/phone.json
從單一來賓映像檔啟動多個 VM
如要使用單一訪客映像檔啟動多個 Cuttlefish 裝置,請使用 --num_instances=N
標記,其中 N 是啟動裝置的數量。根據預設,裝置會從例項編號 1
開始。
cvd create --num_instances=N
如要變更起始例項編號,請執行下列任一操作:
新增
--base_instance_num=N
旗標,並將 N 設為第一個例項編號。cvd create --base_instance_num=N
使用與
vsoc-NN
相符的使用者帳戶啟動 Cuttlefish,其中 NN 是基礎執行個體編號,以兩位數字格式表示。舉例來說,如要使用使用者帳戶vsoc-01
啟動 Cuttlefish,請執行以下指令:cvd create --base_instance_num=1
如何停止裝置
如要停止上次 cvd create
叫用所啟動的所有裝置,請執行以下指令:
cvd stop
如要重新啟動已停止的裝置,請執行:
cvd start
如要從系統執行作業中徹底移除裝置,請按照下列步驟操作:
cvd remove