libvirt and rebooting of a bhyve VM

Craig Rodrigues rodrigc at FreeBSD.org
Tue Aug 19 19:04:06 UTC 2014


On Tue, Aug 19, 2014 at 9:25 AM, Allan Jude <allanjude at freebsd.org> wrote:
>
> Yes, this revision adds the ability to 'reboot'. This does not exit
> bhyve at all, so there is no exit level
>
> You can 'reboot' a bhyve externally using:
> bhyvectl --force-reset --vm=xxx
>
> or force a poweroff with: bhyvectl --force-reset --vm=xxx
>
> SIGTERM simulates an ACPI shutdown
>
>
> the bhyvectl --destroy is to clean up, the instance remains even after a
> clean shutdown. In the past, it had to be destroyed and recreated to
> start the VM again, although now with reboot support, that may not be
> required.

Thanks for that information.  It's very useful.
There doesn't seem to be a bhyvectl man page.  Do you have the
bandwidth to write one up and check it into the tree?
That would be very helpful.

I ran some experiments with bhyvectl --force-reset and
--force-poweroff.  They work as expected.
There doesn't seem to be a bhyvectl command which simulates ACPI shutdown.

If I have the name of the bhyve VM, is there a way that I can obtain
the pid of the bhyve process which started
the VM, so I can send it a SIGTERM, or do I need to keep track of that
myself when starting the bhyve process?


>
>
> the bhyvectl --destroy is to clean up, the instance remains even after a
> clean shutdown. In the past, it had to be destroyed and recreated to
> start the VM again, although now with reboot support, that may not be
> required.

You are right, calling bhyvectl --destroy does not seem to be required.
I ran some experiments:


DOESN'T WORK
==============
    bhyvectl --destroy ......
    bhyveload  .....
    while true; do
           byve ......
           if [ $? -ne 0 ]; then
                break
           fi
   done

if I do a shutdown -r inside the VM, then when the VM reboots, I get:

Assertion failed: (error == 0), function fbsdrun_addcpu, file
/usr/src/usr.sbin/bhyve/bhyverun.c, line 266.




WORKING
========
    bhyvectl --destroy ......
    while true; do
           bhyveload  .....
           byve ......
           if [ $? -ne 0 ]; then
                break
           fi
   done


This combination seems to work fine.  I can do "shutdown -r" inside
the VM, and it reboots fine.
I can also do "shutdown -p", and the VM shuts down.

So I think vmrun.sh can be changed to accomodate this new behavior,
and make it more clear
to people writing scripts on top of bhyve.
--
Craig


More information about the freebsd-virtualization mailing list