Google 致力于为黑人社区推动种族平等。查看具体举措

Cuttlefish:多租户与 powerwashing

借助 Cuttlefish 多租户功能,您的主机可以通过一次启动调用来启动多个虚拟客户机设备。

这多个 Cuttlefish 虚拟机可以共用一些主机磁盘资源,从而节省磁盘空间。每个虚拟机都会获得一个覆盖 Android 分区(例如 superuserdataboot)的不重复的磁盘叠加层。对客户机磁盘的任何修改都将放置在客户机专用的磁盘叠加层中,从而为每个 Cuttlefish 虚拟机提供其磁盘分区的写入时复制视图。当每个虚拟设备向其磁盘视图写入更多数据时,主机磁盘上的叠加层文件大小会增加,因为它们会捕获原始状态和当前状态之间的增量。

叠加层文件可以重置,以将 Cuttlefish 磁盘恢复为其原始状态。此过程称为“PowerPowering”

实例号

Cuttlefish 设备会在与其“实例号”相关联的主机上创建并消耗资源。例如,对于实例号为 1 的 Cuttlefish 设备,其 adb 连接会通过位于端口 6520 的 TCP 服务器端套接字进行公开。当启动多个实例时,它会在端口 6520 处为第一个设备创建 TCP 服务器端套接字,为第二个设备创建 6521,并递增每个其他设备的端口号。

修改支持的实例的数量上限

必须为 Cuttlefish 虚拟机预先分配主机端资源(例如 TAP 网络设备)。默认情况下,cuttlefish-common Debian 软件包会为 110 号实例预配资源。

如需进行更改,请在 /etc/default/cuttlefish-common 中修改 num_cvd_accounts,并通过执行以下命令来重启 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
    
  • 使用与 vsoc-NN 匹配的用户帐号启动 Cuttlefish,其中 NN 为两位数形式的基础实例号。例如,如需使用用户帐号 vsoc-01 启动 Cuttlefish,请运行以下命令:

    launch_cvd --base_instance_num=1
    

停止

如需停止上次 launch_cvd 调用启动的所有设备,请运行以下命令:

stop_cvd

powerwashing

如需在原始状态(构建后的状态)下启动设备,请使用 launch_cvd 命令添加 --resume=false 标记。

// 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