قابلیت چند مستاجری 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