কাটলফিশ: মাল্টি-টেনেন্সি

Cuttlefish মাল্টি-টেনেন্সি আপনার হোস্ট মেশিনকে একক লঞ্চ আহ্বানের সাথে একাধিক ভার্চুয়াল গেস্ট ডিভাইস চালু করার অনুমতি দেয়।

এই একাধিক কাটলফিশ ভার্চুয়াল মেশিনগুলি হোস্ট ডিস্ক সংস্থানগুলির কিছু ভাগ করতে পারে, যা আপনাকে ডিস্কের স্থান সংরক্ষণ করতে দেয়। প্রতিটি ভার্চুয়াল মেশিন অ্যান্ড্রয়েড পার্টিশন (যেমন super , userdata , boot ) কভার করে একটি স্বতন্ত্র ডিস্ক ওভারলে পায়। গেস্ট ডিস্কের যেকোনো পরিবর্তন একটি গেস্ট-নির্দিষ্ট ডিস্ক ওভারলেতে স্থাপন করা হয়, যার ফলে প্রতিটি কাটলফিশ ভার্চুয়াল মেশিনের ডিস্ক পার্টিশনের একটি কপি-অন-রাইট ভিউ দেওয়া হয়। যেহেতু প্রতিটি ভার্চুয়াল ডিভাইস তার ডিস্কের দৃশ্যে আরও ডেটা লেখে, হোস্ট ডিস্কের ওভারলে ফাইলগুলি আকারে বৃদ্ধি পায় কারণ তারা মূল অবস্থা এবং তাদের বর্তমান অবস্থার মধ্যে ডেল্টা ক্যাপচার করছে।

Cuttlefish ডিস্ককে তার আসল অবস্থায় ফিরিয়ে আনতে ওভারলে ফাইলগুলি রিসেট করা যেতে পারে। এই প্রক্রিয়াটি পাওয়ার ওয়াশিং নামে পরিচিত।

উদাহরণ সংখ্যা

Cuttlefish ডিভাইসগুলি হোস্টে তাদের উদাহরণ সংখ্যার সাথে সংযুক্ত সম্পদ তৈরি করে এবং ব্যবহার করে। উদাহরণস্বরূপ, পোর্ট 6520 এ একটি টিসিপি সার্ভার সকেটের মাধ্যমে একটি adb সংযোগ উন্মুক্ত করা হয়েছে কটলফিশ ডিভাইসের জন্য উদাহরণ নম্বর 1 । যখন একাধিক দৃষ্টান্ত চালু করা হয়, এটি প্রথম ডিভাইসের জন্য 6520 পোর্টে, দ্বিতীয় ডিভাইসের জন্য 6521 এ একটি TCP সার্ভার সকেট তৈরি করে এবং প্রতিটি অতিরিক্ত ডিভাইসের জন্য পোর্ট নম্বর বৃদ্ধি করে।

সর্বাধিক সংখ্যক সমর্থিত দৃষ্টান্ত পরিবর্তন করুন

হোস্ট-সাইড রিসোর্স, যেমন TAP নেটওয়ার্ক ডিভাইস, কাটলফিশ ভার্চুয়াল মেশিনের জন্য আগে থেকে বরাদ্দ করা আবশ্যক। ডিফল্টরূপে, কাটলফিশ-বেস ডেবিয়ান প্যাকেজ উদাহরণ সংখ্যা 1 থেকে 10 জন্য সংস্থান সরবরাহ করে।

এটি /etc/default/cuttlefish-host-resourcesnum_cvd_accounts পরিবর্তন করে এবং নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে cuttlefish-host-resources পরিষেবা পুনরায় চালু করার মাধ্যমে পরিবর্তন করা যেতে পারে:

sudo systemctl restart cuttlefish-host-resources

ক্যানোনিকাল কনফিগারেশন

ক্যানোনিকাল কনফিগারেশনগুলি 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 সংখ্যা মেগাবাইটে একটি নির্দিষ্ট VM-এর জন্য বরাদ্দ করা মেমরির পরিমাণ।
setupwizard_mode স্ট্রিং ডিভাইস সেটআপ উইজার্ড ডিভাইসের প্রথম চালানোর সময় ব্যবহারকারীর জন্য চালানো হয় কিনা তা নির্দিষ্ট করে। সেটআপ উইজার্ড মোডের জন্য সমর্থিত বিকল্পগুলি হল DISABLED , OPTIONAL , এবং REQUIRED
cpus সংখ্যা VM-এ বরাদ্দকৃত ভার্চুয়াল CPU-র সংখ্যা।
disk অবজেক্ট একটি একক VM দৃষ্টান্ত চালানোর জন্য ব্যবহৃত ফাইল সিস্টেম আর্টিফ্যাক্টগুলি সনাক্ত করার জন্য প্রাসঙ্গিক বৈশিষ্ট্যগুলি নির্দিষ্ট করে৷
default_build স্ট্রিং একটি কাটলফিশ ভার্চুয়াল ডিভাইস ইমেজ ধারণকারী ফোল্ডারে স্থানীয় ফাইল সিস্টেম পাথ।

cvd এর সাথে বিতরণ করা কনফিগারেশন ফাইলের আরও উদাহরণের জন্য, Cuttlefish কোড ট্রিতে cvd_test_configs ফোল্ডারটি দেখুন।

মাল্টি-টেন্যান্ট দৃষ্টান্ত নিয়ন্ত্রণ করুন

এই বিভাগটি বর্ণনা করে যে কিভাবে একটি মাল্টি-টেন্যান্ট পরিস্থিতিতে ডিভাইস তৈরি এবং ধ্বংস করতে হয়। আপনি নিম্নলিখিত বিকল্পগুলি ব্যবহার করে একাধিক Cuttlefish ডিভাইস চালু করতে পারেন:

  • ক্যানোনিকাল কনফিগারেশন : লঞ্চ করার উদাহরণগুলির তালিকা বর্ণনা করে একটি JSON কনফিগার ফাইল ব্যবহার করে প্রতিটি ডিভাইসের জন্য কাস্টমাইজড কনফিগারেশন চালু করুন।
  • একক গেস্ট ইমেজ : একটি গেস্ট ইমেজ থেকে একাধিক ডিভাইস চালু করুন।

ক্যানোনিকাল কনফিগারেশন থেকে একাধিক VM শুরু করুন

একটি ক্যানোনিকাল কনফিগারেশন ব্যবহার করে একাধিক VM তৈরি করতে যা মাল্টি-টেন্যান্ট দৃশ্যকল্প বর্ণনা করে, নিম্নরূপ --config_file= পতাকা উপসর্গ সহ cvd create কমান্ডটি ব্যবহার করুন:

cvd create --config_file=CONFIG_FILE

নিম্নলিখিত একটি উদাহরণ আমন্ত্রণ উল্লেখ করা হল একটি ক্যানোনিকাল কনফিগারেশন ফাইল যার নাম /etc/phone.json

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

একক গেস্ট ইমেজ থেকে একাধিক VM শুরু করুন

একটি গেস্ট ইমেজ ব্যবহার করে একাধিক Cuttlefish ডিভাইস চালু করতে, --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
,

Cuttlefish মাল্টি-টেনেন্সি আপনার হোস্ট মেশিনকে একক লঞ্চ আহ্বানের সাথে একাধিক ভার্চুয়াল গেস্ট ডিভাইস চালু করার অনুমতি দেয়।

এই একাধিক কাটলফিশ ভার্চুয়াল মেশিনগুলি হোস্ট ডিস্ক সংস্থানগুলির কিছু ভাগ করতে পারে, যা আপনাকে ডিস্কের স্থান সংরক্ষণ করতে দেয়। প্রতিটি ভার্চুয়াল মেশিন অ্যান্ড্রয়েড পার্টিশন (যেমন super , userdata , boot ) কভার করে একটি স্বতন্ত্র ডিস্ক ওভারলে পায়। গেস্ট ডিস্কের যেকোনো পরিবর্তন একটি গেস্ট-নির্দিষ্ট ডিস্ক ওভারলেতে স্থাপন করা হয়, যার ফলে প্রতিটি কাটলফিশ ভার্চুয়াল মেশিনের ডিস্ক পার্টিশনের একটি কপি-অন-রাইট ভিউ দেওয়া হয়। যেহেতু প্রতিটি ভার্চুয়াল ডিভাইস তার ডিস্কের দৃশ্যে আরও ডেটা লেখে, হোস্ট ডিস্কের ওভারলে ফাইলগুলি আকারে বৃদ্ধি পায় কারণ তারা মূল অবস্থা এবং তাদের বর্তমান অবস্থার মধ্যে ডেল্টা ক্যাপচার করছে।

Cuttlefish ডিস্ককে তার আসল অবস্থায় ফিরিয়ে আনতে ওভারলে ফাইলগুলি রিসেট করা যেতে পারে। এই প্রক্রিয়াটি পাওয়ার ওয়াশিং নামে পরিচিত।

উদাহরণ সংখ্যা

Cuttlefish ডিভাইসগুলি হোস্টে তাদের উদাহরণ সংখ্যার সাথে সংযুক্ত সম্পদ তৈরি করে এবং ব্যবহার করে। উদাহরণস্বরূপ, পোর্ট 6520 এ একটি টিসিপি সার্ভার সকেটের মাধ্যমে একটি adb সংযোগ উন্মুক্ত করা হয়েছে কটলফিশ ডিভাইসের জন্য উদাহরণ নম্বর 1 । যখন একাধিক দৃষ্টান্ত চালু করা হয়, এটি প্রথম ডিভাইসের জন্য 6520 পোর্টে, দ্বিতীয় ডিভাইসের জন্য 6521 এ একটি TCP সার্ভার সকেট তৈরি করে এবং প্রতিটি অতিরিক্ত ডিভাইসের জন্য পোর্ট নম্বর বৃদ্ধি করে।

সর্বাধিক সংখ্যক সমর্থিত দৃষ্টান্ত পরিবর্তন করুন

হোস্ট-সাইড রিসোর্স, যেমন TAP নেটওয়ার্ক ডিভাইস, কাটলফিশ ভার্চুয়াল মেশিনের জন্য আগে থেকে বরাদ্দ করা আবশ্যক। ডিফল্টরূপে, কাটলফিশ-বেস ডেবিয়ান প্যাকেজ উদাহরণ সংখ্যা 1 থেকে 10 জন্য সংস্থান সরবরাহ করে।

এটি /etc/default/cuttlefish-host-resourcesnum_cvd_accounts পরিবর্তন করে এবং নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে cuttlefish-host-resources পরিষেবা পুনরায় চালু করার মাধ্যমে পরিবর্তন করা যেতে পারে:

sudo systemctl restart cuttlefish-host-resources

ক্যানোনিকাল কনফিগারেশন

ক্যানোনিকাল কনফিগারেশনগুলি 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 সংখ্যা মেগাবাইটে একটি নির্দিষ্ট VM-এর জন্য বরাদ্দ করা মেমরির পরিমাণ।
setupwizard_mode স্ট্রিং ডিভাইস সেটআপ উইজার্ড ডিভাইসের প্রথম চালানোর সময় ব্যবহারকারীর জন্য চালানো হয় কিনা তা নির্দিষ্ট করে। সেটআপ উইজার্ড মোডের জন্য সমর্থিত বিকল্পগুলি হল DISABLED , OPTIONAL , এবং REQUIRED
cpus সংখ্যা VM-এ বরাদ্দকৃত ভার্চুয়াল CPU-র সংখ্যা।
disk অবজেক্ট একটি একক VM দৃষ্টান্ত চালানোর জন্য ব্যবহৃত ফাইল সিস্টেম আর্টিফ্যাক্টগুলি সনাক্ত করার জন্য প্রাসঙ্গিক বৈশিষ্ট্যগুলি নির্দিষ্ট করে৷
default_build স্ট্রিং একটি কাটলফিশ ভার্চুয়াল ডিভাইস ইমেজ ধারণকারী ফোল্ডারে স্থানীয় ফাইল সিস্টেম পাথ।

cvd এর সাথে বিতরণ করা কনফিগারেশন ফাইলের আরও উদাহরণের জন্য, Cuttlefish কোড ট্রিতে cvd_test_configs ফোল্ডারটি দেখুন।

মাল্টি-টেন্যান্ট দৃষ্টান্ত নিয়ন্ত্রণ করুন

এই বিভাগটি বর্ণনা করে যে কিভাবে একটি মাল্টি-টেন্যান্ট পরিস্থিতিতে ডিভাইস তৈরি এবং ধ্বংস করতে হয়। আপনি নিম্নলিখিত বিকল্পগুলি ব্যবহার করে একাধিক Cuttlefish ডিভাইস চালু করতে পারেন:

  • ক্যানোনিকাল কনফিগারেশন : লঞ্চ করার উদাহরণগুলির তালিকা বর্ণনা করে একটি JSON কনফিগার ফাইল ব্যবহার করে প্রতিটি ডিভাইসের জন্য কাস্টমাইজড কনফিগারেশন চালু করুন।
  • একক গেস্ট ইমেজ : একটি গেস্ট ইমেজ থেকে একাধিক ডিভাইস চালু করুন।

ক্যানোনিকাল কনফিগারেশন থেকে একাধিক VM শুরু করুন

একটি ক্যানোনিকাল কনফিগারেশন ব্যবহার করে একাধিক VM তৈরি করতে যা মাল্টি-টেন্যান্ট দৃশ্যকল্প বর্ণনা করে, নিম্নরূপ --config_file= পতাকা উপসর্গ সহ cvd create কমান্ডটি ব্যবহার করুন:

cvd create --config_file=CONFIG_FILE

নিম্নলিখিত একটি উদাহরণ আমন্ত্রণ উল্লেখ করা হল একটি ক্যানোনিকাল কনফিগারেশন ফাইল যার নাম /etc/phone.json

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

একক গেস্ট ইমেজ থেকে একাধিক VM শুরু করুন

একটি গেস্ট ইমেজ ব্যবহার করে একাধিক Cuttlefish ডিভাইস চালু করতে, --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