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