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

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

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

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

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

62
задан 7 July 2013 в 12:20

6 ответов

Вы можете использовать плагин, который позволит вам указать размер диска https://github.com/sprotheroe/vagrant-disksize

0
ответ дан 7 July 2013 в 12:20

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

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

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

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

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

Шаги

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

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

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

0
ответ дан 7 July 2013 в 12:20

Я нашел этот самый простой способ решения этой проблемы:

  • Установите этот плагин: 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
0
ответ дан 7 July 2013 в 12:20

Я автоматизировал добавление диска в моем 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 полей, но мог легко быть адаптирован к человечности.

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

  • использование поля с большим диском, таким как бенто opscode, которые имеют диски на 40 ГБ
  • создайте свое собственное поле с помощью упаковщика. Можно использовать opscode определения упаковщика полей в качестве начальной точки
14
ответ дан 7 July 2013 в 12:20

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

Я использовал официальный Red Hat Enterpise 7.2, бродячая коробка официально , предоставленная Red Hat .

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

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

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

И как Вы можете видеть, что большая часть пространства уже была занята установкой 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

... без вмешательства на уровне виртуального ящика

0
ответ дан 7 July 2013 в 12:20

Установить плагин Vagrant vagrant-disksize

vagrant plugin install vagrant-disksize

Если вы хотите добавить, убедитесь, что у пользователя установлен плагин при запуске vagrant, вы можете добавить его в начало Vagrantfile

# Install vagrant-disksize to allow resizing the vagrant box disk.
unless Vagrant.has_plugin?("vagrant-disksize")
    raise  Vagrant::Errors::VagrantError.new, "vagrant-disksize plugin is missing. Please install it using 'vagrant plugin install vagrant-disksize' and rerun 'vagrant up'"
end

Set желаемый размер диска в Vagrantfile

vagrant.configure('2') do |config|
    config.disksize.size = '50GB'
end

Обновление существующего окна vagrant

  1. Выполните все вышеперечисленное
  2. Запустите vagrant halt & vagrant up (Вы должны увидеть что-то вроде "Размер диска изменен: старый 32768 МБ, требуется 51200 МБ, новый 51200 МБ ")
  3. SSH в бродячий ящик
  4. Запустите sudo cfdisk / dev / sda
  5. Используйте стрелки, чтобы выбрать диск, вероятно, sdaX. У меня была sda3.
  6. Затем выберите изменение размера с помощью клавиш со стрелками. Примите предложенный размер диска.
  7. Затем выберите запись. И ответь да.
  8. Вы можете выбрать "Выйти сейчас".
  9. Запустите sudo resize2fs -p -F / dev / sdaX Вы должны увидеть что-то вроде: «Файловая система в / dev / sda3 смонтирована на /; требуется изменение размера в режиме онлайн. old_desc_blocks = 4, new_desc_blocks = 6 Файловая система на / dev / sda3 теперь имеет длину 11933952 (4k) блока. "
  10. Запустите df и убедитесь, что размер вашего диска увеличился.
8
ответ дан 12 February 2020 в 09:43

Другие вопросы по тегам:

Похожие вопросы: