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