VM을 만들 때 VM의 저장소 크기를 설정하는 방법이 있습니까? Vagrant를 사용하지만 VirtualBox에서 수행해야하거나 Vagrantfile에 포함 할 수있는 설정인지 확실하지 않습니다 (문서를 확인했지만 표시가없는 것 같습니다)
VM을 만들 때 VM의 저장소 크기를 설정하는 방법이 있습니까? Vagrant를 사용하지만 VirtualBox에서 수행해야하거나 Vagrantfile에 포함 할 수있는 설정인지 확실하지 않습니다 (문서를 확인했지만 표시가없는 것 같습니다)
답변:
vagrant-disksize
플러그인 이 쉽게한다. 20GB 하드 드라이브로 debian-9 vm을 만듭니다.
최소한 :
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
vagrant plugin install vagrant-disksize
감사합니다!
해당 디스크의 UUID를 모르면 가능하지 않습니다. 당신이했다면, 당신은에 다음이 있어야합니다 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"
메가 바이트의 HD 사이즈이며, "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]
.vmdk
하는 .VDI
형식 대신 가상 디스크 파일 로 생성되므로 일반적으로 작동하지 않습니다 .
나는 이것의 일반적인 문제 를 해결 하면 도움 이 될 것이라고 생각 합니다.
그리고 이것은 필수 부분입니다
디스크 공간 늘리기
일반적으로 (슬프게도) 클라우드 기본 상자에는 VMDK 디스크 형식이 제공됩니다. 운이 좋으며 디스크 형식이 VDI 인 경우 이와 같이 직접 해결할 수 있습니다. 그러나 VMDK를 확장 할 수 없으므로 VM에 다른 디스크를 추가해야합니다. 이 작업을 수동으로 수행하기 어려우면 Vagrant에서 이미징 작업을 수행 할 수 있습니까? 글쎄, 이제는 해결하기가 어렵지 않습니다.
작업 디렉토리에 "bootstrap.sh"라는 스크립트를 작성하고 다음 행을 추가하십시오.
pvcreate /dev/sdb
vgextend VolGroup /dev/sdb
lvextend /dev/VolGroup/lv_root /dev/sdb
resize2fs /dev/VolGroup/lv_root
VolGroup과 lv_root는 다른 배포판에서 변경 될 수 있습니다. 그러나 우분투에서도 작동합니다.
그런 다음이 코드를 Vagrantfile에 추가하십시오.
...
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
...
용량이 100GB 인 VDI 디스크 파일이 생성됩니다. 그리고 OS에 연결되어 있습니다.
이 문제는 Vagrant : D를 사용하는 AWS EC2 인스턴스와 같은 클라우드 Vagrant 박스를 생성 할 때 해결됩니다.
스왑 메모리 증가
Oracle Fusion Middleware 제품을 설치할 때 약간의 스왑 메모리가 필요하지만 기본 상자에는 소량의 스왑이 제공됩니다.
이 문제를 해결하려면 작업 디렉토리에 "increase_swap.sh"라는 스크립트를 추가하십시오.
#!/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
지금 박스를 파괴하고 업그레이드하면 8GB의 스왑 메모리가 추가되고 100GB의 추가 디스크 공간이있는 새로운 박스가 생깁니다.
Vagrantfile에서 어떻게했는지. 검색하는 사람들을 위해 ...
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
@Anders는 나에게 가장 적합한 대답을 얻었습니다 (더 많은 메모리로 상자를 초기화 함). 실제로 더 간단하게 몇 가지 작은 조정을해야했습니다.
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
Centos7의 경우 Yujie의 답변을 사용했지만 몇 가지 변경 사항이 있습니다. 먼저 --storagectl을 편집하여 IDE 컨트롤러를 사용하십시오.
v.customize [
'storageattach', :id,
'--storagectl', 'IDE',
'--port', 1,
'--device', 0,
'--type', 'hdd',
'--medium', ".vagrant/machines/target/virtualbox/disk1.vdi"
]
그런 다음 bootstrap.sh에서 볼륨 이름이 다르고 파일 시스템이 XFS이므로
sudo pvcreate /dev/sdb
sudo vgextend VolGroup00 /dev/sdb
sudo lvextend /dev/VolGroup00/LogVol00 /dev/sdb
sudo xfs_growfs /