حبَّار: إيجارات متعددة

تتيح ميزة "المستأجرون المتعدّدون" في Cuttlefish لجهازك المضيف تشغيل عدّة أجهزة ضيف افتراضية من خلال طلب تشغيل واحد.

يمكن لهذه الأجهزة الافتراضية المتعدّدة من Cuttlefish مشاركة بعض موارد القرص المضيف، ما يتيح لك توفير مساحة القرص. يحصل كل جهاز افتراضي على تراكب مميّز على قرص Android (مثل super أو userdata أو boot). ويتم وضع أي تعديل على قرص الضيف في تراكب قرص خاص بالضيف، ما يمنح كل جهاز افتراضي Cuttlefish عرضًا لأقسام القرص عن طريق النسخ عند الكتابة. وعندما يكتب كل جهاز افتراضي المزيد من البيانات في عرض القرص، يزداد حجم ملفات التراكب على القرص المضيف لأنّها تُسجِّل الفرق بين الحالة الأصلية والحالة الحالية.

يمكن إعادة تعيين ملفات التراكب لإرجاع قرص Cuttlefish إلى حالته الأصلية. تُعرف هذه العملية باسم عملية إعادة الضبط على الإعدادات الأصلية.

أرقام الأجهزة الافتراضية

تنشئ أجهزة الحبار الموارد وتستهلكها على المضيف المرتبط برقمها على سبيل المثال. على سبيل المثال، يتم عرض اتصال adb من خلال مقبس خادم TCP على المنفذ 6520 لجهاز Cuttlefish الذي يحمل رقم الإصدار 1. عند تشغيل عدّة نُسخ، يتم إنشاء مقبس خادم TCP على المنفذ 6520 للجهاز الأول و6521 للجهاز الثاني، ويتم زيادة رقم المنفذ لكل جهاز إضافي.

تعديل الحد الأقصى لعدد الأجهزة الافتراضية المتوافقة

يجب تخصيص الموارد من جهة المضيف، مثل أجهزة شبكة TAP، مسبقًا لأجهزة الحبار الافتراضية. توفّر حزمة cuttlefish-base Debian تلقائيًا موارد مثل الأرقام من 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 عنصر تحدِّد السمات التي تنطبق على بيئة الجهاز الظاهري الخاصة بمثيل device.
memory_mb الرقم مقدار الذاكرة الذي يتم تخصيصه لجهاز افتراضي معيَّن بالميغابايت.
setupwizard_mode سلسلة تحدِّد هذه السياسة ما إذا كان يمكن للمستخدم تشغيل معالج إعداد الجهاز عند تشغيل الجهاز لأول مرة. والخيارات المتوافقة مع وضع معالج الإعداد هي DISABLED وOPTIONAL وREQUIRED.
cpus الرقم عدد وحدات المعالجة المركزية الافتراضية المخصّصة للجهاز الافتراضي
disk عنصر تحدّد هذه السمة السمات ذات الصلة بتحديد موقع عناصر نظام الملفات المستخدمة لتشغيل مثيل جهاز افتراضي واحد.
default_build سلسلة مسار نظام الملفات على الجهاز إلى مجلد يحتوي على صورة جهاز افتراضي Cuttlefish

لمزيد من الأمثلة على ملفات الإعداد التي يتم توزيعها مع cvd، اطّلِع على المجلد cvd_test_configs في شجرة رموز 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