VMの作成時にストレージサイズを設定する方法はありますか?私はVagrantを使用しますが、これがVirtualBoxで実行する必要があるものか、またはVagrantfileに含めます(ドキュメントを確認しましたが、何も表示されていないようです)
vagrant-disksize
plugin はこれを簡単にします。 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
問題のディスクの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"
はdiskのUUIDです(not VM)
または、VBoxManageを使用してこれを行うこともできます。
$ VBoxManage list hdds
[get the UUID of the disk in question from the output]
$ VBoxManage modifyhd [UUID] --resize [size in MiB]
this の一般的な問題を解決すると役立つ場合があると思います。
そして、これは重要な部分です
ディスク容量を増やします
通常(悲しいことに)、クラウドベースボックスには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ディスクファイルが作成されます。お使いの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
今すぐボックスを破棄して起動すると、8 GBのスワップメモリと100 GBの追加ディスク領域が追加された新しいボックスができます。
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の回答を使用しましたが、いくつか変更がありました。最初にIDEコントローラを使用し、-storagectlを編集します:
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 /