چند اجاره ماهی به دستگاه میزبان شما اجازه می دهد تا چندین دستگاه مهمان مجازی را با یک فراخوان راه اندازی راه اندازی کند.
این چندین ماشین مجازی 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