가상 머신 VirtualBox 생성 시 스토리지 크기 설정

가상 머신 VirtualBox 생성 시 스토리지 크기 설정

가상 머신을 생성할 때 스토리지 크기를 설정하는 방법이 있습니까? Vagrant를 사용할 예정이지만 VirtualBox에서 이 작업을 수행해야 하는지 또는 Vagrantfile에 설정을 포함할 수 있는지 확실하지 않습니다(문서를 확인했지만 지침이 없는 것 같습니다).

답변1

이것vagrant-disksize 끼워 넣다이것을 쉽게 만드십시오. 20GB 하드 드라이브로 debian-9 가상 머신을 만듭니다.

최저 한도에서:

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

답변2

해당 디스크의 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는 어디에 있습니까?디스크(아니요가상 기기)

또는 VBoxManage를 통해 이 작업을 수행할 수 있습니다.

$ VBoxManage list hdds
[get the UUID of the disk in question from the output]
$ VBoxManage modifyhd [UUID] --resize [size in MiB]

답변3

제 생각에는몇 가지 일반적인 문제 해결~의이것도움이 될 수도 있습니다.


이것이 가장 중요한 부분이다

디스크 공간 늘리기

일반적으로 (불행히도) 클라우드 베이스 박스에는 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 디스크 파일이 생성됩니다. 운영 체제에 연결됩니다.

이 문제는 클라우드 Vagrant 상자(예: Vagrant를 사용하는 AWS EC2 인스턴스)를 생성하면 해결됩니다.

스왑 메모리 늘리기

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의 추가 디스크 공간이 추가된 새 상자가 제공됩니다.

답변4

@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

관련 정보