Date: Wed, 15 Oct 2014 08:38:37 -0600 From: John Nielsen <lists@jnielsen.net> To: freebsd-virtualization@freebsd.org Subject: Re: can a bhyve instance be resized? adding another virtual disk? Message-ID: <B38B9703-8BC4-4260-945D-8783D2F8765B@jnielsen.net> In-Reply-To: <20141015115638.GA72800@potato.growveg.org> References: <20141015115638.GA72800@potato.growveg.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Oct 15, 2014, at 5:56 AM, freebsd-lists@potato.growveg.org wrote: > Can a bhyve instance be resized? I'm talking about the disk.=20 > Say your end user needs more diskspace. They have 32GB. They need = 64GB. > How do you do it? I presume one has to stop the guest, then use = truncate. > What about if the guest OS isn't freebsd, and they use say ext2 or 3? = Will > ext3 start yelling at me because I've resized it? This isn't specific to FreeBSD or bhyve. Virtio block devices actually = can support online resizing, but I don't know if bhyve allows that yet = (I'm assuming it doesn't). In which case, yes, stop the guest and resize = whatever its volume lives on (if a raw file then truncate would work), = then start it up again. That's the easy part. The harder part (but much easier than it used to be) is resizing = everything else. If using partitions they need to be extended first (and = if using GPT the backup partition table needs to be moved first of all, = a la "gpart recover".) On FreeBSD this is pretty straightforward with = gpart: sysctl kern.geom.debugflags=3D16 gpart resize -i $number_of_last_partition $underlying_block_device You should probably reboot at this point so the kernel forgets about the = old partition table. Then you get to resize the filesystem. If you are using ZFS or if you = have FreeBSD 9.2 or newer and UFS then you can do it while it is = mounted. Otherwise you may need to boot from another source to do the = resize. For UFS use growfs a la "growfs = /dev/$block_special_for_partition". For ZFS use "zpool online -e $zpool = $zdev" For ext[234] on Linux, use "resize2fs /dev/$block_special". (If using = LVM then you need to first resize the LV with lvextend). For XFS use = "xfs_growfs $mountpoint". You can also resize btrfs but I don't know the = command off the top of my head. That should be it. > What if they just want another disk? How does one refer to a=20 > newly created virtual disk from a guest? How is it mounted to the = guest? Just add a "-d /path/to/new/device" to your vmrun.sh or the = corresponding -s to bhyve when you start the VM. It will show up as a = new block device in the guest (e.g. /dev/vtbd1), you can partition = and/or put filesystems on it as you choose and mount them normally = and/or add them to /etc/fstab, etc. JN
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B38B9703-8BC4-4260-945D-8783D2F8765B>