У меня есть виртуальная машина, управляемая Vagrant с использованием VirtualBox на хост-сервере Ubuntu. My Vagrant box использует базовый ящик Puppetlabs Debian 6.0.7 , который использует LVM для своего корневого раздела.
По умолчанию диск имеет 8 ГБ, что слишком мало для моих целей. Я хотел бы:
Кто-нибудь может объяснить, как это сделать?
Вы можете использовать плагин, который позволит вам указать размер диска https://github.com/sprotheroe/vagrant-disksize
Лично я думаю, что будет проще подключить дополнительный виртуальный жесткий диск и смонтировать его в подходящей точке монтирования, например, /opt
и переместить ваши вещи, используя rsync
, чтобы обойти эту проблему, в конце концов, кукольный Бродячие коробки предназначены для тестирования.
Причина, по которой : VBoxManage modifyhd
работает только с собственным VDI-изображением. Тем не менее, бродячие базовые блоки в основном экспортируются OVF / OVA с использованием формата VMDK
.
Параметр
blockquote>--resize x
(где x - это желаемое новое общее пространство в мегабайтах) позволяет изменять емкость существующего изображения; это корректирует логический размер виртуального диска, не оказывая значительного влияния на физический размер. [37] В настоящее время это работает только для форматов VDI и VHD и только для динамически размещаемых вариантов, и может использоваться только для увеличения (а не сокращения) емкости.Чтобы увеличить емкость диска для Vagrant Base Box
Шаги
Чтобы изменить размер жесткого диска, вам необходимо сначала преобразовать его в VDI, например
VBoxManage clonehd in.vmdk out.vdi --format VDI
, а затем снова подключил его (использовать графический интерфейс проще).Измените размер, используя
VBoxManage modifyhd box.vdi --resize 15360
, который увеличивает емкость до 15 ГБ.Однако это только меняет емкость диска, вам придется впоследствии расширить файловую систему для гостя. Например, используйте
resize2fs -p -F DEVICE
для ext {3,4}.
Я нашел этот самый простой способ решения этой проблемы:
Установите этот плагин: 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
Я автоматизировал добавление диска в моем 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 полей, но мог легко быть адаптирован к человечности.
Вместо того, чтобы добавить диск, другие опции включают:
отказ от ответственности: ответ, скорее всего, применим только для дистрибутивов, использующих управление логическими томами, например, 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
... без вмешательства на уровне виртуального ящика
Установить плагин 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