Mô hình đa khách hàng của Cuttlefish cho phép máy chủ của bạn khởi chạy nhiều thiết bị khách ảo bằng một lệnh gọi khởi chạy duy nhất.
Nhiều máy ảo Cuttlefish này có thể dùng chung một số tài nguyên ổ đĩa của máy chủ, cho phép bạn tiết kiệm dung lượng ổ đĩa. Mỗi máy ảo sẽ có một lớp phủ đĩa riêng biệt che phủ các phân vùng Android (chẳng hạn như super
, userdata
, boot
). Mọi sửa đổi đối với đĩa khách sẽ được đặt trong một lớp phủ đĩa dành riêng cho khách, nhờ vậy, mỗi máy ảo Cuttlefish có một chế độ xem sao chép khi ghi của các phân vùng đĩa. Khi mỗi thiết bị ảo ghi thêm dữ liệu vào chế độ xem ổ đĩa, các tệp lớp phủ trên ổ đĩa lưu trữ sẽ tăng kích thước vì các thiết bị này sẽ ghi lại delta giữa trạng thái ban đầu và trạng thái hiện tại.
Bạn có thể đặt lại các tệp lớp phủ để đưa ổ đĩa Cuttlefish về trạng thái ban đầu. Quá trình này được gọi là rửa xe bằng máy cao áp.
Số thực thể
Các thiết bị Cuttlefish tạo và sử dụng tài nguyên trên máy chủ liên kết với số lượng thực thể của chúng. Ví dụ: một kết nối adb
được hiển thị thông qua ổ cắm máy chủ TCP tại cổng 6520
cho thiết bị Cuttlefish có số thực thể 1
.
Khi nhiều thực thể được khởi chạy, ứng dụng sẽ tạo một ổ cắm máy chủ TCP tại cổng 6520
cho thiết bị đầu tiên, 6521
cho thiết bị thứ hai và tăng số cổng cho mỗi thiết bị bổ sung.
Sửa đổi số lượng thực thể được hỗ trợ tối đa
Các tài nguyên phía máy chủ, chẳng hạn như thiết bị mạng TAP, phải được phân bổ trước cho máy ảo Cuttlefish. Theo mặc định, gói
Debian cuttlefish-base
cung cấp tài nguyên cho các số thực thể 1
thông qua 10
.
Bạn có thể thay đổi điều này bằng cách sửa đổi num_cvd_accounts
trong /etc/default/cuttlefish-host-resources
và khởi động lại dịch vụ cuttlefish-host-resources
bằng cách chạy lệnh sau:
sudo systemctl restart cuttlefish-host-resources
Cấu hình chuẩn
Cấu hình chuẩn đại diện cho cấu hình của thiết bị Cuttlefish ở định dạng JSON. Bạn có thể tạo tệp JSON cấu hình chuẩn để mô tả cấu hình của nhiều thiết bị mực ống trong một trường hợp có nhiều đối tượng thuê.
Phần sau đây mô tả định dạng dùng cho tệp JSON cấu hình chuẩn hoá (thay thế phần giữ chỗ bằng cấu hình thiết bị).
{
"common": {
CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
},
"instances": [
{
FIRST_DEVICE_CONFIGURATION
},
{
NTH_DEVICE_CONFIGURATION
}
]
}
Sau đây là tệp cấu hình mẫu của một chế độ thiết lập có hai thiết bị, một thiết bị điện thoại và một thiết bị đeo:
{
"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"
}
}
]
}
Bảng này mô tả các phần tử được dùng trong cấu hình mẫu trên 2 thiết bị:
Nguyên tố | Loại | Mô tả |
---|---|---|
instances |
Mảng | Mảng các đối tượng JSON, mỗi đối tượng mô tả một thiết bị trong nhóm nhiều người dùng của các thiết bị sẽ được khởi chạy. |
@import |
Chuỗi | Cho biết loại thiết bị và đặt giá trị mặc định cho cấu hình thiết bị. Các loại thiết bị được hỗ trợ là phone và wearable . |
vm |
Đối tượng | Chỉ định các thuộc tính áp dụng cho môi trường máy ảo dành riêng cho phiên bản thiết bị. |
memory_mb |
Số | Dung lượng bộ nhớ cần phân bổ cho một máy ảo cụ thể, tính bằng megabyte. |
setupwizard_mode |
Chuỗi | Chỉ định xem trình hướng dẫn thiết lập thiết bị có chạy cho người dùng trong lần chạy đầu tiên của thiết bị hay không. Các tuỳ chọn được hỗ trợ cho chế độ trình hướng dẫn thiết lập là DISABLED , OPTIONAL và REQUIRED . |
cpus |
Số | Số lượng CPU ảo được phân bổ cho máy ảo. |
disk |
Đối tượng | Chỉ định các thuộc tính liên quan đến việc định vị cấu phần phần mềm hệ thống tệp dùng để chạy một phiên bản máy ảo. |
default_build |
Chuỗi | Đường dẫn hệ thống tệp cục bộ đến thư mục chứa hình ảnh thiết bị ảo Cuttlefish. |
Để biết thêm ví dụ về các tệp cấu hình được phân phối cùng với cvd
, hãy xem thư mục cvd_test_configs
trong cây mã Cuttlefish.
Kiểm soát các thực thể có nhiều đối tượng thuê
Phần này mô tả cách tạo và huỷ bỏ thiết bị trong trường hợp có nhiều người thuê. Bạn có thể chạy nhiều thiết bị mực nang bằng các lựa chọn sau:
- Cấu hình chuẩn: Chạy các cấu hình tuỳ chỉnh cho từng thiết bị bằng cách sử dụng tệp cấu hình JSON mô tả danh sách các thực thể cần khởi chạy.
- Một hình ảnh khách: Chạy nhiều thiết bị từ một hình ảnh khách.
Khởi động nhiều máy ảo từ cấu hình chính tắc
Để tạo nhiều máy ảo bằng một cấu hình chuẩn mô tả trường hợp nhiều người dùng, hãy gọi lệnh cvd create
với tiền tố cờ --config_file=
như sau:
cvd create --config_file=CONFIG_FILE
Sau đây là ví dụ về lệnh gọi tham chiếu đến một tệp cấu hình chuẩn có tên là /etc/phone.json
.
cvd create --config_file=/etc/phone.json
Khởi động nhiều máy ảo từ một hình ảnh khách
Để khởi chạy nhiều thiết bị mực nang bằng một hình ảnh khách duy nhất, hãy sử dụng cờ --num_instances=N
, trong đó N là số lượng thiết bị sẽ khởi chạy. Theo mặc định, các thiết bị có số bắt đầu từ số thực thể 1
.
cvd create --num_instances=N
Để thay đổi số lượng thực thể bắt đầu, hãy làm theo một trong những cách sau:
Thêm cờ
--base_instance_num=N
có N làm số thực thể đầu tiên.cvd create --base_instance_num=N
Chạy Cuttlefish bằng một tài khoản người dùng khớp với
vsoc-NN
, trong đó NN là số thực thể cơ sở ở dạng 2 chữ số. Ví dụ: để chạy Mực ống bằng tài khoản người dùngvsoc-01
, hãy chạy:cvd create --base_instance_num=1
Cách dừng thiết bị
Để dừng mọi thiết bị được khởi chạy bởi lệnh gọi cvd create
gần đây nhất, hãy chạy:
cvd stop
Để khởi động lại các thiết bị đã bị dừng, hãy chạy:
cvd start
Cách xoá hoàn toàn một thiết bị khỏi quá trình chạy hệ thống:
cvd remove