Cuttlefish のマルチテナンシーを使用すると、ホストマシンで起動呼び出しを 1 回行うだけで複数の仮想ゲストデバイスを起動できます。
これらの複数の Cuttlefish 仮想マシンでホストのディスク リソースの一部を共有できるため、ディスク容量を節約できます。各仮想マシンには、Android パーティション(super
、userdata
、boot
など)を対象として含む個別のディスク オーバーレイが割り当てられます。ゲストディスクに変更がある場合、ゲスト固有のディスク オーバーレイ内で行われ、各 Cuttlefish 仮想マシンにそのディスク パーティションのコピーオンライト ビューが与えられます。各仮想デバイスのディスクビューに書き込むデータが多くなると、ホストディスク上のオーバーレイ ファイルのサイズが大きくなります。これは、これらのオーバーレイ ファイルが元の状態と現在の状態の間の差分をキャプチャしているためです。
オーバーレイ ファイルをリセットすると、Cuttlefish ディスクを元の状態に戻すことができます。このプロセスを「Powerwash」と呼びます。
インスタンス番号
Cuttlefish デバイスは、インスタンス番号に関連付けられているホスト上でリソースを作成して使用します。たとえば adb
接続は、インスタンス番号が 1
の Cuttlefish デバイスのポート 6520
で、TCP サーバー ソケットを介して公開されます。複数のインスタンスが起動される場合、各デバイスのポートに TCP サーバー ソケットが作成されます。ポート番号は、最初のデバイスでは 6520
、次のデバイスでは 6521
となり、以降の各デバイスのポート番号は 1 つずつ大きくなります。
サポートされるインスタンスの最大数の変更
ホスト側のリソース(TAP ネットワーク デバイスなど)を Cuttlefish 仮想マシン用に事前に割り当てる必要があります。デフォルトでは、cuttlefish-base Debian パッケージにより、インスタンス番号 1
から 10
のリソースがプロビジョニングされます。
これを変更するには、/etc/default/cuttlefish-host-resources
の num_cvd_accounts
を変更し、次のコマンドを実行して cuttlefish-host-resources
サービスを再起動します。
sudo systemctl restart cuttlefish-host-resources
マルチテナント インスタンスの管理
ここでは、デバイスの起動方法と停止方法について説明します。これは、単一テナントとマルチテナントの両方の launch_cvd
呼び出しに適用されます。
起動
複数の Cuttlefish デバイスを同時に起動するには、--num_instances=N
フラグを使用します(N は、起動するデバイスの数)。デフォルトでは、インスタンス番号が 1
のデバイスから起動されます。
launch_cvd --num_instances=N
開始インスタンス番号を変更するには、次のいずれかを行います。
開始インスタンス番号として N を指定した
--base_instance_num=N
フラグを追加します。launch_cvd --base_instance_num=N
ユーザー アカウントが
vsoc-NN
と一致する Cuttlefish を起動します(NN は、2 桁の形式のベース インスタンス番号)。たとえば、ユーザー アカウントがvsoc-01
の Cuttlefish を起動するには、次のコマンドを実行します。launch_cvd --base_instance_num=1
停止
前回の launch_cvd
呼び出しで起動されたすべてのデバイスを停止するには、次のコマンドを実行します。
stop_cvd