From 4b94574dd47e568609dfdada988daf982d48fcce Mon Sep 17 00:00:00 2001 From: Anton Lindqvist Date: Mon, 1 Oct 2018 13:51:43 +0200 Subject: vm/vmm: use derived disks for VMs As a result, the boot time is significantly improved since there's no longer any need to copy the complete disk. This feature was recently committed to OpenBSD-current. Any existing base image used must be recreated, this time using the qcow2 disk format. --- vm/vmm/vmm.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'vm/vmm') diff --git a/vm/vmm/vmm.go b/vm/vmm/vmm.go index ad5c31d87..11b0b399f 100644 --- a/vm/vmm/vmm.go +++ b/vm/vmm/vmm.go @@ -94,18 +94,13 @@ func (pool *Pool) Count() int { } func (pool *Pool) Create(workdir string, index int) (vmimpl.Instance, error) { - image := filepath.Join(workdir, "disk.img") - if err := osutil.CopyFile(pool.env.Image, image); err != nil { - return nil, err - } - var tee io.Writer if pool.env.Debug { tee = os.Stdout } inst := &instance{ cfg: pool.cfg, - image: image, + image: filepath.Join(workdir, "disk.qcow2"), debug: pool.env.Debug, os: pool.env.OS, sshkey: pool.env.SSHKey, @@ -122,6 +117,14 @@ func (pool *Pool) Create(workdir string, index int) (vmimpl.Instance, error) { inst.vmctl("stop", inst.vmName, "-f", "-w") time.Sleep(3 * time.Second) + createArgs := []string{ + "create", inst.image, + "-b", pool.env.Image, + } + if _, err := inst.vmctl(createArgs...); err != nil { + return nil, err + } + closeInst := inst defer func() { if closeInst != nil { -- cgit mrf-deployment