Ubuntuホストサーバーで Vagrant を使用して VirtualBox で管理されているVMがあります。 VagrantボックスはPuppetlabs Debian 6.0.7 basebox を使用します。これは、ルートパーティションにLVMを使用します。
デフォルトでは、ディスクは8GBですが、これは私の目的には小さすぎます。私はしたいと思います:
誰でもこれを行う方法を説明できますか?
個人的には、/opt
などの追加の仮想HDDを取り付けて適切なマウントポイントにマウントし、rsync
を使用してアイテムを移動する方が簡単だと思います。人形の放浪箱はテスト用です。
理由理由:VBoxManage modifyhd
はネイティブVDIイメージでのみ機能します。ただし、Vagrantベースボックスは、基本的にVMDK
形式を使用してOVF/OVAにエクスポートされます。
VirtualBox Docs を参照してください
--resize x
オプション(xは必要な新しい合計スペース(メガバイト))を使用すると、既存のイメージの容量を変更できます。これにより、物理サイズに大きな影響を与えることなく、仮想ディスクの論理サイズが調整されます。[37]これは現在、VDIおよびVHD形式、および動的に割り当てられたバリアントに対してのみ機能し、容量を拡張する(縮小するのではなく)ためにのみ使用できます。
手順は
HDDのサイズを変更するには、まずVDIに変換する必要があります。 VBoxManage clonehd in.vmdk out.vdi --format VDI
し、それを再接続します(GUIを使用する方が簡単です)。
VBoxManage modifyhd box.vdi --resize 15360
を使用してサイズを変更すると、容量が15GBに増えます。
ただし、これはドライブの容量を変更するだけなので、後でゲストのファイルシステムを拡張する必要があります。たとえば、ext {3,4}にはresize2fs -p -F DEVICE
を使用します。
この問題を解決するこの最も簡単な方法を見つけました。
このプラグインをインストールします: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
このスクリプトは centos 6.4 ボックス用ですが、ubuntuに簡単に適用できます。
ディスクを追加する代わりに、他のオプションには次のものがあります。
プラグインを使用すると、ディスクサイズを指定できます https://github.com/sprotheroe/vagrant-disksize
免責事項:次のユースケースが適用されるrhelなどの論理ボリューム管理を使用するディストリビューションにのみ適用される可能性が最も高い回答:
私は公式のRed Hat Enterpise 7.2 vagrant boxを公式に使用してきました Red Hatがプロビジョニング 。
(無料で作成できるrhel開発者アカウントが必要です)
インストール時に、8GBしか使用できないという事実に悩まされました。
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
fileystemに対応するボリュームグループには余分なスペースがあることがわかりました(仮想ボックスの観点からは動的に割り当てられたと思われます)
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
... virtualboxレベルでの介入なし