web-dev-qa-db-ja.com

Vagrant VMでディスクサイズを増やすにはどうすればよいですか?

Ubuntuホストサーバーで Vagrant を使用して VirtualBox で管理されているVMがあります。 VagrantボックスはPuppetlabs Debian 6.0.7 basebox を使用します。これは、ルートパーティションにLVMを使用します。

デフォルトでは、ディスクは8GBですが、これは私の目的には小さすぎます。私はしたいと思います:

  1. VMを破壊および再作成せずに、既存のディスクとその上のファイルシステムのサイズを増やします。
  2. Vagrantを構成して、将来このプロジェクト用に大きなディスクを作成するようにします。

誰でもこれを行う方法を説明できますか?

57
David Edwards

個人的には、/optなどの追加の仮想HDDを取り付けて適切なマウントポイントにマウントし、rsyncを使用してアイテムを移動する方が簡単だと思います。人形の放浪箱はテスト用です。

理由理由VBoxManage modifyhdはネイティブVDIイメージでのみ機能します。ただし、Vagrantベースボックスは、基本的にVMDK形式を使用してOVF/OVAにエクスポートされます。

VirtualBox Docs を参照してください

--resize xオプション(xは必要な新しい合計スペース(メガバイト))を使用すると、既存のイメージの容量を変更できます。これにより、物理サイズに大きな影響を与えることなく、仮想ディスクの論理サイズが調整されます。[37]これは現在、VDIおよびVHD形式、および動的に割り当てられたバリアントに対してのみ機能し、容量を拡張する(縮小するのではなく)ためにのみ使用できます。

Vagrant Base Boxのディスク容量を増やすには

手順は

  1. HDDのサイズを変更するには、まずVDIに変換する必要があります。 VBoxManage clonehd in.vmdk out.vdi --format VDIし、それを再接続します(GUIを使用する方が簡単です)。

  2. VBoxManage modifyhd box.vdi --resize 15360を使用してサイズを変更すると、容量が15GBに増えます。

  3. ただし、これはドライブの容量を変更するだけなので、後でゲストのファイルシステムを拡張する必要があります。たとえば、ext {3,4}にはresize2fs -p -F DEVICEを使用します。

24
Terry Wang

この問題を解決するこの最も簡単な方法を見つけました。

  • このプラグインをインストールします: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
21
thucnguyen

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に簡単に適用できます。

ディスクを追加する代わりに、他のオプションには次のものがあります。

  • 40 GBのディスクがある opscode bento などの大きなディスクを持つボックスを使用する
  • packer を使用して独自のボックスを構築します。開始点としてopscodeボックスのパッカー定義を使用できます
14
Chris Snow

プラグインを使用すると、ディスクサイズを指定できます https://github.com/sprotheroe/vagrant-disksize

6
shashi ranjan

免責事項:次のユースケースが適用される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レベルでの介入なし

0
pkaramol