الحبار: متعدد الإيجار

يسمح تعدد الإيجارات لـ 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