Cuttlefish: एक से ज़्यादा किरायेदार

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

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

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

इंस्टेंस नंबर

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

इस्तेमाल किए जा सकने वाले इंस्टेंस की ज़्यादा से ज़्यादा संख्या में बदलाव करना

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

इसे बदलने के लिए, /etc/default/cuttlefish-host-resources में num_cvd_accounts में बदलाव करें और नीचे दिए गए निर्देशों का पालन करके, cuttlefish-host-resources सेवा को फिर से शुरू करें:

sudo systemctl restart cuttlefish-host-resources

कैननिकल कॉन्फ़िगरेशन

कैननिकल कॉन्फ़िगरेशन, Cuttlefish डिवाइसों के लिए JSON फ़ॉर्मैट में कॉन्फ़िगरेशन दिखाते हैं. कई-टेंंट वाले वर्शन में, कई Cuttlefish डिवाइसों के कॉन्फ़िगरेशन के बारे में बताने के लिए, कैननिकल कॉन्फ़िगरेशन 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 ऑब्जेक्ट किसी एक VM इंस्टेंस को चलाने के लिए इस्तेमाल किए गए फ़ाइल सिस्टम आर्टफ़ैक्ट को ढूंढने से जुड़ी काम की प्रॉपर्टी बताती है.
default_build स्ट्रिंग उस फ़ोल्डर का लोकल फ़ाइल सिस्टम पाथ जिसमें Cuttlefish वर्चुअल डिवाइस की इमेज मौजूद है.

cvd के साथ डिस्ट्रिब्यूट की गई कॉन्फ़िगरेशन फ़ाइलों के ज़्यादा उदाहरणों के लिए, Cuttlefish कोड ट्री में cvd_test_configs फ़ोल्डर देखें.

एक से ज़्यादा किरायेदारों वाले इंस्टेंस को कंट्रोल करना

इस सेक्शन में, एक से ज़्यादा उपयोगकर्ताओं वाले खाते में डिवाइस बनाने और उन्हें मिटाने का तरीका बताया गया है. इन विकल्पों का इस्तेमाल करके, एक से ज़्यादा Cuttlefish डिवाइस लॉन्च किए जा सकते हैं:

  • कैन्यन कॉन्फ़िगरेशन: हर डिवाइस के लिए, पसंद के मुताबिक कॉन्फ़िगरेशन लॉन्च करें. इसके लिए, JSON कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल करें. इसमें, लॉन्च किए जाने वाले इंस्टेंस की सूची होती है.
  • मेहमान के लिए एक इमेज: एक ही मेहमान इमेज से कई डिवाइस लॉन्च करें.

कैननिकल कॉन्फ़िगरेशन से कई वीएम शुरू करना

एक से ज़्यादा उपयोगकर्ताओं के लिए कॉन्फ़िगरेशन की जानकारी देने वाले कैननिकल कॉन्फ़िगरेशन का इस्तेमाल करके, कई वर्चुअल मशीनें बनाने के लिए, cvd create कमांड को --config_file= फ़्लैग प्रीफ़िक्स के साथ इस तरह से शुरू करें:

cvd create --config_file=CONFIG_FILE

यहां /etc/phone.json नाम की कैननिकल कॉन्फ़िगरेशन फ़ाइल का रेफ़रंस देने वाले invocaton का उदाहरण दिया गया है.

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

एक ही मेहमान इमेज से कई वीएम शुरू करना

एक ही मेहमान इमेज का इस्तेमाल करके, कई Cuttlefish डिवाइस लॉन्च करने के लिए, --num_instances=N फ़्लैग का इस्तेमाल करें. यहां N, लॉन्च किए जाने वाले डिवाइसों की संख्या है. डिफ़ॉल्ट रूप से, डिवाइसों के लिए इंस्टेंस नंबर 1 से शुरू होता है.

cvd create --num_instances=N

शुरू होने वाले इंस्टेंस का नंबर बदलने के लिए, इनमें से कोई एक काम करें:

  • पहले इंस्टेंस नंबर के तौर पर, N के साथ --base_instance_num=N फ़्लैग जोड़ें.

    cvd create --base_instance_num=N
    
  • Cuttlefish को vsoc-NN से मैच करने वाले उपयोगकर्ता खाते के साथ लॉन्च करें. यहां NN, दो अंकों में बेस इंस्टेंस नंबर है. उदाहरण के लिए, उपयोगकर्ता खाते vsoc-01 के साथ Cuttlefish को लॉन्च करने के लिए, यह चलाएं:

    cvd create --base_instance_num=1
    

डिवाइसों को कैसे रोकें

cvd create को आखिरी बार इस्तेमाल करने पर लॉन्च किए गए सभी डिवाइसों को बंद करने के लिए, यह चलाएं:

cvd stop

बंद किए गए डिवाइसों को रीस्टार्ट करने के लिए, यह चलाएं:

cvd start

किसी डिवाइस को सिस्टम से पूरी तरह हटाने के लिए:

cvd remove