কাটলফিশ মাল্টি-টেনেন্সি আপনার হোস্ট মেশিনকে একটিমাত্র লঞ্চ ইনভোকেশনের মাধ্যমে একাধিক ভার্চুয়াল গেস্ট ডিভাইস চালু করার সুযোগ দেয়।
এই একাধিক কাটলফিশ ভার্চুয়াল মেশিন হোস্ট ডিস্কের কিছু রিসোর্স শেয়ার করতে পারে, যা আপনাকে ডিস্ক স্পেস বাঁচাতে সাহায্য করে। প্রতিটি ভার্চুয়াল মেশিন অ্যান্ড্রয়েড পার্টিশনগুলোকে (যেমন super , userdata , boot ) আবৃত করে একটি স্বতন্ত্র ডিস্ক ওভারলে পায়। গেস্ট ডিস্কে করা যেকোনো পরিবর্তন একটি গেস্ট-নির্দিষ্ট ডিস্ক ওভারলেতে স্থাপন করা হয়, যা প্রতিটি কাটলফিশ ভার্চুয়াল মেশিনকে তার ডিস্ক পার্টিশনগুলোর একটি কপি-অন-রাইট ভিউ প্রদান করে। প্রতিটি ভার্চুয়াল ডিভাইস যখন ডিস্কের নিজস্ব ভিউতে আরও ডেটা লেখে, তখন হোস্ট ডিস্কের ওভারলে ফাইলগুলোর আকার বাড়তে থাকে, কারণ সেগুলো তাদের মূল অবস্থা এবং বর্তমান অবস্থার মধ্যকার পার্থক্য ধারণ করে।
কাটলফিশ ডিস্ককে তার মূল অবস্থায় ফিরিয়ে আনতে ওভারলে ফাইলগুলো রিসেট করা যায়। এই প্রক্রিয়াটি পাওয়ারওয়াশিং নামে পরিচিত।
ইনস্ট্যান্স নম্বর
কাটলফিশ ডিভাইসগুলো তাদের ইনস্ট্যান্স নম্বরের সাথে যুক্ত হোস্টে রিসোর্স তৈরি ও ব্যবহার করে। উদাহরণস্বরূপ, ইনস্ট্যান্স নম্বর 1 এর কাটলফিশ ডিভাইসটির জন্য 6520 পোর্টে একটি TCP সার্ভার সকেটের মাধ্যমে একটি adb সংযোগ উন্মুক্ত করা হয়। যখন একাধিক ইনস্ট্যান্স চালু করা হয়, তখন এটি প্রথম ডিভাইসের জন্য 6520 পোর্টে, দ্বিতীয় ডিভাইসের জন্য 6521 পোর্টে একটি TCP সার্ভার সকেট তৈরি করে এবং প্রতিটি অতিরিক্ত ডিভাইসের জন্য পোর্ট নম্বর বাড়িয়ে দেয়।
সমর্থিত ইনস্ট্যান্সের সর্বোচ্চ সংখ্যা পরিবর্তন করুন
কাটলফিশ ভার্চুয়াল মেশিনের জন্য হোস্ট-সাইড রিসোর্স, যেমন TAP নেটওয়ার্ক ডিভাইস, আগে থেকেই বরাদ্দ করে রাখতে হবে। ডিফল্টরূপে, cuttlefish-base ডেবিয়ান প্যাকেজটি 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_only_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 | বস্তু | ডিভাইস ইনস্ট্যান্সটির জন্য নির্দিষ্ট ভিএম এনভায়রনমেন্টে প্রযোজ্য বৈশিষ্ট্যগুলো উল্লেখ করে। |
memory_mb | সংখ্যা | একটি নির্দিষ্ট ভিএম-এর জন্য বরাদ্দ করা মেমরির পরিমাণ মেগাবাইটে। |
setupwizard_mode | স্ট্রিং | ডিভাইসটি প্রথমবার চালু করার সময় ব্যবহারকারীর জন্য ডিভাইস সেটআপ উইজার্ড চালানো হবে কিনা তা নির্দিষ্ট করে। সেটআপ উইজার্ড মোডের জন্য সমর্থিত বিকল্পগুলি হলো DISABLED , OPTIONAL এবং REQUIRED । |
cpus | সংখ্যা | ভিএম-এর জন্য বরাদ্দকৃত ভার্চুয়াল সিপিইউ-এর সংখ্যা। |
disk | বস্তু | একটি একক ভিএম ইনস্ট্যান্স চালানোর জন্য ব্যবহৃত ফাইল সিস্টেম আর্টিফ্যাক্টগুলি সনাক্ত করার জন্য প্রাসঙ্গিক বৈশিষ্ট্যগুলি নির্দিষ্ট করে। |
default_build | স্ট্রিং | কাটলফিশ ভার্চুয়াল ডিভাইস ইমেজ ধারণকারী ফোল্ডারটির লোকাল ফাইল সিস্টেম পাথ। |
cvd সাথে বিতরণ করা কনফিগারেশন ফাইলগুলির আরও উদাহরণের জন্য, Cuttlefish কোড ট্রিতে থাকা cvd_test_configs ফোল্ডারটি দেখুন।
মাল্টি-টেন্যান্ট ইনস্ট্যান্স নিয়ন্ত্রণ করুন
এই বিভাগে মাল্টি-টেন্যান্ট পরিস্থিতিতে ডিভাইস তৈরি এবং ধ্বংস করার পদ্ধতি বর্ণনা করা হয়েছে। আপনি নিম্নলিখিত বিকল্পগুলি ব্যবহার করে একাধিক কাটলফিশ ডিভাইস চালু করতে পারেন:
- ক্যানোনিকাল কনফিগ : চালু করার জন্য ইনস্ট্যান্সগুলির তালিকা বর্ণনা করে এমন একটি JSON কনফিগ ফাইল ব্যবহার করে প্রতিটি ডিভাইসের জন্য কাস্টমাইজড কনফিগারেশন চালু করুন।
- একক গেস্ট ইমেজ : একটিমাত্র গেস্ট ইমেজ থেকে একাধিক ডিভাইস চালু করুন।
ক্যানোনিকাল কনফিগ থেকে একাধিক ভিএম চালু করুন
মাল্টি-টেন্যান্ট সিনারিও বর্ণনা করে এমন একটি ক্যানোনিকাল কনফিগারেশন ব্যবহার করে একাধিক ভিএম তৈরি করতে, নিম্নলিখিতভাবে --config_file= ফ্ল্যাগ প্রিফিক্স সহ cvd create কমান্ডটি চালান:
cvd create --config_file=CONFIG_FILE
নিম্নলিখিতটি /etc/phone.json নামের একটি প্রামাণ্য কনফিগারেশন ফাইলকে উল্লেখ করে একটি আহ্বানের উদাহরণ।
cvd create --config_file=/etc/phone.json
একটি গেস্ট ইমেজ থেকে একাধিক ভিএম চালু করুন
একটিমাত্র গেস্ট ইমেজ ব্যবহার করে একাধিক কাটলফিশ ডিভাইস চালু করতে, --num_instances= N ফ্ল্যাগটি ব্যবহার করুন, যেখানে N হলো চালু করার জন্য ডিভাইসের সংখ্যা। ডিফল্টরূপে, ডিভাইসগুলো 1 নম্বর ইনস্ট্যান্স থেকে শুরু হয়।
cvd create --num_instances=N
প্রারম্ভিক ইনস্ট্যান্স নম্বর পরিবর্তন করতে, নিম্নলিখিতগুলির মধ্যে একটি করুন:
--base_instance_num= Nফ্ল্যাগটি যোগ করুন, যেখানে N হবে প্রথম ইনস্ট্যান্স নম্বর।cvd create --base_instance_num=N
vsoc- NNসাথে মেলে এমন একটি ইউজার অ্যাকাউন্ট দিয়ে Cuttlefish চালু করুন, যেখানে NN হলো দুই অঙ্কের বেস ইনস্ট্যান্স নম্বর। উদাহরণস্বরূপ,vsoc- 01ইউজার অ্যাকাউন্ট দিয়ে Cuttlefish চালু করতে, চালান:cvd create --base_instance_num=1
ডিভাইসগুলি কীভাবে বন্ধ করবেন
সর্বশেষ cvd create কমান্ডের মাধ্যমে চালু হওয়া সমস্ত ডিভাইস বন্ধ করতে, চালান:
cvd stop
বন্ধ হয়ে যাওয়া ডিভাইসগুলো পুনরায় চালু করতে, চালান:
cvd start
সিস্টেম থেকে কোনো ডিভাইস সম্পূর্ণরূপে মুছে ফেলতে চালান:
cvd remove