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

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

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

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

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

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

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

منابع سمت میزبان، مانند دستگاه‌های شبکه TAP، باید برای ماشین‌های مجازی Cuttlefish از قبل تخصیص داده شوند. به طور پیش‌فرض، بسته دبیان cuttlefish-base منابع را برای نمونه‌های شماره 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_only_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 شیء ویژگی‌هایی را مشخص می‌کند که در محیط ماشین مجازی مختص به نمونه دستگاه اعمال می‌شوند.
memory_mb شماره مقدار حافظه‌ای که برای یک ماشین مجازی خاص بر حسب مگابایت اختصاص داده می‌شود.
setupwizard_mode رشته مشخص می‌کند که آیا ویزارد راه‌اندازی دستگاه در اولین اجرای دستگاه برای کاربر اجرا شود یا خیر. گزینه‌های پشتیبانی‌شده برای حالت ویزارد راه‌اندازی عبارتند از: DISABLED ، OPTIONAL ) و REQUIRED .
cpus شماره تعداد پردازنده‌های مجازی اختصاص داده شده به ماشین مجازی.
disk شیء ویژگی‌های مربوط به مکان‌یابی مصنوعات سیستم فایل مورد استفاده برای اجرای یک نمونه ماشین مجازی را مشخص می‌کند.
default_build رشته مسیر سیستم فایل محلی به پوشه‌ای که حاوی تصویر دستگاه مجازی Cuttlefish است.

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

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

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

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

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

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

cvd create --config_file=CONFIG_FILE

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

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

شروع چندین ماشین مجازی از یک ایمیج مهمان واحد

برای راه‌اندازی چندین دستگاه 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