Cuttlefish: 멀티 테넌시

Cuttlefish 멀티 테넌시를 사용하면 한 번의 실행 호출로 호스트 머신에서 여러 개의 가상 게스트 기기를 시작할 수 있습니다.

이러한 여러 개의 Cuttlefish 가상 머신은 호스트 디스크 리소스의 일부를 공유할 수 있으므로 디스크 공간 절약이 가능합니다. 각 가상 머신에는 Android 파티션을 포괄하는 고유한 디스크 오버레이가 제공됩니다(예: super, userdata, boot). 게스트 디스크의 모든 수정사항은 게스트별 디스크 오버레이에 있으며 각 Cuttlefish 가상 머신에 디스크 파티션의 COW(기록 중 복사) 뷰를 제공합니다. 각 가상 기기에서 디스크 뷰에 더 많은 데이터를 쓰면 호스트 디스크의 오버레이 파일에서 원래 상태와 현재 상태의 차이를 캡처하므로 오버레이 파일 크기가 커집니다.

오버레이 파일을 재설정하여 Cuttlefish 디스크를 원래 상태로 되돌릴 수 있습니다. 이 프로세스를 파워워시라고 합니다.

인스턴스 번호

Cuttlefish 기기는 인스턴스 번호에 연결된 호스트에서 리소스를 생성하고 사용합니다. 예를 들어, adb 연결은 인스턴스 번호가 1인 Cuttlefish 기기의 경우 6520 포트에서 TCP 서버 소켓을 통해 노출됩니다. 여러 인스턴스가 실행되면 첫 번째 기기는 6520 포트, 두 번째 기기는 6521 포트에 TCP 서버 소켓을 만들고 기기가 추가될 때마다 포트 번호를 증분합니다.

지원되는 최대 인스턴스 수 수정

TAP 네트워크 기기와 같은 호스트 측 리소스는 Cuttlefish 가상 머신에 사전 할당되어야 합니다. 기본적으로 cuttlefish-base Debian 패키지는 인스턴스 번호 1~10에 리소스를 프로비저닝합니다.

이는 /etc/default/cuttlefish-host-resourcesnum_cvd_accounts를 수정하고 다음 명령어로 cuttlefish-host-resources 서비스를 다시 시작하여 변경할 수 있습니다.

sudo systemctl restart cuttlefish-host-resources

멀티 테넌트 인스턴스 제어

이 섹션에서는 기기를 시작하고 중지하는 방법을 설명합니다. 단일 테넌트 및 멀티 테넌트 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