Cuttlefish: мультиарендность и Powerwashing

Мультитенантность Cuttlefish позволяет вашему хост-компьютеру запускать несколько виртуальных гостевых устройств одним вызовом запуска.

Эти несколько виртуальных машин Cuttlefish могут совместно использовать некоторые дисковые ресурсы хоста, что позволяет экономить место на диске. Каждая виртуальная машина получает отдельный оверлей диска, покрывающий разделы Android (например, super , userdata , boot ). Любая модификация гостевого диска помещается в оверлей для гостевого диска, предоставляя каждой виртуальной машине Cuttlefish представление копируемых при записи разделов диска. По мере того как каждое виртуальное устройство записывает больше данных в свое представление диска, файлы наложения на диске хоста увеличиваются в размере, потому что они захватывают дельту между исходным состоянием и их текущим состоянием.

Файлы наложения можно сбросить, чтобы вернуть диск Cuttlefish в исходное состояние. Этот процесс известен как мытье под давлением.

Номера экземпляров

Устройства Cuttlefish создают и потребляют ресурсы на хосте, привязанные к номеру их экземпляра . Например, соединение adb открывается через сокет TCP-сервера на порту 6520 для устройства Cuttlefish с номером экземпляра 1 . При запуске нескольких экземпляров он создает сокет сервера TCP на порту 6520 для первого устройства, 6521 для второго устройства и увеличивает номер порта для каждого дополнительного устройства.

Изменение максимального количества поддерживаемых экземпляров

Ресурсы на стороне хоста, такие как сетевые устройства TAP, должны быть предварительно выделены для виртуальных машин Cuttlefish. По умолчанию пакет Debian cuttlefish-common выделяет ресурсы для экземпляров с номерами от 1 до 10 .

Это можно изменить, изменив num_cvd_accounts в /etc/default/cuttlefish-common и перезапустив службу cuttlefish cuttlefish-common , выполнив следующую команду:

sudo systemctl restart cuttlefish-common

Управление многопользовательскими экземплярами

В этом разделе описывается, как запускать, останавливать и отключать устройства Powerwash. Это относится как к launch_cvd для одного, так и для нескольких клиентов.

Начиная

Чтобы запустить несколько устройств Cuttlefish одновременно, используйте флаг --num_instances= N , где N — количество запускаемых устройств. По умолчанию устройства начинаются с номера экземпляра 1 .

launch_cvd --num_instances=N

Чтобы изменить начальный номер экземпляра, выполните одно из следующих действий:

  • Добавьте флаг --base_instance_num= N с N в качестве первого номера экземпляра.

    launch_cvd --base_instance_num=N
    
  • Запустите Cuttlefish с учетной записью пользователя, соответствующей vsoc- NN , где NN — это базовый номер экземпляра в двузначной форме. Например, чтобы запустить Cuttlefish с учетной записью пользователя vsoc- 01 , выполните:

    launch_cvd --base_instance_num=1
    

Остановка

Чтобы остановить все устройства, запущенные последним launch_cvd , запустите:

stop_cvd

Мойка

Чтобы запустить устройство в исходном состоянии (состояние из сборки), добавьте флаг --resume=false с командой launch_cvd .

// Launch and interact with your devices
launch_cvd --num_devices=N --daemon
// Stop all your devices
stop_cvd
// Restart devices in their original states
launch_cvd --daemon --num_devices=N --resume=false