ساقه ماهی: چند اجاره ای

چند اجاره ماهی به دستگاه میزبان شما اجازه می دهد تا چندین دستگاه مهمان مجازی را با یک فراخوان راه اندازی راه اندازی کند.

این چندین ماشین مجازی Cuttlefish می‌توانند برخی از منابع دیسک میزبان را به اشتراک بگذارند و به شما امکان می‌دهند فضای دیسک را حفظ کنید. هر ماشین مجازی یک پوشش دیسک متمایز دریافت می کند که پارتیشن های اندروید را پوشش می دهد (مانند super ، userdata ، boot ). هر گونه تغییر در دیسک مهمان در یک پوشش دیسک مخصوص مهمان قرار می گیرد و به هر ماشین مجازی Cuttlefish یک نمای کپی روی نوشتن از پارتیشن های دیسک خود می دهد. همانطور که هر دستگاه مجازی داده های بیشتری را در نمای خود از دیسک می نویسد، اندازه فایل های همپوشانی روی دیسک میزبان افزایش می یابد زیرا آنها در حال گرفتن دلتای بین حالت اولیه و حالت فعلی خود هستند.

فایل های همپوشانی را می توان بازنشانی کرد تا دیسک Cuttlefish به حالت اولیه خود بازگردد. این فرآیند به عنوان powerwashing شناخته می شود.

شماره های نمونه

دستگاه‌های کوتل‌فیش منابعی را در میزبان مرتبط با شماره نمونه خود ایجاد و مصرف می‌کنند. به عنوان مثال، یک اتصال adb از طریق سوکت سرور TCP در پورت 6520 برای دستگاه Cuttlefish با نمونه شماره 1 در معرض دید قرار می گیرد. هنگامی که چندین نمونه راه اندازی می شود، یک سوکت سرور TCP در پورت 6520 برای دستگاه اول، 6521 برای دستگاه دوم ایجاد می کند و شماره پورت را برای هر دستگاه اضافی افزایش می دهد.

حداکثر تعداد نمونه های پشتیبانی شده را تغییر دهید

منابع سمت میزبان، مانند دستگاه های شبکه TAP، باید از قبل برای ماشین های مجازی Cuttlefish تخصیص داده شوند. به‌طور پیش‌فرض، بسته دبیان مبتنی بر ماهی‌ماهی، منابعی را برای مثال اعداد 1 تا 10 فراهم می‌کند.

این را می توان از طریق تغییر num_cvd_accounts در /etc/default/cuttlefish-host-resources و راه اندازی مجدد سرویس cuttlefish-host-resources با اجرای دستور زیر تغییر داد:

sudo systemctl restart cuttlefish-host-resources

تنظیمات متعارف

پیکربندی‌های متعارف پیکربندی دستگاه‌های Cuttlefish را در قالب JSON نشان می‌دهند. می‌توانید فایل‌های JSON پیکربندی متعارف را برای توصیف پیکربندی چندین دستگاه Cuttlefish در یک سناریوی چند مستاجر ایجاد کنید.

در زیر فرمت مورد استفاده برای فایل‌های JSON پیکربندی متعارف را توضیح می‌دهد (جایگزین‌کننده‌ها با پیکربندی‌های دستگاه).

{
  "common": {
    CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
  },
  "instances": [
    {
      FIRST_DEVICE_CONFIGURATION
    },
    {
      NTH_DEVICE_CONFIGURATION
    }
  ]
}

در زیر نمونه ای از فایل پیکربندی یک راه اندازی با دو دستگاه، یک دستگاه تلفن و یک دستگاه پوشیدنی است:

{
  "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"
      }
    }
  ]
}

این جدول عناصر مورد استفاده در پیکربندی مثال را با دو دستگاه توصیف می کند:

عنصر تایپ کنید توضیحات
instances آرایه آرایه ای از اشیاء JSON، که هر کدام یک دستگاه را در گروه چند مستاجر از دستگاه هایی که قرار است راه اندازی شوند، توصیف می کنند.
@import رشته نوع دستگاه را نشان می دهد و مقادیر پیش فرض را برای پیکربندی دستگاه تنظیم می کند. انواع دستگاه های پشتیبانی شده phone و wearable هستند.
vm شیء ویژگی هایی را مشخص می کند که برای محیط VM خاص نمونه دستگاه اعمال می شود.
memory_mb شماره مقدار حافظه اختصاص داده شده برای یک ماشین مجازی خاص بر حسب مگابایت.
setupwizard_mode رشته مشخص می کند که آیا جادوگر تنظیم دستگاه در اولین اجرای دستگاه برای کاربر اجرا می شود یا خیر. گزینه های پشتیبانی شده برای حالت جادوگر راه اندازی DISABLED ، OPTIONAL ، و REQUIRED است.
cpus شماره تعداد CPUهای مجازی اختصاص داده شده به VM.
disk شیء ویژگی های مربوط به مکان یابی مصنوعات سیستم فایل مورد استفاده برای اجرای یک نمونه VM را مشخص می کند.
default_build رشته مسیر سیستم فایل محلی به یک پوشه حاوی تصویر دستگاه مجازی Cuttlefish.

برای مثال‌های بیشتر از فایل‌های پیکربندی توزیع شده با cvd ، به پوشه cvd_test_configs در درخت کد Cuttlefish مراجعه کنید.

موارد چند مستاجر را کنترل کنید

این بخش نحوه ایجاد و تخریب دستگاه ها را در سناریوی چند مستاجر توضیح می دهد. می توانید چندین دستگاه Cuttlefish را با استفاده از گزینه های زیر راه اندازی کنید:

  • پیکربندی متعارف : پیکربندی‌های سفارشی‌شده را برای هر دستگاه با استفاده از یک فایل پیکربندی JSON که فهرست نمونه‌هایی را که باید راه‌اندازی شوند، راه‌اندازی کنید.
  • تصویر مهمان تک : چندین دستگاه را از یک تصویر مهمان راه اندازی کنید.

چندین VM را از پیکربندی متعارف شروع کنید

برای ایجاد چندین ماشین مجازی با استفاده از یک پیکربندی متعارف که سناریوی چند مستاجر را توصیف می کند، دستور cvd create را با پیشوند پرچم --config_file= به صورت زیر فراخوانی کنید:

cvd create --config_file=CONFIG_FILE

در زیر نمونه ای از فراخوانی است که به یک فایل پیکربندی متعارف به نام /etc/phone.json ارجاع می دهد.

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

چندین VM را از یک تصویر مهمان شروع کنید

برای راه اندازی چندین دستگاه Cuttlefish با استفاده از یک تصویر مهمان، از --num_instances= N استفاده کنید، که در آن N تعداد دستگاه هایی است که باید راه اندازی شوند. به طور پیش فرض، دستگاه ها از نمونه شماره 1 شروع می شوند.

cvd create --num_instances=N

برای تغییر شماره نمونه شروع، یکی از موارد زیر را انجام دهید:

  • پرچم --base_instance_num= N را با N به عنوان اولین شماره اضافه کنید.

    cvd create --base_instance_num=N
    
  • Cuttlefish را با یک حساب کاربری منطبق با vsoc- NN راه اندازی کنید، جایی که NN شماره نمونه پایه به شکل دو رقمی است. به عنوان مثال، برای راه اندازی Cuttlefish با یک حساب کاربری vsoc- 01 ، اجرا کنید:

    cvd create --base_instance_num=1
    

چگونه دستگاه ها را متوقف کنیم

برای متوقف کردن تمام دستگاه‌هایی که توسط آخرین فراخوان cvd create راه‌اندازی شده‌اند، اجرا کنید:

cvd stop

برای راه اندازی مجدد دستگاه هایی که متوقف شده اند، اجرا کنید:

cvd start

برای حذف کامل یک دستگاه از سیستم اجرا کنید:

cvd remove
،

چند اجاره ماهی به دستگاه میزبان شما اجازه می دهد تا چندین دستگاه مهمان مجازی را با یک فراخوان راه اندازی راه اندازی کند.

این چندین ماشین مجازی Cuttlefish می‌توانند برخی از منابع دیسک میزبان را به اشتراک بگذارند و به شما امکان می‌دهند فضای دیسک را حفظ کنید. هر ماشین مجازی یک پوشش دیسک متمایز دریافت می کند که پارتیشن های اندروید را پوشش می دهد (مانند super ، userdata ، boot ). هر گونه تغییر در دیسک مهمان در یک پوشش دیسک مخصوص مهمان قرار می گیرد و به هر ماشین مجازی Cuttlefish یک نمای کپی روی نوشتن از پارتیشن های دیسک خود می دهد. همانطور که هر دستگاه مجازی داده های بیشتری را در نمای خود از دیسک می نویسد، اندازه فایل های همپوشانی روی دیسک میزبان افزایش می یابد زیرا آنها در حال گرفتن دلتای بین حالت اولیه و حالت فعلی خود هستند.

فایل های همپوشانی را می توان بازنشانی کرد تا دیسک Cuttlefish به حالت اولیه خود بازگردد. این فرآیند به عنوان powerwashing شناخته می شود.

شماره های نمونه

دستگاه‌های کوتل‌فیش منابعی را در میزبان مرتبط با شماره نمونه خود ایجاد و مصرف می‌کنند. به عنوان مثال، یک اتصال adb از طریق سوکت سرور TCP در پورت 6520 برای دستگاه Cuttlefish با نمونه شماره 1 در معرض دید قرار می گیرد. هنگامی که چندین نمونه راه اندازی می شود، یک سوکت سرور TCP در پورت 6520 برای دستگاه اول، 6521 برای دستگاه دوم ایجاد می کند و شماره پورت را برای هر دستگاه اضافی افزایش می دهد.

حداکثر تعداد نمونه های پشتیبانی شده را تغییر دهید

منابع سمت میزبان، مانند دستگاه های شبکه TAP، باید از قبل برای ماشین های مجازی Cuttlefish تخصیص داده شوند. به‌طور پیش‌فرض، بسته دبیان مبتنی بر ماهی‌ماهی، منابعی را برای مثال اعداد 1 تا 10 فراهم می‌کند.

این را می توان از طریق تغییر num_cvd_accounts در /etc/default/cuttlefish-host-resources و راه اندازی مجدد سرویس cuttlefish-host-resources با اجرای دستور زیر تغییر داد:

sudo systemctl restart cuttlefish-host-resources

تنظیمات متعارف

پیکربندی‌های متعارف پیکربندی دستگاه‌های Cuttlefish را در قالب JSON نشان می‌دهند. می‌توانید فایل‌های JSON پیکربندی متعارف را برای توصیف پیکربندی چندین دستگاه Cuttlefish در یک سناریوی چند مستاجر ایجاد کنید.

در زیر فرمت مورد استفاده برای فایل‌های JSON پیکربندی متعارف را توضیح می‌دهد (جایگزین‌کننده‌ها با پیکربندی‌های دستگاه).

{
  "common": {
    CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
  },
  "instances": [
    {
      FIRST_DEVICE_CONFIGURATION
    },
    {
      NTH_DEVICE_CONFIGURATION
    }
  ]
}

در زیر نمونه ای از فایل پیکربندی یک راه اندازی با دو دستگاه، یک دستگاه تلفن و یک دستگاه پوشیدنی است:

{
  "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"
      }
    }
  ]
}

این جدول عناصر مورد استفاده در پیکربندی مثال را با دو دستگاه توصیف می کند:

عنصر تایپ کنید توضیحات
instances آرایه آرایه ای از اشیاء JSON، که هر کدام یک دستگاه را در گروه چند مستاجر از دستگاه هایی که قرار است راه اندازی شوند، توصیف می کنند.
@import رشته نوع دستگاه را نشان می دهد و مقادیر پیش فرض را برای پیکربندی دستگاه تنظیم می کند. انواع دستگاه های پشتیبانی شده phone و wearable هستند.
vm شیء ویژگی هایی را مشخص می کند که برای محیط VM خاص نمونه دستگاه اعمال می شود.
memory_mb شماره مقدار حافظه اختصاص داده شده برای یک ماشین مجازی خاص بر حسب مگابایت.
setupwizard_mode رشته مشخص می کند که آیا جادوگر تنظیم دستگاه در اولین اجرای دستگاه برای کاربر اجرا می شود یا خیر. گزینه های پشتیبانی شده برای حالت جادوگر راه اندازی DISABLED ، OPTIONAL ، و REQUIRED است.
cpus شماره تعداد CPUهای مجازی اختصاص داده شده به VM.
disk شیء ویژگی های مربوط به مکان یابی مصنوعات سیستم فایل مورد استفاده برای اجرای یک نمونه VM را مشخص می کند.
default_build رشته مسیر سیستم فایل محلی به یک پوشه حاوی تصویر دستگاه مجازی Cuttlefish.

برای مثال‌های بیشتر از فایل‌های پیکربندی توزیع شده با cvd ، به پوشه cvd_test_configs در درخت کد Cuttlefish مراجعه کنید.

موارد چند مستاجر را کنترل کنید

این بخش نحوه ایجاد و تخریب دستگاه ها را در سناریوی چند مستاجر توضیح می دهد. می توانید چندین دستگاه Cuttlefish را با استفاده از گزینه های زیر راه اندازی کنید:

  • پیکربندی متعارف : پیکربندی‌های سفارشی‌شده را برای هر دستگاه با استفاده از یک فایل پیکربندی JSON که فهرست نمونه‌هایی را که باید راه‌اندازی شوند، راه‌اندازی کنید.
  • تصویر مهمان تک : چندین دستگاه را از یک تصویر مهمان راه اندازی کنید.

چندین VM را از پیکربندی متعارف شروع کنید

برای ایجاد چندین ماشین مجازی با استفاده از یک پیکربندی متعارف که سناریوی چند مستاجر را توصیف می کند، دستور cvd create را با پیشوند پرچم --config_file= به صورت زیر فراخوانی کنید:

cvd create --config_file=CONFIG_FILE

در زیر نمونه ای از فراخوانی است که به یک فایل پیکربندی متعارف به نام /etc/phone.json ارجاع می دهد.

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

چندین VM را از یک تصویر مهمان شروع کنید

برای راه اندازی چندین دستگاه Cuttlefish با استفاده از یک تصویر مهمان، از --num_instances= N استفاده کنید، که در آن N تعداد دستگاه هایی است که باید راه اندازی شوند. به طور پیش فرض، دستگاه ها از نمونه شماره 1 شروع می شوند.

cvd create --num_instances=N

برای تغییر شماره نمونه شروع، یکی از موارد زیر را انجام دهید:

  • پرچم --base_instance_num= N را با N به عنوان اولین شماره اضافه کنید.

    cvd create --base_instance_num=N
    
  • Cuttlefish را با یک حساب کاربری منطبق با vsoc- NN راه اندازی کنید، جایی که NN شماره نمونه پایه به شکل دو رقمی است. به عنوان مثال، برای راه اندازی Cuttlefish با یک حساب کاربری vsoc- 01 ، اجرا کنید:

    cvd create --base_instance_num=1
    

چگونه دستگاه ها را متوقف کنیم

برای متوقف کردن تمام دستگاه‌هایی که توسط آخرین فراخوان cvd create راه‌اندازی شده‌اند، اجرا کنید:

cvd stop

برای راه اندازی مجدد دستگاه هایی که متوقف شده اند، اجرا کنید:

cvd start

برای حذف کامل یک دستگاه از سیستم اجرا کنید:

cvd remove