Mực nang: Thuê nhiều nơi

Chế độ nhiều người thuê mực nang cho phép máy chủ của bạn khởi chạy nhiều thiết bị khách ảo chỉ bằng một lệnh khởi chạy duy nhất.

Nhiều máy ảo Mực nang này có thể chia sẻ một số tài nguyên đĩa chủ, cho phép bạn tiết kiệm dung lượng ổ đĩa. Mỗi máy ảo có một lớp phủ đĩa riêng biệt bao 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 đều được đặt trong lớp phủ đĩa dành riêng cho khách, cung cấp cho mỗi máy ảo Cuttlefish chế độ xem sao chép khi ghi các phân vùng đĩa của nó. Khi mỗi thiết bị ảo ghi nhiều dữ liệu hơn vào chế độ xem đĩa của nó, các tệp lớp phủ trên đĩa chủ sẽ tăng kích thước vì chúng đang nắm bắt vùng đồng bằng giữa trạng thái ban đầu và trạng thái hiện tại của chúng.

Các tập tin lớp phủ có thể được đặt lại để đưa đĩa Mực nang về trạng thái ban đầu. Quá trình này được gọi là powerwashing .

Số phiên bản

Các thiết bị mực nang tạo và tiêu thụ tài nguyên trên máy chủ gắn 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 ổ cắm máy chủ TCP tại cổng 6520 dành cho thiết bị Mực nang với phiên bản số 1 . Khi nhiều phiên bản được khởi chạy, nó 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 được hỗ trợ tối đa

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 dựa trên mực nang cung cấp tài nguyên cho các phiên bản từ 1 đến 10 .

Điều này có thể được thay đổi 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 cho thiết bị Mực nang ở đị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ị Mực nang trong trường hợp nhiều bên thuê.

Phần sau đây mô tả định dạng được sử dụng cho các tệp JSON cấu hình chuẩn (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 ví dụ về thiết lập với 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 thành phần được sử dụng trong cấu hình ví dụ với hai thiết bị:

Yếu tố Kiểu Sự miêu tả
instances Mảng Mảng các đối tượng JSON, mỗi đối tượng mô tả một thiết bị duy nhất trong nhóm thiết bị có nhiều đối tượng thuê sẽ được khởi chạy.
@import Sợi dây 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à phonewearable .
vm Sự vật Chỉ định các thuộc tính áp dụng cho môi trường VM dành riêng cho phiên bản thiết bị.
memory_mb Con 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 Sợi dây Chỉ định xem trình hướng dẫn thiết lập thiết bị có được chạy cho người dùng ở lần chạy thiết bị đầu tiên hay không. Các tùy chọn được hỗ trợ cho chế độ hướng dẫn thiết lập là DISABLED , OPTIONALREQUIRED .
cpus Con số Số lượng CPU ảo được phân bổ cho VM.
disk Sự vật Chỉ định các thuộc tính liên quan đến việc định vị các thành phần hệ thống tệp được sử dụng để chạy một phiên bản VM.
default_build Sợi dây Đường dẫn hệ thống tệp cục bộ tới 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 bằng cvd , hãy xem thư mục cvd_test_configs trong cây mã Mực nang.

Kiểm soát các trường hợp nhiều người thuê

Phần này mô tả cách khởi động và dừng thiết bị trong trường hợp có nhiều bên thuê. Bạn có thể khởi chạy nhiều thiết bị Mực nang bằng các tùy chọn sau:

  • Cấu hình Canonical : Khởi chạy các cấu hình tùy 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 sẽ khởi chạy.
  • Hình ảnh khách duy nhất : Khởi chạy nhiều thiết bị từ một hình ảnh khách duy nhất.

Bắt đầu nhiều máy ảo từ cấu hình chuẩn

Để khởi động nhiều máy ảo bằng cách sử dụng cấu hình chuẩn mô tả kịch bản nhiều bên thuê, hãy gọi lệnh cvd start với tiền tố cờ --config_file= như sau:

cvd start --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 /etc/phone.json .

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

Bắt đầu nhiều VM 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, 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ị bắt đầu từ phiên bản số 1 .

cvd start --num_instances=N

Để thay đổi số phiên bản bắt đầu, hãy thực hiện một trong các thao tác sau:

  • Thêm cờ --base_instance_num= N với N làm số phiên bản đầu tiên.

    cvd start --base_instance_num=N
    
  • Khởi chạy Mực nang với 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 hai chữ số. Ví dụ: để khởi chạy Mực nang bằng tài khoản người dùng vsoc- 01 , hãy chạy:

    cvd start --base_instance_num=1
    

Cách dừng thiết bị

Để dừng tất cả các thiết bị được khởi chạy bởi lệnh gọi cvd start cuối cùng, hãy chạy:

cvd stop