Как увеличить размер диска на Vagrant VM?

43

У меня есть виртуальная машина, управляемая Vagrant , используя VirtualBox на хост-сервере Ubuntu. В моем ящике Vagrant используется Puppetlabs Debian 6.0.7 basebox , в котором используется LVM для его корневой раздел.

По умолчанию диск составляет 8 ГБ, что слишком мало для моих целей. Я бы хотел:

  1. Увеличьте размер существующего диска и файловой системы на нем без уничтожения и повторного создания моей виртуальной машины.
  2. Настройте Vagrant, чтобы в будущем он создавал более крупный диск для этого проекта.

Может кто-нибудь объяснить, как это сделать?

    
задан David Edwards 07.07.2013 в 09:57
источник

4 ответа

22

Лично я думаю, что будет проще подключить дополнительный виртуальный жесткий диск и подключить его к правильной точке монтирования, например /opt , и переместить ваш материал с помощью rsync , чтобы обойти эту проблему, в конце концов, марионетку бродячие коробки предназначены для тестирования.

Причина, по которой : VBoxManage modifyhd работает только с собственным VDI-изображением. Однако бродячие базовые поля в основном экспортируются OVF / OVA, используя формат VMDK .

См. Документы VirtualBox

  

Параметр --resize x (где x - желаемое новое общее пространство в мегабайтах) позволяет вам изменить емкость существующего изображения; это регулирует логический размер виртуального диска, не сильно влияя на физический размер. [37] В настоящее время он работает только для форматов VDI и VHD и только для динамически выделенных вариантов и может использоваться только для расширения (не уменьшая) емкости.

Чтобы увеличить емкость диска для базового блока Vagrant

Шаги

  1. Чтобы иметь возможность изменять размер жесткого диска, вам придется сначала преобразовать его в VDI, например. VBoxManage clonehd in.vmdk out.vdi --format VDI , а затем снова подключить его (с помощью GUI проще).

  2. Измените его с помощью VBoxManage modifyhd box.vdi --resize 15360 , что увеличивает емкость до 15 ГБ.

  3. Однако это только изменяет емкость диска, после этого вам придется расширять файловую систему для гостя. Например, используйте resize2fs -p -F DEVICE для ext {3,4}.

ответ дан Terry Wang 11.07.2013 в 02:02
источник
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

Этот скрипт предназначен для centos 6.4 , но может быть легко адаптирован к ubuntu.

Вместо добавления диска другие опции включают в себя:

  • , используя поле с большим диском, например opscode bento , которые имеют диски 40Gb
  • создайте свой собственный ящик, используя упаковщик . Вы можете использовать определения упаковщика пакетов opscode как отправную точку
ответ дан Chris Snow 12.01.2014 в 20:56
3

Вы можете использовать плагин, который позволит вам указать размер диска Ссылка

    
ответ дан shashi ranjan 17.10.2017 в 06:47
0

отказ от ответственности: ответ скорее всего применим только для дистрибутивов с использованием управления логическими томами, таких как rhel, для которых применяется следующий прецедент:

Я использую официальный брандмауэр Red Hat Enterpise 7.2 официально , созданный красной шляпой .

(вам понадобится учетная запись разработчика rhel, которую вы можете создать бесплатно)

После установки меня беспокоил тот факт, что доступны только 8 ГБ:

sudo df -h
[[email protected] ~]$ 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

И как вы можете видеть, большая часть пространства уже была использована установкой rhel.

Однако я обнаружил, что группа томов, соответствующая файловой системе /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

(обратите внимание, что по крайней мере для rhel 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

... нет вмешательства на уровне виртуальных серверов

    
ответ дан pkaramol 09.01.2017 в 16:01