يسمح تعدد الإيجارات لـ Cuttlefish لجهازك المضيف بإطلاق العديد من أجهزة الضيف الافتراضية من خلال استدعاء تشغيل واحد.
يمكن لهذه الأجهزة الافتراضية Cuttlefish المتعددة مشاركة بعض موارد القرص المضيف، مما يسمح لك بالحفاظ على مساحة القرص. يحصل كل جهاز افتراضي على تراكب قرص مميز يغطي أقسام Android (مثل 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 | رقم | عدد وحدات المعالجة المركزية الافتراضية المخصصة للجهاز الظاهري. |
disk | هدف | يحدد الخصائص ذات الصلة بتحديد موقع عناصر نظام الملفات المستخدمة لتشغيل مثيل VM واحد. |
default_build | خيط | مسار نظام الملفات المحلي إلى مجلد يحتوي على صورة جهاز Cuttlefish الظاهري. |
لمزيد من الأمثلة على ملفات التكوين الموزعة باستخدام cvd
، راجع المجلد cvd_test_configs
في شجرة رموز Cuttlefish.
التحكم في مثيلات المستأجرين المتعددين
يصف هذا القسم كيفية بدء تشغيل الأجهزة وإيقافها في سيناريو متعدد المستأجرين. يمكنك تشغيل عدة أجهزة Cuttlefish باستخدام الخيارات التالية:
- التكوين الأساسي : قم بتشغيل التكوينات المخصصة لكل جهاز باستخدام ملف تكوين JSON الذي يصف قائمة المثيلات المطلوب تشغيلها.
- صورة ضيف واحدة : قم بتشغيل أجهزة متعددة من صورة ضيف واحدة.
ابدأ تشغيل أجهزة افتراضية متعددة من التكوين الأساسي
لبدء تشغيل أجهزة افتراضية متعددة باستخدام التكوين الأساسي الذي يصف سيناريو المستأجرين المتعددين، قم باستدعاء أمر cvd start
مع بادئة العلامة --config_file=
كما يلي:
cvd start --config_file=CONFIG_FILE
فيما يلي مثال لاستدعاء يشير إلى ملف التكوين الأساسي المسمى /etc/phone.json
.
cvd start --config_file=/etc/phone.json
بدء تشغيل أجهزة افتراضية متعددة من صورة ضيف واحدة
لتشغيل أجهزة Cuttlefish متعددة باستخدام صورة ضيف واحدة، استخدم علامة --num_instances= N
، حيث N هو عدد الأجهزة التي سيتم تشغيلها. افتراضيًا، تبدأ الأجهزة من رقم المثيل 1
.
cvd start --num_instances=N
لتغيير رقم مثيل البداية، قم بأحد الإجراءات التالية:
أضف علامة
--base_instance_num= N
مع N كرقم المثيل الأول.cvd start --base_instance_num=N
قم بتشغيل Cuttlefish باستخدام حساب مستخدم مطابق لـ
vsoc- NN
، حيث NN هو رقم المثيل الأساسي في شكل مكون من رقمين. على سبيل المثال، لتشغيل Cuttlefish باستخدام حساب مستخدمvsoc- 01
، قم بتشغيل:cvd start --base_instance_num=1
كيفية إيقاف الأجهزة
لإيقاف جميع الأجهزة التي تم تشغيلها بواسطة استدعاء cvd start
الأخير، قم بتشغيل:
cvd stop