कटलफिश: बहु-किरायेदारी

कटलफिश मल्टी-टेनेंसी आपके होस्ट मशीन को एक ही लॉन्च आमंत्रण के साथ कई वर्चुअल गेस्ट डिवाइस लॉन्च करने की अनुमति देती है।

ये एकाधिक कटलफ़िश वर्चुअल मशीनें कुछ होस्ट डिस्क संसाधनों को साझा कर सकती हैं, जिससे आप डिस्क स्थान को संरक्षित कर सकते हैं। प्रत्येक वर्चुअल मशीन को एंड्रॉइड विभाजन (जैसे super , userdata , boot ) को कवर करने वाला एक अलग डिस्क ओवरले मिलता है। अतिथि डिस्क में कोई भी संशोधन अतिथि-विशिष्ट डिस्क ओवरले में रखा जाता है, जिससे प्रत्येक कटलफिश वर्चुअल मशीन को उसके डिस्क विभाजन का कॉपी-ऑन-राइट दृश्य मिलता है। जैसे-जैसे प्रत्येक वर्चुअल डिवाइस डिस्क के अपने दृश्य में अधिक डेटा लिखता है, होस्ट डिस्क पर ओवरले फ़ाइलें आकार में बढ़ जाती हैं क्योंकि वे मूल स्थिति और उनकी वर्तमान स्थिति के बीच डेल्टा को कैप्चर कर रहे हैं।

कटलफिश डिस्क को उसकी मूल स्थिति में वापस लाने के लिए ओवरले फ़ाइलों को रीसेट किया जा सकता है। इस प्रक्रिया को पावरवॉशिंग के रूप में जाना जाता है।

उदाहरण संख्या

कटलफिश डिवाइस अपने इंस्टेंस नंबर से जुड़े होस्ट पर संसाधनों का निर्माण और उपभोग करते हैं। उदाहरण के लिए, उदाहरण संख्या 1 के साथ कटलफिश डिवाइस के लिए पोर्ट 6520 पर एक टीसीपी सर्वर सॉकेट के माध्यम से एक adb कनेक्शन उजागर होता है। जब एकाधिक इंस्टेंस लॉन्च किए जाते हैं, तो यह पहले डिवाइस के लिए पोर्ट 6520 , दूसरे डिवाइस के लिए 6521 पर एक टीसीपी सर्वर सॉकेट बनाता है, और प्रत्येक अतिरिक्त डिवाइस के लिए पोर्ट नंबर बढ़ाता है।

समर्थित उदाहरणों की अधिकतम संख्या संशोधित करें

होस्ट-साइड संसाधन, जैसे TAP नेटवर्क डिवाइस, को कटलफ़िश वर्चुअल मशीनों के लिए पूर्व-आवंटित किया जाना चाहिए। डिफ़ॉल्ट रूप से, कटलफिश-बेस डेबियन पैकेज उदाहरण संख्या 1 से 10 के लिए संसाधनों का प्रावधान करता है।

इसे /etc/default/cuttlefish-host-resources में num_cvd_accounts संशोधित करके और निम्नलिखित आदेश चलाकर cuttlefish-host-resources सेवा को पुनरारंभ करके बदला जा सकता है:

sudo systemctl restart cuttlefish-host-resources

विहित विन्यास

कैनोनिकल कॉन्फ़िगरेशन JSON प्रारूप में कटलफ़िश उपकरणों के लिए कॉन्फ़िगरेशन का प्रतिनिधित्व करते हैं। आप बहु-किरायेदार परिदृश्य में एकाधिक कटलफ़िश उपकरणों के कॉन्फ़िगरेशन का वर्णन करने के लिए कैनोनिकल कॉन्फ़िगरेशन JSON फ़ाइलें बना सकते हैं।

निम्नलिखित कैनोनिकल कॉन्फ़िगरेशन 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 वस्तु एकल वीएम इंस्टेंस को चलाने के लिए उपयोग की जाने वाली फ़ाइल सिस्टम कलाकृतियों का पता लगाने के लिए प्रासंगिक गुणों को निर्दिष्ट करता है।
default_build डोरी कटलफिश वर्चुअल डिवाइस छवि वाले फ़ोल्डर के लिए स्थानीय फ़ाइल सिस्टम पथ।

cvd के साथ वितरित कॉन्फ़िगरेशन फ़ाइलों के अधिक उदाहरणों के लिए, कटलफ़िश कोड ट्री में cvd_test_configs फ़ोल्डर देखें।

बहु-किरायेदार उदाहरणों को नियंत्रित करें

यह अनुभाग वर्णन करता है कि बहु-किरायेदार परिदृश्य में डिवाइस को कैसे प्रारंभ और बंद किया जाए। आप निम्नलिखित विकल्पों का उपयोग करके एकाधिक कटलफिश डिवाइस लॉन्च कर सकते हैं:

  • कैनोनिकल कॉन्फ़िगरेशन : लॉन्च किए जाने वाले उदाहरणों की सूची का वर्णन करते हुए JSON कॉन्फ़िगरेशन फ़ाइल का उपयोग करके प्रत्येक डिवाइस के लिए अनुकूलित कॉन्फ़िगरेशन लॉन्च करें।
  • एकल अतिथि छवि : एक ही अतिथि छवि से एकाधिक डिवाइस लॉन्च करें।

कैनोनिकल कॉन्फिगरेशन से एकाधिक वीएम प्रारंभ करें

बहु-किरायेदार परिदृश्य का वर्णन करने वाले कैनोनिकल कॉन्फ़िगरेशन का उपयोग करके एकाधिक वीएम शुरू करने के लिए, --config_file= ध्वज उपसर्ग के साथ cvd start कमांड को निम्नानुसार लागू करें:

cvd start --config_file=CONFIG_FILE

निम्नलिखित एक उदाहरण आमंत्रण है जो /etc/phone.json नामक एक कैनोनिकल कॉन्फ़िगरेशन फ़ाइल को संदर्भित करता है।

cvd start --config_file=/etc/phone.json

एकल अतिथि छवि से एकाधिक VM प्रारंभ करें

एक ही अतिथि छवि का उपयोग करके एकाधिक कटलफिश डिवाइस लॉन्च करने के लिए, --num_instances= N ध्वज का उपयोग करें, जहां N लॉन्च किए जाने वाले डिवाइसों की संख्या है। डिफ़ॉल्ट रूप से, डिवाइस इंस्टेंस नंबर 1 से शुरू होते हैं।

cvd start --num_instances=N

आरंभिक इंस्टेंस संख्या बदलने के लिए, निम्न में से कोई एक कार्य करें:

  • प्रथम उदाहरण संख्या के रूप में N के साथ --base_instance_num= N ध्वज जोड़ें।

    cvd start --base_instance_num=N
    
  • कटलफिश को vsoc- NN से मेल खाने वाले उपयोगकर्ता खाते के साथ लॉन्च करें, जहां NN दो अंकों के रूप में आधार इंस्टेंस संख्या है। उदाहरण के लिए, उपयोगकर्ता खाते vsoc- 01 के साथ कटलफिश लॉन्च करने के लिए, चलाएँ:

    cvd start --base_instance_num=1
    

उपकरणों को कैसे रोकें

अंतिम cvd start इनवोकेशन द्वारा लॉन्च किए गए सभी उपकरणों को रोकने के लिए, चलाएँ:

cvd stop