मैं एक Vagrant VM पर डिस्क का आकार कैसे बढ़ा सकता हूं?


62

मैं एक वी एम द्वारा प्रबंधित Vagrant का उपयोग कर VirtualBox के एक उबंटू होस्ट सर्वर पर। मेरा वैग्रांट बॉक्स पुप्लेटलैब्स डेबियन 6.0.7 बेसबॉक्स का उपयोग करता है, जो अपने रूट विभाजन के लिए LVM का उपयोग करता है।

डिफ़ॉल्ट रूप से डिस्क 8GB है जो मेरे उद्देश्यों के लिए बहुत छोटी है। मैं:

  1. मेरे वीएम को नष्ट और पुनः बनाए बिना मौजूदा डिस्क का आकार और उस पर फ़ाइल सिस्टम बढ़ाएं ।
  2. वैग्रांत को कॉन्फ़िगर करें ताकि भविष्य में यह इस परियोजना के लिए एक बड़ी डिस्क बनाए।

क्या कोई समझा सकता है कि यह कैसे करना है?

जवाबों:


25

व्यक्तिगत रूप से मुझे लगता है कि एक अतिरिक्त वर्चुअल एचडीडी को संलग्न करना और इसे उचित माउंट बिंदु पर माउंट करना आसान होगा, उदाहरण के लिए /optऔर rsyncइस मुद्दे के आसपास काम करने के लिए अपने सामान को स्थानांतरित करने के लिए, आखिरकार, कठपुतली आवारा बक्से परीक्षण प्रयोजनों के लिए हैं।

कारण क्यों : VBoxManage modifyhdकेवल देशी VDI छवि के साथ काम करता है हालांकि, योनि बेस बॉक्स मूल रूप से VMDKप्रारूप का उपयोग करके OVF / OVA निर्यात किए जाते हैं ।

वर्चुअलबॉक्स डॉक्स देखें

--resize xविकल्प (जहां x मेगाबाइट में नया कुल स्थान वांछित है) यदि आप किसी मौजूदा छवि की क्षमता को बदलने के लिए अनुमति देता है; यह भौतिक आकार को प्रभावित किए बिना एक आभासी डिस्क के तार्किक आकार को समायोजित करता है। [३ size] यह वर्तमान में केवल VDI और VHD प्रारूपों के लिए काम करता है, और केवल गतिशील रूप से आवंटित वेरिएंट के लिए, और इसका उपयोग केवल क्षमता का विस्तार (सिकुड़ने) के लिए किया जा सकता है।

वैग्रेंट बेस बॉक्स के लिए डिस्क की क्षमता बढ़ाने के लिए

कदम हैं

  1. HDD का आकार बदलने में सक्षम होने के लिए, आपको इसे पहले VDI में बदलना होगा, उदाहरण के लिए VBoxManage clonehd in.vmdk out.vdi --format VDIऔर फिर इसे पुनः संलग्न करना होगा (GUI का उपयोग करना आसान है)।

  2. इसका उपयोग करके इसका आकार बदलें VBoxManage modifyhd box.vdi --resize 15360जिससे क्षमता 15GB तक बढ़ जाती है।

  3. हालाँकि यह केवल ड्राइव की क्षमता को बदलता है, आपको बाद में अतिथि के लिए फ़ाइल सिस्टम का विस्तार करना होगा। उदाहरण के लिए, resize2fs -p -F DEVICEext {3,4} का उपयोग करें ।


3
ध्यान दें कि पुन: आकार देने के बाद और योनि बॉक्स शुरू करने से पहले, आपको वर्चुअलबॉक्स स्टोरेज कॉन्फ़िगरेशन को भी अपडेट करना होगा ताकि यह नया VDI और मूल VMDK का उपयोग न करे: VirtualBox में> संग्रहण> मौजूदा हार्ड डिस्क को निकालें> हार्ड डिस्क जोड़ें (चुनें) और नई VDI छवि की ओर
इशारा करते हैं

डेबियन उपयोगकर्ताओं के लिए, मैं इस पोस्ट को भी देखने का सुझाव देता हूं: blog.lenss.nl/2012/09/resize-a-vagrant-vmdk-drive । जब मुझे स्टेप 3 मिला तो यह चलाना जितना आसान नहीं था resize2fs। सौभाग्य!
phirschybar

1
मैंने इस पर एक समेकित मार्गदर्शिका लिखी है: medium.com/@phirschybar/…
phirschybar

31

मुझे इस समस्या को हल करने का सबसे सरल तरीका मिला:

  • इस प्लगइन को स्थापित करें: vagrant plugin install vagrant-disksize

  • संपादित करें Vagrantfile:

    Vagrant.configure('2') do |config|
      ...
      config.vm.box = 'ubuntu/xenial64'
      config.disksize.size = '50GB'
      ...
    end
    
  • vagrant halt && vagrant up

    • नोट: यह साथ काम नहीं करेगा vagrant reload

2
एक जादू की तरह काम किया। लगता है सबसे आसान समाधान मैं भर में आया हूँ। धन्यवाद महोदय।
रीको

1
एक डेबियन 9 बॉक्स के लिए यह कच्चे डिस्क आकार को बढ़ाता है, लेकिन डेबियन इंस्टॉलेशन द्वारा उपयोग किए गए वास्तविक विभाजन को नहीं। बढ़ी हुई डिस्क का आकार सीधे उपयोग करने योग्य नहीं है।
टोनिन

@Tonin क्या आपने कोई समाधान खोजने का प्रबंधन किया है?
मेल्कोर

1
मैंने सभी नए उपलब्ध स्थान पर sudo cfdisk /dev/sdaअपने /dev/sda1विभाजन को आकार देने के लिए उपकरण का उपयोग किया । तब मैंने अपने फाइलसिस्टम से कहा कि वह उस जगह का उपयोग करेंsudo resize2fs -p -F /dev/sda1
tutuDajuju

14

मैंने अपने Vagrantfile में डिस्क जोड़ने को स्वचालित किया है:

Vagrant.configure("2") do |config|
    ...
    file_to_disk = File.realpath( "." ).to_s + "/disk.vdi"

    if ARGV[0] == "up" && ! File.exist?(file_to_disk) 
       puts "Creating 5GB disk #{file_to_disk}."
       vb.customize [
            'createhd', 
            '--filename', file_to_disk, 
            '--format', 'VDI', 
            '--size', 5000 * 1024 # 5 GB
            ] 
       vb.customize [
            'storageattach', :id, 
            '--storagectl', 'SATA Controller', 
            '--port', 1, '--device', 0, 
            '--type', 'hdd', '--medium', 
            file_to_disk
            ]
   ...
   config.vm.provision "shell", path: "scripts/add_new_disk.sh"
   ...
end

जहाँ add_new_disk.shशेल स्क्रिप्ट इस तरह दिखती है:

set -e
set -x

if [ -f /etc/disk_added_date ]
then
   echo "disk already added so exiting."
   exit 0
fi


sudo fdisk -u /dev/sdb <<EOF
n
p
1


t
8e
w
EOF

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

date > /etc/disk_added_date

यह स्क्रिप्ट सेंटोस 6.4 बॉक्स के लिए है, लेकिन आसानी से उबंटू के लिए अनुकूलित किया जा सकता है।

डिस्क जोड़ने के बजाय, अन्य विकल्पों में शामिल हैं:

  • एक बड़ी डिस्क के साथ एक बॉक्स का उपयोग करना जैसे कि ऑप्सोड बेंटो जिसमें 40 जीबी डिस्क हैं
  • पैकर का उपयोग कर अपने खुद के बॉक्स का निर्माण । आप एक प्रारंभिक बिंदु के रूप में opscode बॉक्स पैकर परिभाषाओं का उपयोग कर सकते हैं

नमस्ते वहाँ, मैं आपके समाधान की कोशिश करना चाहूंगा। क्या आप पुष्टि कर सकते हैं कि वैग्रांत फ़ाइल में यह कोड ऑफ़ कोड कहाँ जोड़ा गया था? सादर
रुडी स्ट्राइडम

@RudiStrydom मैंने उत्तर को अपडेट किया है - आशा है कि यह अब और अधिक समझ में आता है।
क्रिस स्नो

2
यह config.vm.provider :virtualbox do |vb|चीजों को और अधिक स्पष्ट करने के लिए ब्लॉक में जोड़ना चाहिए
बीटी

1
यदि आपको "निर्दिष्ट या तो आकार या विस्तार" त्रुटि lvextendlvextend -l +100%FREE /dev/VolGroup/lv_root
मिलती है

1
आपका उदाहरण एक 5TB डिस्क बनाएगा (--ize यूनिट MB है, virtualbox.org/manual/ch08.html#vboxmanage-createvdi देखें )।
बैकफ्लिप

7

आप प्लगइन का उपयोग कर सकते हैं, जो आपको डिस्क आकार निर्दिष्ट करने में सक्षम करेगा https://github.com/sprotheroe/vagrant-inisisize


इसने मेरी डिस्क का आकार बदल दिया और कॉन्फ़िगरेशन की केवल एक पंक्ति में विभाजन का विस्तार किया। बहुत चालाक!
user1026263

0

डिस्क्लेमर: तार्किक रूप से वॉल्यूम प्रबंधन का उपयोग करने वाले डिस्ट्रोस के लिए सबसे अधिक संभावना है कि आरएचएल का उपयोग करें, जिसके लिए निम्नलिखित उपयोग का मामला लागू होता है:

मैं आधिकारिक तौर पर Red Hat Enterpise 7.2 योनि बॉक्स का उपयोग कर रहा हूं जो आधिकारिक रूप से लाल टोपी द्वारा प्रावधानित है

(आपको एक rhel डेवलपर खाते की आवश्यकता होगी जिसे आप मुफ्त में बना सकते हैं)

स्थापना के बाद मैं इस तथ्य से परेशान था कि केवल 8GB भी उपलब्ध थे:

sudo df -h
[vagrant@rhel-cdk ~]$ sudo df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-root   8G  2,5G   6,5G  28% /
devtmpfs                     234M     0  234M   0% /dev
tmpfs                        245M     0  245M   0% /dev/shm
tmpfs                        245M  4,3M  241M   2% /run
tmpfs                        245M     0  245M   0% /sys/fs/cgroup
/dev/sda2                    297M  134M  164M  45% /boot
tmpfs                         49M     0   49M   0% /run/user/1000

और जैसा कि आप देख सकते हैं कि अधिकांश जगह पहले से ही आरएचएल इंस्टॉलेशन द्वारा खपत की गई थी।

हालांकि मुझे पता चला कि /dev/mapper/VolGroup00-rootफ़ाइल सिस्टम के अनुरूप वॉल्यूम समूह में अतिरिक्त स्थान था (जो मुझे लगता है कि आभासी बॉक्स के संदर्भ में गतिशील रूप से आवंटित किया गया था)

sudo vgdisplay VolGroup00
  --- Volume group ---
  VG Name               VolGroup00
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  11
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               39,70 GiB
  PE Size               4,00 MiB
  Total PE              10164
  Alloc PE / Size       7872 / 30,75 GiB
  Free  PE / Size       2292 / 8,95 GiB
  VG UUID               JBVwpl-13KX-HbQw-FqUa-CA9w-swpF-dF6glm

तो केवल कुछ चीजें शेष हैं:

a ) 10G कहकर हमारी तार्किक मात्रा का आकार बढ़ाएं

sudo lvextend -L+10G /dev/VolGroup00/root

तथा

b ) अपने रूट फाइल सिस्टम को अपडेट करें ताकि वह इस बदलाव से अवगत हो सके

sudo xfs_growfs /dev/mapper/VolGroup00-root

(pls ध्यान दें कि कम से कम आरएचएल 7.2 resize2fsइस उद्देश्य के लिए काम नहीं करेगा)।

उसके बाद, मेरे फाइल सिस्टम के लिए अतिरिक्त स्थान उपलब्ध था:

sudo df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-root   18G  2,5G   16G  14% /
devtmpfs                     234M     0  234M   0% /dev
tmpfs                        245M     0  245M   0% /dev/shm
tmpfs                        245M  4,3M  241M   2% /run
tmpfs                        245M     0  245M   0% /sys/fs/cgroup
/dev/sda2                    297M  134M  164M  45% /boot
tmpfs                         49M     0   49M   0% /run/user/1000

... वर्चुअलबॉक्स स्तर पर कोई हस्तक्षेप नहीं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.