Tính năng nhiều người thuê của Cuttlefish cho phép máy chủ lưu trữ khởi chạy nhiều thiết bị khách ảo bằng một lệnh gọi khởi chạy.
Các máy ảo Cuttlefish này có thể dùng chung một số tài nguyên ổ đĩa của máy chủ lưu trữ, cho phép bạn tiết kiệm dung lượng ổ đĩa. Mỗi máy ảo sẽ nhận được một lớp phủ ổ đĩa riêng biệt bao gồm các phân vùng Android (chẳng hạn như super, userdata, boot). Mọi thay đổi đối với ổ đĩa khách đều được đặt trong một lớp phủ ổ đĩa dành riêng cho khách, giúp mỗi máy ảo Cuttlefish có một chế độ xem sao chép khi ghi 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 máy chủ lưu trữ sẽ tăng kích thước vì chúng đang ghi lại mức chênh lệch 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ủ để trả ổ đĩa Cuttlefish về trạng thái ban đầu. Quá trình này được gọi là powerwash.
Số phiên bản
Các thiết bị Cuttlefish tạo và sử dụng tài nguyên trên máy chủ lưu trữ được liên kết với số phiên bản của chúng. Ví dụ: kết nối adb được hiển thị thông qua điểm cuối máy chủ TCP tại cổng 6520 cho thiết bị Cuttlefish có số phiên bản 1.
Khi nhiều phiên bản được khởi chạy, hệ thố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 phiên bản tối đa được hỗ trợ
Các tài nguyên phía máy chủ lưu trữ, 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
cơ sở của Cuttlefish sẽ cung cấp tài nguyên cho các số phiên bản từ 1 đến 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 các thiết bị Cuttlefish ở định dạng JSON. Bạn có thể tạo các tệp JSON cấu hình chuẩn để mô tả cấu hình của nhiều thiết bị Cuttlefish trong trường hợp nhiều người thuê.
Sau đây mô tả định dạng được dùng cho các tệp JSON cấu hình chuẩn (thay thế các trình 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 thiết lập có 2 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_only_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 có 2 thiết bị:
| Phầ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 thiết bị nhiều người thuê sẽ được khởi chạy. |
@import |
Chuỗi | Cho biết loại thiết bị và đặt các 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 lựa 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 xác định vị trí của các cấu phần phần mềm hệ thống tệp được 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 một thư mục chứa hình ảnh thiết bị ảo Cuttlefish image. |
Để xem thêm các ví dụ về tệp cấu hình được phân phối bằng cvd, hãy xem thư mục
cvd_test_configs
trong cây mã Cuttlefish.
Kiểm soát các phiên bản nhiều người thuê
Phần này mô tả cách tạo và hủy bỏ thiết bị trong trường hợp nhiều người thuê. Bạn có thể khởi chạy nhiều thiết bị Cuttlefish bằng các lựa chọn sau:
- Cấu hình chuẩn: Khởi chạy các cấu hình tuỳ chỉnh cho từng thiết bị bằng tệp cấu hình JSON mô tả danh sách các phiên bản cần khởi chạy.
- Hình ảnh khách đơn: Khởi chạy nhiều thiết bị từ một hình ảnh khách đơn.
Khởi động nhiều máy ảo từ cấu hình chuẩn
Để tạo nhiều máy ảo bằng cấu hình chuẩn mô tả trường hợp nhiều người thuê, hãy gọi lệnh cvd create có tiền tố cờ --config_file= như sau:
cvd create --config_file=CONFIG_FILE
Sau đây là một ví dụ về lệnh gọi tham chiếu đến 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ừ hình ảnh khách đơn
Để khởi chạy nhiều thiết bị Cuttlefish bằng một hình ảnh khách đơn, hãy sử dụng cờ
--num_instances=N, trong đó N là số lượng
thiết bị cần khởi chạy. Theo mặc định, các thiết bị bắt đầu từ số phiên bản 1.
cvd create --num_instances=N
Để thay đổi số phiên bản bắt đầu, hãy làm một trong những việc sau:
Thêm cờ
--base_instance_num=Nvới N là số phiên bản đầu tiên.cvd create --base_instance_num=N
Khởi chạy Cuttlefish bằng tài khoản người dùng khớp với
vsoc-NN, trong đó NN là số phiên bản cơ sở ở dạng 2 chữ số. Ví dụ: để khởi chạy Cuttlefish 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 tất cả thiết bị được khởi chạy bằng 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ị đã dừng, hãy chạy:
cvd start
Để xoá hoàn toàn một thiết bị khỏi hệ thống, hãy chạy:
cvd remove