仮想マシン 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は他のディストリビューションで変更される可能性があります。しかし、Ubuntuでも動作します。

次に、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

今すぐボックスを破棄して復元すると、8 GBのスワップメモリ​​と100 GBの追加ディスク容量を持つ新しいボックスが提供されます。

答え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

関連情報