ভিএম ভার্চুয়ালবক্স তৈরির জন্য স্টোরেজ আকার নির্ধারণ করুন


41

ভিএম তৈরির জন্য স্টোরেজ আকার সেট করার কোনও উপায় আছে কি? আমি ভ্যাগ্র্যান্ট ব্যবহার করব, তবে নিশ্চিত নই যে এটি ভার্চুয়ালবক্সে করা দরকার বা ভ্যাগরান্টফাইলে আমি অন্তর্ভুক্ত করতে পারি এমন একটি সেটিং (আমি ডক্স পরীক্ষা করেছি তবে কোনও ইঙ্গিত বলে মনে হচ্ছে না)


গুগল "ভ্যাগ্র্যান্ট ডিস্ক সাইজ ভার্চুয়ালবক্স" এর জন্য এবং এসকুবুন্টুতে এই পোস্টটি সন্ধান করুন
eyoung100

2
@ আইওং 100 আহ, আমি অনুমান করি যে এটি নিশ্চিত করে যে এটি ভিএম তৈরির আগে করা যায় না।
a7omiton

ঠিক আছে, আপনি যদি ভ্যাগ্রান্ট ছাড়াই ভার্চুয়ালডিস্ক তৈরি করেন তবে এটি যদি আপনি চান তবে আপনাকে ভ্যাগ্রান্ট ব্যবহার করার দরকার নেই।
eyoung100

@ eyoung100 এটি কেবল একটি অতিরিক্ত পদক্ষেপের মতো মনে হয়েছিল, এটি তৈরির পরে
ভিএমকে

আইআরসিআর যাইহোক আপনি ভ্যাগ্রান্ট বন্ধ করার পরে ভ্যাগ্র্যান্ট ভিএমটিকে ধ্বংস করে।
eyoung100

উত্তর:


23

vagrant-disksize প্লাগ-ইন এই সহজ করে তোলে। একটি 20gb হার্ড ড্রাইভের সাহায্যে একটি ডেবিয়ান -9 ভিএম তৈরি করুন।

ন্যূনতমরূপে:

Vagrant.configure("2") do |config|
    config.vm.box = "debian/stretch64" 
    config.disksize.size = "20GB"
end

বা, প্লাগইনটির জন্য স্বতঃ-ইনস্টল যুক্তি ব্যবহার করে:

Vagrant.configure("2") do |config|

    required_plugins = %w( vagrant-vbguest vagrant-disksize )
    _retry = false
    required_plugins.each do |plugin|
        unless Vagrant.has_plugin? plugin
            system "vagrant plugin install #{plugin}"
            _retry=true
        end
    end

    if (_retry)
        exec "vagrant " + ARGV.join(' ')
    end

    config.vm.box = "debian/stretch64" 
    config.disksize.size = "20GB"
end

উবুন্টু 17.10 (আর্টফুল আরদ্বার্ক
ডেভিড

2
এটি উবুন্টু 16.04 এলটিএসের পক্ষে কাজ করেছে। আপনি যেমন উল্লেখ করেছেন, কেবলমাত্র কমান্ডটি দিয়ে প্লাগইনটি ইনস্টল করুন: vagrant plugin install vagrant-disksizeধন্যবাদ!
এডেনশো

1
কেবল ডিস্কটি প্রসারিত করতে নয়, এটি সঙ্কুচিত করার জন্য কাজ করে বলে মনে হচ্ছে।
জিনয়েড

কবজির মতো কাজ করেছেন।
wny

8

আপনি প্রশ্নে থাকা ডিস্কের ইউআইডিটি না জানলে এটি সম্ভব নয়। যদি আপনি তা করেন তবে আপনার নিজের মধ্যে নিম্নলিখিতগুলি থাকা দরকার Vagrantfile:

Vagrant.configure("2") do |config|
  # ... (other config)

  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyhd", "disk id", "--resize", "size in megabytes"]
  end
end

যেখানে "size in megabytes"এইচডি মেগাবাইটে আকার, এবং "disk id"এর UUID হয় ডিস্ক ( না VM- র)

বিকল্পভাবে, আপনি VBoxManage এর মাধ্যমে এটি করতে পারেন:

$ VBoxManage list hdds
[get the UUID of the disk in question from the output]
$ VBoxManage modifyhd [UUID] --resize [size in MiB]

বিকল্প সমাধান করা প্রকৃত ভার্চুয়াল মেশিনে অতিরিক্ত সঞ্চয় স্থান তৈরি করবে না, নাকি তা করবে?
a7omiton

সত্য, এটি কেবল হার্ড ড্রাইভের আকার পরিবর্তন করবে, তারপরে আপনাকে ভিএম

7
অন্যান্য থ্রেডে উল্লিখিত হিসাবে, এটি সাধারণত কার্যকর হয় না কারণ বেশিরভাগ ভ্যাগ্র্যান্ট বাক্সগুলি VBoxManage পছন্দ করে ফরম্যাটের .vmdkপরিবর্তে ভার্চুয়াল ডিস্ক ফাইলগুলি তৈরি .VDIকরে।
মার্ক হাডসন

@ মারকহডসন দুঃখিত, আমি এ সম্পর্কে অবগত ছিলাম না (আমি এই উত্তরটি ভার্চুয়ালবক্স এবং ভ্যাগ্রান্ট ডকুমেন্টেশনের উপর ভিত্তি করে তৈরি করেছি, আমি সত্যিকারভাবে ভ্যাগ্র্যান্ট বেশি ব্যবহার করি না)। এই বিষয়টি চিহ্নিত করার জন্য ধন্যবাদ! ভার্চুয়ালবক্স কি ভিএমডিকে আকার পরিবর্তন করতে পারে না? আমি কখনই চেষ্টা করে দেখিনি। আমার উত্তর আপডেট করবে।
ফেলিক্সহো

6

আমি মনে করি কিছু সাধারণ সমস্যা স্থির করা এর এই আপনি সাহায্য করতে পারেন।


এবং এটি প্রয়োজনীয় অংশ

ডিস্কের স্থান বাড়ান

সাধারণত (দুঃখের সাথে), ক্লাউড বেস বাক্সটি ভিএমডিকে ডিস্ক ফর্ম্যাটগুলির সাথে আসে। আপনি যদি ভাগ্যবান এবং আপনার ডিস্ক ফর্ম্যাটটি ভিডিআই হয় তবে আপনি সরাসরি এটির মতো সমাধান করতে পারেন। তবে, ভিএমডিকে প্রসারিত করা যায় না, তাই আপনার ভিএম-তে অন্য একটি ডিস্ক যুক্ত করা দরকার। যদি ম্যানুয়ালি এটিকে তৈরি করা শক্ত হয় তবে আপনি কি ভ্যাগ্রান্টের কাছ থেকে এটি চিত্রায়ন করতে পারেন? ঠিক আছে, এখন যে আমি সমাধান করেছি তা এতটা কঠিন নয়:

আপনার ওয়ার্কিং ডিরেক্টরিতে "বুটস্ট্র্যাপ.শ" নামে একটি স্ক্রিপ্ট তৈরি করুন এবং এই লাইনগুলি যুক্ত করুন:

pvcreate /dev/sdb
vgextend VolGroup /dev/sdb
lvextend /dev/VolGroup/lv_root /dev/sdb
resize2fs /dev/VolGroup/lv_root

ভলগ্রুপ এবং lv_root বিভিন্ন বিতরণে পরিবর্তন করতে পারে। তবে উবুন্টুতেও এটি আমার পক্ষে কাজ করে।

এবং তারপরে আপনার ভ্যাগ্রান্টফাইলে এই কোডটি যুক্ত করুন:

...
  config.vm.provider :virtualbox do |vb|
  ...
  # Validate this should be run it once
  if ARGV[0] == "up" && ! File.exist?("./disk1.vdi")
    vb.customize [
      'createhd',
      '--filename', "./disk1.vdi",
      '--format', 'VDI',
      # 100GB
      '--size', 100 * 1024
    ]

    vb.customize [
      'storageattach', :id,
      '--storagectl', 'SATA Controller',
      '--port', 1, '--device', 0,
      '--type', 'hdd', '--medium',
      file_to_disk
    ]
  end

  if ARGV[0] == "up" && ! File.exist?("./disk1.vdi")
    # Run script to map new disk
    config.vm.provision "bash", path: "bootstrap.sh"
    # Run script to increase swap memory
    config.vm.provision "bash", path: "increase_swap.sh"
  end
...

এটি 100 গিগাবাইট ক্ষমতা সহ একটি ভিডিআই ডিস্ক ফাইল তৈরি করে। এবং আপনার ওএসের সাথে সংযুক্ত রয়েছে।

আপনি ভ্যাব্রেন্ট: ডি সহ অ্যাডাব্লুএস ইসি 2 উদাহরণগুলির মতো ক্লাউড ভ্যাগ্রান্ট বাক্সগুলি তৈরি করার সময় এই সমস্যার সমাধান হবে

অদলবদলের স্মৃতি বাড়ান

আমি যেমন ওরাকল ফিউশন মিডলওয়্যার পণ্যগুলি ইনস্টল করি, তাদের কিছু পরিমাণ অদলবদল মেমরির প্রয়োজন হয় তবে বেস বাক্সটি অল্প পরিমাণে অদলবদল নিয়ে আসে।

এটি সমাধানের জন্য, আপনার কার্যনির্বাহী ডিরেক্টরিতে "বৃদ্ধি_স্বেপ.শ" নামে পরিচিত এই স্ক্রিপ্টটি যুক্ত করুন:

#!/bin/sh

# size of swapfile in megabytes
swapsize=8000

# does the swap file already exist?
grep -q "swapfile" /etc/fstab

# if not then create it
if [ $? -ne 0 ]; then
  echo 'swapfile not found. Adding swapfile.'
  fallocate -l ${swapsize}M /swapfile
  chmod 600 /swapfile
  mkswap /swapfile
  swapon /swapfile
  echo '/swapfile none swap defaults 0 0' >> /etc/fstab
else
  echo 'swapfile found. No changes made.'
fi

# output results to terminal
df -h
cat /proc/swaps
cat /proc/meminfo | grep Swap

আপনি যদি এখনই আপনার বাক্সটি ধ্বংস এবং আপ করেন তবে আপনার সাথে একটি নতুন বাক্স থাকবে 8 জিপি স্ব্যাপ মেমরি যুক্ত এবং 100 গিগাবাইট অতিরিক্ত ডিস্ক স্পেস।


যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে।
তেজাস

পেয়েছি। হ্যাড বদলেছে,
45 এ ফরেক্স্ল্যাক্স

4

ভ্যাগ্র্যান্টফাইলে আমি কীভাবে এটি করেছি। লোকেরা অনুসন্ধান করছে ...

ubuntu.vm.provider "virtualbox" do |virtualbox|
  virtualbox.name = "Ubuntu_1510_#{Time.now.getutc.to_i}"
  virtualbox.customize [
      "storagectl", :id, 
      "--name", "SATAController", 
      "--controller", "IntelAHCI", 
      "--portcount", "1", 
      "--hostiocache", "on"
  ]
  virtualbox.customize [
      "clonehd", "#{ENV["HOME"]}/VirtualBox VMs/Vagrant Test Boxes/#{virtualbox.name}/box-disk1.vmdk", 
                 "#{ENV["HOME"]}/VirtualBox VMs/Vagrant Test Boxes/#{virtualbox.name}/ubuntu.vdi", 
      "--format", "VDI"
  ]
  virtualbox.customize [
      "modifyhd", "#{ENV["HOME"]}/VirtualBox VMs/Vagrant Test Boxes/#{virtualbox.name}/ubuntu.vdi",
      "--resize", 100 * 1024
  ]
  virtualbox.customize [
      "storageattach", :id, 
      "--storagectl", "SATAController", 
      "--port", "0", 
      "--device", "0", 
      "--type", "hdd",
      "--nonrotational", "on",
      "--medium", "#{ENV["HOME"]}/VirtualBox VMs/Vagrant Test Boxes/#{virtualbox.name}/ubuntu.vdi" 
  ]
end

আমি এটি করেছি তবে নতুন ডিস্কে নিরীক্ষণ করা মুক্ত স্থান রয়েছে, কীভাবে আমি সক্রিয় প্রাথমিক পার্টিশনে উপলব্ধ মেমরিটি নির্ধারণ করতে পারি?
eifersucht

এটি একটি কার্যনির্বাহী সমাধান। যদিও আপনি কোন চিত্রটি ব্যবহার করছেন তার উপর নির্ভর করে আপনাকে বেশ কয়েকটি প্যারাম সম্পাদনা করতে হবে।
16:38

2

@ আন্ডার্সের উত্তর ছিল যা আমার পক্ষে সবচেয়ে ভাল কাজ করেছে (বাক্সটি আরও স্মৃতি দিয়ে শুরু করে) তবে আমাকে কয়েকটি ছোট টুইট করতে হয়েছিল যা এটি এটিকে সহজতর করেছে।

ubuntu.vm.provider "virtualbox" do |virtualbox|
virtualbox.name = "Ubuntu_ProjectName"

virtualbox.customize [
  "clonehd", "#{ENV["HOME"]}/VirtualBox VMs/#{virtualbox.name}/box-disk1.vmdk",   # Note that this may not be the correct file name
             "#{ENV["HOME"]}/VirtualBox VMs/#{virtualbox.name}/ubuntu.vdi", 
  "--format", "VDI"
]
virtualbox.customize [
  "modifyhd", "#{ENV["HOME"]}/VirtualBox VMs/#{virtualbox.name}/ubuntu.vdi",
  "--resize", 100 * 1024
]
virtualbox.customize [
  "storageattach", :id, 
  "--storagectl", "SCSI",  # Instead of the first customize section i just referenced the existing SCSI controller as I am on a mac which uses SCSI by default 
  "--port", "0", 
  "--device", "0", 
  "--type", "hdd",
  "--nonrotational", "on",
  "--medium", "#{ENV["HOME"]}/VirtualBox VMs/#{virtualbox.name}/ubuntu.vdi" 
]
end

1

Centos7 এর জন্য আমি ইউজির উত্তরটি ব্যবহার করেছি তবে বেশ কয়েকটি পরিবর্তন নিয়েছি। প্রথমে আইডিই কন্ট্রোলার ব্যবহার করুন - স্টোরেজএকটিএল সম্পাদনা করুন:

    v.customize [
          'storageattach', :id,
          '--storagectl', 'IDE',
          '--port', 1, 
          '--device', 0,
          '--type', 'hdd', 
          '--medium',  ".vagrant/machines/target/virtualbox/disk1.vdi"
        ]

তারপরে বুটস্ট্র্যাপ.শনে ভলিউমের নামগুলি পৃথক এবং ফাইল সিস্টেমটি এক্সএফএস, তাই এটি হয়ে যায়

sudo pvcreate /dev/sdb
sudo vgextend VolGroup00 /dev/sdb
sudo lvextend /dev/VolGroup00/LogVol00 /dev/sdb
sudo xfs_growfs /
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.